From b30644ff9a6780ab01f724663462fce5a2f9d958 Mon Sep 17 00:00:00 2001 From: xensik Date: Tue, 15 Feb 2022 19:40:05 +0100 Subject: [PATCH] minor fixes --- gen/h1/parser.ypp | 37 +- gen/h2/parser.ypp | 37 +- gen/iw5/parser.ypp | 37 +- gen/iw6/parser.ypp | 37 +- gen/iw7/parser.ypp | 37 +- gen/iw8/parser.ypp | 37 +- gen/s1/parser.ypp | 37 +- gen/s2/parser.ypp | 37 +- gen/s4/parser.ypp | 37 +- src/h1/xsk/assembler.cpp | 2 +- src/h1/xsk/compiler.cpp | 60 +- src/h1/xsk/compiler.hpp | 3 +- src/h1/xsk/decompiler.cpp | 28 +- src/h1/xsk/lexer.cpp | 10 +- src/h1/xsk/parser.cpp | 2910 +++++++++++++------------- src/h1/xsk/parser.hpp | 248 ++- src/h1/xsk/resolver.cpp | 30 +- src/h2/xsk/assembler.cpp | 2 +- src/h2/xsk/compiler.cpp | 48 +- src/h2/xsk/compiler.hpp | 3 +- src/h2/xsk/decompiler.cpp | 28 +- src/h2/xsk/lexer.cpp | 10 +- src/h2/xsk/parser.cpp | 2910 +++++++++++++------------- src/h2/xsk/parser.hpp | 248 ++- src/h2/xsk/resolver.cpp | 30 +- src/iw5/xsk/assembler.cpp | 2 +- src/iw5/xsk/compiler.cpp | 48 +- src/iw5/xsk/compiler.hpp | 3 +- src/iw5/xsk/decompiler.cpp | 28 +- src/iw5/xsk/lexer.cpp | 10 +- src/iw5/xsk/parser.cpp | 2797 +++++++++++++------------ src/iw5/xsk/parser.hpp | 244 ++- src/iw5/xsk/resolver.cpp | 34 +- src/iw6/xsk/assembler.cpp | 2 +- src/iw6/xsk/compiler.cpp | 48 +- src/iw6/xsk/compiler.hpp | 3 +- src/iw6/xsk/decompiler.cpp | 28 +- src/iw6/xsk/lexer.cpp | 10 +- src/iw6/xsk/parser.cpp | 2797 +++++++++++++------------ src/iw6/xsk/parser.hpp | 244 ++- src/iw6/xsk/resolver.cpp | 30 +- src/iw7/xsk/assembler.cpp | 2 +- src/iw7/xsk/compiler.cpp | 48 +- src/iw7/xsk/compiler.hpp | 3 +- src/iw7/xsk/decompiler.cpp | 28 +- src/iw7/xsk/lexer.cpp | 10 +- src/iw7/xsk/parser.cpp | 2797 +++++++++++++------------ src/iw7/xsk/parser.hpp | 244 ++- src/iw7/xsk/resolver.cpp | 30 +- src/iw8/xsk/assembler.cpp | 2 +- src/iw8/xsk/compiler.cpp | 50 +- src/iw8/xsk/compiler.hpp | 3 +- src/iw8/xsk/decompiler.cpp | 28 +- src/iw8/xsk/lexer.cpp | 10 +- src/iw8/xsk/parser.cpp | 3005 ++++++++++++++------------- src/iw8/xsk/parser.hpp | 252 ++- src/iw8/xsk/resolver.cpp | 30 +- src/s1/xsk/assembler.cpp | 2 +- src/s1/xsk/compiler.cpp | 48 +- src/s1/xsk/compiler.hpp | 3 +- src/s1/xsk/decompiler.cpp | 28 +- src/s1/xsk/lexer.cpp | 10 +- src/s1/xsk/parser.cpp | 2910 +++++++++++++------------- src/s1/xsk/parser.hpp | 248 ++- src/s1/xsk/resolver.cpp | 30 +- src/s2/xsk/assembler.cpp | 2 +- src/s2/xsk/compiler.cpp | 48 +- src/s2/xsk/compiler.hpp | 3 +- src/s2/xsk/decompiler.cpp | 28 +- src/s2/xsk/lexer.cpp | 10 +- src/s2/xsk/resolver.cpp | 30 +- src/s4/xsk/assembler.cpp | 2 +- src/s4/xsk/compiler.cpp | 50 +- src/s4/xsk/compiler.hpp | 3 +- src/s4/xsk/decompiler.cpp | 28 +- src/s4/xsk/lexer.cpp | 12 +- src/s4/xsk/parser.cpp | 3005 ++++++++++++++------------- src/s4/xsk/parser.hpp | 252 ++- src/s4/xsk/resolver.cpp | 30 +- src/utils/xsk/gsc/block.cpp | 2 +- src/utils/xsk/gsc/nodetree.cpp | 125 +- src/utils/xsk/gsc/nodetree.hpp | 31 +- src/utils/xsk/utils/byte_buffer.cpp | 23 +- src/utils/xsk/utils/byte_buffer.hpp | 2 + 84 files changed, 13774 insertions(+), 12964 deletions(-) diff --git a/gen/h1/parser.ypp b/gen/h1/parser.ypp index a7aa26ec..8a95c35b 100644 --- a/gen/h1/parser.ypp +++ b/gen/h1/parser.ypp @@ -151,9 +151,11 @@ xsk::gsc::h1::parser::symbol_type H1lex(xsk::gsc::h1::lexer& lexer); %type decl_constant %type decl_thread %type stmt -%type stmt_dev -%type stmt_block +%type stmt_or_dev %type stmt_list +%type stmt_or_dev_list +%type stmt_dev +%type stmt_block %type stmt_expr %type stmt_call %type stmt_assign @@ -305,8 +307,7 @@ decl_thread ; stmt - : stmt_dev { $$.as_list = std::move($1); } - | stmt_block { $$.as_list = std::move($1); } + : stmt_block { $$.as_list = std::move($1); } | stmt_call { $$.as_call = std::move($1); } | stmt_assign { $$.as_assign = std::move($1); } | stmt_endon { $$.as_endon = std::move($1); } @@ -333,14 +334,9 @@ stmt | stmt_prof_end { $$.as_prof_end = std::move($1); } ; -stmt_dev - : DEVBEGIN stmt_list DEVEND { $$ = std::move($2); } - | DEVBEGIN DEVEND { $$ = std::make_unique(@$); } - ; - -stmt_block - : LBRACE stmt_list RBRACE { $$ = std::move($2); } - | LBRACE RBRACE { $$ = std::make_unique(@$); } +stmt_or_dev + : stmt { $$ = std::move($1); } + | stmt_dev { $$.as_dev = std::move($1); } ; stmt_list @@ -350,6 +346,23 @@ stmt_list { $$ = std::make_unique(@$); $$->list.push_back(std::move($1)); } ; +stmt_or_dev_list + : stmt_or_dev_list stmt_or_dev + { $$ = std::move($1); $$->list.push_back(std::move($2)); } + | stmt_or_dev + { $$ = std::make_unique(@$); $$->list.push_back(std::move($1)); } + ; + +stmt_dev + : DEVBEGIN stmt_list DEVEND { $$ = std::make_unique(@$, std::move($2)); } + | DEVBEGIN DEVEND { $$ = std::make_unique(@$, std::make_unique(@$)); } + ; + +stmt_block + : LBRACE stmt_or_dev_list RBRACE { $$ = std::move($2); } + | LBRACE RBRACE { $$ = std::make_unique(@$); } + ; + stmt_expr : expr_assign { $$ = std::make_unique(@$, std::move($1)); } diff --git a/gen/h2/parser.ypp b/gen/h2/parser.ypp index 000cbabf..48d32112 100644 --- a/gen/h2/parser.ypp +++ b/gen/h2/parser.ypp @@ -149,9 +149,11 @@ xsk::gsc::h2::parser::symbol_type H2lex(xsk::gsc::h2::lexer& lexer); %type decl_constant %type decl_thread %type stmt -%type stmt_dev -%type stmt_block +%type stmt_or_dev %type stmt_list +%type stmt_or_dev_list +%type stmt_dev +%type stmt_block %type stmt_expr %type stmt_call %type stmt_assign @@ -303,8 +305,7 @@ decl_thread ; stmt - : stmt_dev { $$.as_list = std::move($1); } - | stmt_block { $$.as_list = std::move($1); } + : stmt_block { $$.as_list = std::move($1); } | stmt_call { $$.as_call = std::move($1); } | stmt_assign { $$.as_assign = std::move($1); } | stmt_endon { $$.as_endon = std::move($1); } @@ -331,14 +332,9 @@ stmt | stmt_prof_end { $$.as_prof_end = std::move($1); } ; -stmt_dev - : DEVBEGIN stmt_list DEVEND { $$ = std::move($2); } - | DEVBEGIN DEVEND { $$ = std::make_unique(@$); } - ; - -stmt_block - : LBRACE stmt_list RBRACE { $$ = std::move($2); } - | LBRACE RBRACE { $$ = std::make_unique(@$); } +stmt_or_dev + : stmt { $$ = std::move($1); } + | stmt_dev { $$.as_dev = std::move($1); } ; stmt_list @@ -348,6 +344,23 @@ stmt_list { $$ = std::make_unique(@$); $$->list.push_back(std::move($1)); } ; +stmt_or_dev_list + : stmt_or_dev_list stmt_or_dev + { $$ = std::move($1); $$->list.push_back(std::move($2)); } + | stmt_or_dev + { $$ = std::make_unique(@$); $$->list.push_back(std::move($1)); } + ; + +stmt_dev + : DEVBEGIN stmt_list DEVEND { $$ = std::make_unique(@$, std::move($2)); } + | DEVBEGIN DEVEND { $$ = std::make_unique(@$, std::make_unique(@$)); } + ; + +stmt_block + : LBRACE stmt_or_dev_list RBRACE { $$ = std::move($2); } + | LBRACE RBRACE { $$ = std::make_unique(@$); } + ; + stmt_expr : expr_assign { $$ = std::make_unique(@$, std::move($1)); } diff --git a/gen/iw5/parser.ypp b/gen/iw5/parser.ypp index 974baf69..ab17058a 100644 --- a/gen/iw5/parser.ypp +++ b/gen/iw5/parser.ypp @@ -148,9 +148,11 @@ xsk::gsc::iw5::parser::symbol_type IW5lex(xsk::gsc::iw5::lexer& lexer); %type decl_constant %type decl_thread %type stmt -%type stmt_dev -%type stmt_block +%type stmt_or_dev %type stmt_list +%type stmt_or_dev_list +%type stmt_dev +%type stmt_block %type stmt_expr %type stmt_call %type stmt_assign @@ -301,8 +303,7 @@ decl_thread ; stmt - : stmt_dev { $$.as_list = std::move($1); } - | stmt_block { $$.as_list = std::move($1); } + : stmt_block { $$.as_list = std::move($1); } | stmt_call { $$.as_call = std::move($1); } | stmt_assign { $$.as_assign = std::move($1); } | stmt_endon { $$.as_endon = std::move($1); } @@ -328,14 +329,9 @@ stmt | stmt_prof_end { $$.as_prof_end = std::move($1); } ; -stmt_dev - : DEVBEGIN stmt_list DEVEND { $$ = std::move($2); } - | DEVBEGIN DEVEND { $$ = std::make_unique(@$); } - ; - -stmt_block - : LBRACE stmt_list RBRACE { $$ = std::move($2); } - | LBRACE RBRACE { $$ = std::make_unique(@$); } +stmt_or_dev + : stmt { $$ = std::move($1); } + | stmt_dev { $$.as_dev = std::move($1); } ; stmt_list @@ -345,6 +341,23 @@ stmt_list { $$ = std::make_unique(@$); $$->list.push_back(std::move($1)); } ; +stmt_or_dev_list + : stmt_or_dev_list stmt_or_dev + { $$ = std::move($1); $$->list.push_back(std::move($2)); } + | stmt_or_dev + { $$ = std::make_unique(@$); $$->list.push_back(std::move($1)); } + ; + +stmt_dev + : DEVBEGIN stmt_list DEVEND { $$ = std::make_unique(@$, std::move($2)); } + | DEVBEGIN DEVEND { $$ = std::make_unique(@$, std::make_unique(@$)); } + ; + +stmt_block + : LBRACE stmt_or_dev_list RBRACE { $$ = std::move($2); } + | LBRACE RBRACE { $$ = std::make_unique(@$); } + ; + stmt_expr : expr_assign { $$ = std::make_unique(@$, std::move($1)); } diff --git a/gen/iw6/parser.ypp b/gen/iw6/parser.ypp index 99a39f5b..a27511c5 100644 --- a/gen/iw6/parser.ypp +++ b/gen/iw6/parser.ypp @@ -148,9 +148,11 @@ xsk::gsc::iw6::parser::symbol_type IW6lex(xsk::gsc::iw6::lexer& lexer); %type decl_constant %type decl_thread %type stmt -%type stmt_dev -%type stmt_block +%type stmt_or_dev %type stmt_list +%type stmt_or_dev_list +%type stmt_dev +%type stmt_block %type stmt_expr %type stmt_call %type stmt_assign @@ -301,8 +303,7 @@ decl_thread ; stmt - : stmt_dev { $$.as_list = std::move($1); } - | stmt_block { $$.as_list = std::move($1); } + : stmt_block { $$.as_list = std::move($1); } | stmt_call { $$.as_call = std::move($1); } | stmt_assign { $$.as_assign = std::move($1); } | stmt_endon { $$.as_endon = std::move($1); } @@ -328,14 +329,9 @@ stmt | stmt_prof_end { $$.as_prof_end = std::move($1); } ; -stmt_dev - : DEVBEGIN stmt_list DEVEND { $$ = std::move($2); } - | DEVBEGIN DEVEND { $$ = std::make_unique(@$); } - ; - -stmt_block - : LBRACE stmt_list RBRACE { $$ = std::move($2); } - | LBRACE RBRACE { $$ = std::make_unique(@$); } +stmt_or_dev + : stmt { $$ = std::move($1); } + | stmt_dev { $$.as_dev = std::move($1); } ; stmt_list @@ -345,6 +341,23 @@ stmt_list { $$ = std::make_unique(@$); $$->list.push_back(std::move($1)); } ; +stmt_or_dev_list + : stmt_or_dev_list stmt_or_dev + { $$ = std::move($1); $$->list.push_back(std::move($2)); } + | stmt_or_dev + { $$ = std::make_unique(@$); $$->list.push_back(std::move($1)); } + ; + +stmt_dev + : DEVBEGIN stmt_list DEVEND { $$ = std::make_unique(@$, std::move($2)); } + | DEVBEGIN DEVEND { $$ = std::make_unique(@$, std::make_unique(@$)); } + ; + +stmt_block + : LBRACE stmt_or_dev_list RBRACE { $$ = std::move($2); } + | LBRACE RBRACE { $$ = std::make_unique(@$); } + ; + stmt_expr : expr_assign { $$ = std::make_unique(@$, std::move($1)); } diff --git a/gen/iw7/parser.ypp b/gen/iw7/parser.ypp index 5220be26..72f68bcc 100644 --- a/gen/iw7/parser.ypp +++ b/gen/iw7/parser.ypp @@ -148,9 +148,11 @@ xsk::gsc::iw7::parser::symbol_type IW7lex(xsk::gsc::iw7::lexer& lexer); %type decl_constant %type decl_thread %type stmt -%type stmt_dev -%type stmt_block +%type stmt_or_dev %type stmt_list +%type stmt_or_dev_list +%type stmt_dev +%type stmt_block %type stmt_expr %type stmt_call %type stmt_assign @@ -301,8 +303,7 @@ decl_thread ; stmt - : stmt_dev { $$.as_list = std::move($1); } - | stmt_block { $$.as_list = std::move($1); } + : stmt_block { $$.as_list = std::move($1); } | stmt_call { $$.as_call = std::move($1); } | stmt_assign { $$.as_assign = std::move($1); } | stmt_endon { $$.as_endon = std::move($1); } @@ -328,14 +329,9 @@ stmt | stmt_prof_end { $$.as_prof_end = std::move($1); } ; -stmt_dev - : DEVBEGIN stmt_list DEVEND { $$ = std::move($2); } - | DEVBEGIN DEVEND { $$ = std::make_unique(@$); } - ; - -stmt_block - : LBRACE stmt_list RBRACE { $$ = std::move($2); } - | LBRACE RBRACE { $$ = std::make_unique(@$); } +stmt_or_dev + : stmt { $$ = std::move($1); } + | stmt_dev { $$.as_dev = std::move($1); } ; stmt_list @@ -345,6 +341,23 @@ stmt_list { $$ = std::make_unique(@$); $$->list.push_back(std::move($1)); } ; +stmt_or_dev_list + : stmt_or_dev_list stmt_or_dev + { $$ = std::move($1); $$->list.push_back(std::move($2)); } + | stmt_or_dev + { $$ = std::make_unique(@$); $$->list.push_back(std::move($1)); } + ; + +stmt_dev + : DEVBEGIN stmt_list DEVEND { $$ = std::make_unique(@$, std::move($2)); } + | DEVBEGIN DEVEND { $$ = std::make_unique(@$, std::make_unique(@$)); } + ; + +stmt_block + : LBRACE stmt_or_dev_list RBRACE { $$ = std::move($2); } + | LBRACE RBRACE { $$ = std::make_unique(@$); } + ; + stmt_expr : expr_assign { $$ = std::make_unique(@$, std::move($1)); } diff --git a/gen/iw8/parser.ypp b/gen/iw8/parser.ypp index a33fc5ef..7150c9dc 100644 --- a/gen/iw8/parser.ypp +++ b/gen/iw8/parser.ypp @@ -151,9 +151,11 @@ xsk::gsc::iw8::parser::symbol_type IW8lex(xsk::gsc::iw8::lexer& lexer); %type decl_constant %type decl_thread %type stmt -%type stmt_dev -%type stmt_block +%type stmt_or_dev %type stmt_list +%type stmt_or_dev_list +%type stmt_dev +%type stmt_block %type stmt_expr %type stmt_call %type stmt_assign @@ -307,8 +309,7 @@ decl_thread ; stmt - : stmt_dev { $$.as_list = std::move($1); } - | stmt_block { $$.as_list = std::move($1); } + : stmt_block { $$.as_list = std::move($1); } | stmt_call { $$.as_call = std::move($1); } | stmt_assign { $$.as_assign = std::move($1); } | stmt_endon { $$.as_endon = std::move($1); } @@ -335,14 +336,9 @@ stmt | stmt_prof_end { $$.as_prof_end = std::move($1); } ; -stmt_dev - : DEVBEGIN stmt_list DEVEND { $$ = std::move($2); } - | DEVBEGIN DEVEND { $$ = std::make_unique(@$); } - ; - -stmt_block - : LBRACE stmt_list RBRACE { $$ = std::move($2); } - | LBRACE RBRACE { $$ = std::make_unique(@$); } +stmt_or_dev + : stmt { $$ = std::move($1); } + | stmt_dev { $$.as_dev = std::move($1); } ; stmt_list @@ -352,6 +348,23 @@ stmt_list { $$ = std::make_unique(@$); $$->list.push_back(std::move($1)); } ; +stmt_or_dev_list + : stmt_or_dev_list stmt_or_dev + { $$ = std::move($1); $$->list.push_back(std::move($2)); } + | stmt_or_dev + { $$ = std::make_unique(@$); $$->list.push_back(std::move($1)); } + ; + +stmt_dev + : DEVBEGIN stmt_list DEVEND { $$ = std::make_unique(@$, std::move($2)); } + | DEVBEGIN DEVEND { $$ = std::make_unique(@$, std::make_unique(@$)); } + ; + +stmt_block + : LBRACE stmt_or_dev_list RBRACE { $$ = std::move($2); } + | LBRACE RBRACE { $$ = std::make_unique(@$); } + ; + stmt_expr : expr_assign { $$ = std::make_unique(@$, std::move($1)); } diff --git a/gen/s1/parser.ypp b/gen/s1/parser.ypp index 413c0d54..cf09fb36 100644 --- a/gen/s1/parser.ypp +++ b/gen/s1/parser.ypp @@ -149,9 +149,11 @@ xsk::gsc::s1::parser::symbol_type S1lex(xsk::gsc::s1::lexer& lexer); %type decl_constant %type decl_thread %type stmt -%type stmt_dev -%type stmt_block +%type stmt_or_dev %type stmt_list +%type stmt_or_dev_list +%type stmt_dev +%type stmt_block %type stmt_expr %type stmt_call %type stmt_assign @@ -303,8 +305,7 @@ decl_thread ; stmt - : stmt_dev { $$.as_list = std::move($1); } - | stmt_block { $$.as_list = std::move($1); } + : stmt_block { $$.as_list = std::move($1); } | stmt_call { $$.as_call = std::move($1); } | stmt_assign { $$.as_assign = std::move($1); } | stmt_endon { $$.as_endon = std::move($1); } @@ -331,14 +332,9 @@ stmt | stmt_prof_end { $$.as_prof_end = std::move($1); } ; -stmt_dev - : DEVBEGIN stmt_list DEVEND { $$ = std::move($2); } - | DEVBEGIN DEVEND { $$ = std::make_unique(@$); } - ; - -stmt_block - : LBRACE stmt_list RBRACE { $$ = std::move($2); } - | LBRACE RBRACE { $$ = std::make_unique(@$); } +stmt_or_dev + : stmt { $$ = std::move($1); } + | stmt_dev { $$.as_dev = std::move($1); } ; stmt_list @@ -348,6 +344,23 @@ stmt_list { $$ = std::make_unique(@$); $$->list.push_back(std::move($1)); } ; +stmt_or_dev_list + : stmt_or_dev_list stmt_or_dev + { $$ = std::move($1); $$->list.push_back(std::move($2)); } + | stmt_or_dev + { $$ = std::make_unique(@$); $$->list.push_back(std::move($1)); } + ; + +stmt_dev + : DEVBEGIN stmt_list DEVEND { $$ = std::make_unique(@$, std::move($2)); } + | DEVBEGIN DEVEND { $$ = std::make_unique(@$, std::make_unique(@$)); } + ; + +stmt_block + : LBRACE stmt_or_dev_list RBRACE { $$ = std::move($2); } + | LBRACE RBRACE { $$ = std::make_unique(@$); } + ; + stmt_expr : expr_assign { $$ = std::make_unique(@$, std::move($1)); } diff --git a/gen/s2/parser.ypp b/gen/s2/parser.ypp index 4fbeb2ab..25ea6c51 100644 --- a/gen/s2/parser.ypp +++ b/gen/s2/parser.ypp @@ -149,9 +149,11 @@ xsk::gsc::s2::parser::symbol_type S2lex(xsk::gsc::s2::lexer& lexer); %type decl_constant %type decl_thread %type stmt -%type stmt_dev -%type stmt_block +%type stmt_or_dev %type stmt_list +%type stmt_or_dev_list +%type stmt_dev +%type stmt_block %type stmt_expr %type stmt_call %type stmt_assign @@ -303,8 +305,7 @@ decl_thread ; stmt - : stmt_dev { $$.as_list = std::move($1); } - | stmt_block { $$.as_list = std::move($1); } + : stmt_block { $$.as_list = std::move($1); } | stmt_call { $$.as_call = std::move($1); } | stmt_assign { $$.as_assign = std::move($1); } | stmt_endon { $$.as_endon = std::move($1); } @@ -331,14 +332,9 @@ stmt | stmt_prof_end { $$.as_prof_end = std::move($1); } ; -stmt_dev - : DEVBEGIN stmt_list DEVEND { $$ = std::move($2); } - | DEVBEGIN DEVEND { $$ = std::make_unique(@$); } - ; - -stmt_block - : LBRACE stmt_list RBRACE { $$ = std::move($2); } - | LBRACE RBRACE { $$ = std::make_unique(@$); } +stmt_or_dev + : stmt { $$ = std::move($1); } + | stmt_dev { $$.as_dev = std::move($1); } ; stmt_list @@ -348,6 +344,23 @@ stmt_list { $$ = std::make_unique(@$); $$->list.push_back(std::move($1)); } ; +stmt_or_dev_list + : stmt_or_dev_list stmt_or_dev + { $$ = std::move($1); $$->list.push_back(std::move($2)); } + | stmt_or_dev + { $$ = std::make_unique(@$); $$->list.push_back(std::move($1)); } + ; + +stmt_dev + : DEVBEGIN stmt_list DEVEND { $$ = std::make_unique(@$, std::move($2)); } + | DEVBEGIN DEVEND { $$ = std::make_unique(@$, std::make_unique(@$)); } + ; + +stmt_block + : LBRACE stmt_or_dev_list RBRACE { $$ = std::move($2); } + | LBRACE RBRACE { $$ = std::make_unique(@$); } + ; + stmt_expr : expr_assign { $$ = std::make_unique(@$, std::move($1)); } diff --git a/gen/s4/parser.ypp b/gen/s4/parser.ypp index e6a63ab7..bc93d7b8 100644 --- a/gen/s4/parser.ypp +++ b/gen/s4/parser.ypp @@ -151,9 +151,11 @@ xsk::gsc::s4::parser::symbol_type S4lex(xsk::gsc::s4::lexer& lexer); %type decl_constant %type decl_thread %type stmt -%type stmt_dev -%type stmt_block +%type stmt_or_dev %type stmt_list +%type stmt_or_dev_list +%type stmt_dev +%type stmt_block %type stmt_expr %type stmt_call %type stmt_assign @@ -307,8 +309,7 @@ decl_thread ; stmt - : stmt_dev { $$.as_list = std::move($1); } - | stmt_block { $$.as_list = std::move($1); } + : stmt_block { $$.as_list = std::move($1); } | stmt_call { $$.as_call = std::move($1); } | stmt_assign { $$.as_assign = std::move($1); } | stmt_endon { $$.as_endon = std::move($1); } @@ -335,14 +336,9 @@ stmt | stmt_prof_end { $$.as_prof_end = std::move($1); } ; -stmt_dev - : DEVBEGIN stmt_list DEVEND { $$ = std::move($2); } - | DEVBEGIN DEVEND { $$ = std::make_unique(@$); } - ; - -stmt_block - : LBRACE stmt_list RBRACE { $$ = std::move($2); } - | LBRACE RBRACE { $$ = std::make_unique(@$); } +stmt_or_dev + : stmt { $$ = std::move($1); } + | stmt_dev { $$.as_dev = std::move($1); } ; stmt_list @@ -352,6 +348,23 @@ stmt_list { $$ = std::make_unique(@$); $$->list.push_back(std::move($1)); } ; +stmt_or_dev_list + : stmt_or_dev_list stmt_or_dev + { $$ = std::move($1); $$->list.push_back(std::move($2)); } + | stmt_or_dev + { $$ = std::make_unique(@$); $$->list.push_back(std::move($1)); } + ; + +stmt_dev + : DEVBEGIN stmt_list DEVEND { $$ = std::make_unique(@$, std::move($2)); } + | DEVBEGIN DEVEND { $$ = std::make_unique(@$, std::make_unique(@$)); } + ; + +stmt_block + : LBRACE stmt_or_dev_list RBRACE { $$ = std::move($2); } + | LBRACE RBRACE { $$ = std::make_unique(@$); } + ; + stmt_expr : expr_assign { $$ = std::make_unique(@$, std::move($1)); } diff --git a/src/h1/xsk/assembler.cpp b/src/h1/xsk/assembler.cpp index 7b453bfd..b95c18c8 100644 --- a/src/h1/xsk/assembler.cpp +++ b/src/h1/xsk/assembler.cpp @@ -571,4 +571,4 @@ auto assembler::resolve_label(const std::string& name) -> std::int32_t throw asm_error("Couldn't resolve label address of '" + name + "'!"); } -} // namespace xsk::gsc::h1 +} // namespace xsk::gsc::h1 diff --git a/src/h1/xsk/compiler.cpp b/src/h1/xsk/compiler.cpp index 40abaf7e..ddf36de4 100644 --- a/src/h1/xsk/compiler.cpp +++ b/src/h1/xsk/compiler.cpp @@ -91,7 +91,7 @@ void compiler::emit_include(const ast::include::ptr& include) for (const auto& inc : includes_) { - if(inc.name == path) + if (inc.name == path) { throw comp_error(include->loc(), "error duplicated include file '" + path + "'."); } @@ -152,7 +152,7 @@ void compiler::emit_declaration(const ast::decl& decl) void compiler::emit_decl_usingtree(const ast::decl_usingtree::ptr& animtree) { - if(developer_thread_) + if (developer_thread_) throw comp_error(animtree->loc(), "cannot put #using_animtree inside /# ... #/ comment"); animtrees_.push_back({ animtree->name->value, false }); @@ -195,6 +195,9 @@ void compiler::emit_stmt(const ast::stmt& stmt, const block::ptr& blk, bool last case ast::kind::stmt_list: emit_stmt_list(stmt.as_list, blk, last); break; + case ast::kind::stmt_dev: + emit_stmt_dev(stmt.as_dev, blk, last); + break; case ast::kind::stmt_expr: emit_stmt_expr(stmt.as_expr, blk); break; @@ -284,6 +287,11 @@ void compiler::emit_stmt_list(const ast::stmt_list::ptr& stmt, const block::ptr& } } +void compiler::emit_stmt_dev(const ast::stmt_dev::ptr& stmt, const block::ptr& blk, bool last) +{ + emit_stmt_list(stmt->list, blk, last); +} + void compiler::emit_stmt_expr(const ast::stmt_expr::ptr& stmt, const block::ptr& blk) { switch (stmt->expr.kind()) @@ -580,6 +588,8 @@ void compiler::emit_stmt_dowhile(const ast::stmt_dowhile::ptr& stmt, const block emit_stmt(stmt->stmt, stmt->blk, false); + insert_label(continue_loc); + bool const_cond = is_constant_condition(stmt->test); if (!const_cond) @@ -588,7 +598,6 @@ void compiler::emit_stmt_dowhile(const ast::stmt_dowhile::ptr& stmt, const block emit_opcode(opcode::OP_JumpOnFalse, break_loc); } - insert_label(continue_loc); emit_opcode(opcode::OP_jumpback, begin_loc); insert_label(break_loc); @@ -830,7 +839,7 @@ void compiler::emit_stmt_switch(const ast::stmt_switch::ptr& stmt, const block:: if (has_default) { - if(default_ctx->abort == abort_t::abort_none) + if (default_ctx->abort == abort_t::abort_none) { break_blks_.push_back(default_ctx); } @@ -1009,9 +1018,6 @@ void compiler::emit_expr(const ast::expr& expr, const block::ptr& blk) case ast::kind::expr_string: emit_expr_string(expr.as_string); break; - case ast::kind::expr_color: - emit_expr_color(expr.as_color); - break; case ast::kind::expr_vector: emit_expr_vector(expr.as_vector, blk); break; @@ -1324,7 +1330,7 @@ void compiler::emit_expr_call_function(const ast::expr_function::ptr& expr, cons switch (expr->mode) { case ast::call::mode::normal: - if(expr->args->list.size() > 0) + if (expr->args->list.size() > 0) emit_opcode(opcode::OP_ScriptLocalFunctionCall, expr->name->value); else emit_opcode(opcode::OP_ScriptLocalFunctionCall2, expr->name->value); @@ -1345,7 +1351,7 @@ void compiler::emit_expr_call_function(const ast::expr_function::ptr& expr, cons switch (expr->mode) { case ast::call::mode::normal: - if(expr->args->list.size() > 0) + if (expr->args->list.size() > 0) emit_opcode(opcode::OP_ScriptFarFunctionCall, { expr->path->value, expr->name->value }); else emit_opcode(opcode::OP_ScriptFarFunctionCall2, { expr->path->value, expr->name->value }); @@ -1557,7 +1563,7 @@ void compiler::emit_expr_reference(const ast::expr_reference::ptr& expr, const b emit_opcode(opcode::OP_GetFarFunction, { expr->path->value, expr->name->value }); break; case ast::call::type::builtin: - if(method) + if (method) emit_opcode(opcode::OP_GetBuiltinMethod, expr->name->value); else emit_opcode(opcode::OP_GetBuiltinFunction, expr->name->value); @@ -1961,30 +1967,6 @@ void compiler::emit_expr_string(const ast::expr_string::ptr& expr) emit_opcode(opcode::OP_GetString, expr->value); } -void compiler::emit_expr_color(const ast::expr_color::ptr& expr) -{ - std::vector data; - std::string x, y, z; - - if (expr->value.size() == 3) - { - x = "0x" + expr->value.substr(0, 1) + expr->value.substr(0, 1); - y = "0x" + expr->value.substr(1, 1) + expr->value.substr(1, 1); - z = "0x" + expr->value.substr(2, 1) + expr->value.substr(2, 1); - } - else - { - x = "0x" + expr->value.substr(0, 2); - y = "0x" + expr->value.substr(2, 2); - z = "0x" + expr->value.substr(4, 2); - } - - data.push_back(utils::string::hex_to_dec(x.data())); - data.push_back(utils::string::hex_to_dec(y.data())); - data.push_back(utils::string::hex_to_dec(z.data())); - emit_opcode(opcode::OP_GetVector, data); -} - void compiler::emit_expr_float(const ast::expr_float::ptr& expr) { emit_opcode(opcode::OP_GetFloat, expr->value); @@ -2110,6 +2092,9 @@ void compiler::process_stmt(const ast::stmt& stmt, const block::ptr& blk) case ast::kind::stmt_list: process_stmt_list(stmt.as_list, blk); break; + case ast::kind::stmt_dev: + process_stmt_dev(stmt.as_dev, blk); + break; case ast::kind::stmt_expr: process_stmt_expr(stmt.as_expr, blk); break; @@ -2175,6 +2160,11 @@ void compiler::process_stmt_list(const ast::stmt_list::ptr& stmt, const block::p } } +void compiler::process_stmt_dev(const ast::stmt_dev::ptr& stmt, const block::ptr& blk) +{ + process_stmt_list(stmt->list, blk); +} + void compiler::process_stmt_expr(const ast::stmt_expr::ptr& stmt, const block::ptr& blk) { switch (stmt->expr.kind()) @@ -2870,7 +2860,7 @@ void compiler::insert_label(const std::string& name) case opcode::OP_jump: case opcode::OP_jumpback: case opcode::OP_switch: - if(inst->data[0] == name) + if (inst->data[0] == name) inst->data[0] = itr->second; break; case opcode::OP_endswitch: diff --git a/src/h1/xsk/compiler.hpp b/src/h1/xsk/compiler.hpp index 100e6ab8..44a24a07 100644 --- a/src/h1/xsk/compiler.hpp +++ b/src/h1/xsk/compiler.hpp @@ -48,6 +48,7 @@ private: void emit_decl_thread(const ast::decl_thread::ptr& thread); void emit_stmt(const ast::stmt& stmt, const block::ptr& blk, bool last); void emit_stmt_list(const ast::stmt_list::ptr& stmt, const block::ptr& blk, bool last); + void emit_stmt_dev(const ast::stmt_dev::ptr& stmt, const block::ptr& blk, bool last); void emit_stmt_expr(const ast::stmt_expr::ptr& stmt, const block::ptr& blk); void emit_stmt_call(const ast::stmt_call::ptr& stmt, const block::ptr& blk); void emit_stmt_assign(const ast::stmt_assign::ptr& stmt, const block::ptr& blk); @@ -110,7 +111,6 @@ private: void emit_expr_animtree(const ast::expr_animtree::ptr& expr); void emit_expr_istring(const ast::expr_istring::ptr& expr); void emit_expr_string(const ast::expr_string::ptr& expr); - void emit_expr_color(const ast::expr_color::ptr& expr); void emit_expr_float(const ast::expr_float::ptr& expr); void emit_expr_integer(const ast::expr_integer::ptr& expr); void emit_expr_false(const ast::expr_false::ptr& expr); @@ -123,6 +123,7 @@ private: void process_thread(const ast::decl_thread::ptr& decl, const block::ptr& blk); void process_stmt(const ast::stmt& stmt, const block::ptr& blk); void process_stmt_list(const ast::stmt_list::ptr& stmt, const block::ptr& blk); + void process_stmt_dev(const ast::stmt_dev::ptr& stmt, const block::ptr& blk); void process_stmt_expr(const ast::stmt_expr::ptr& stmt, const block::ptr& blk); void process_stmt_assign(const ast::stmt_assign::ptr& stmt, const block::ptr& blk); void process_stmt_waittill(const ast::stmt_waittill::ptr& stmt, const block::ptr& blk); diff --git a/src/h1/xsk/decompiler.cpp b/src/h1/xsk/decompiler.cpp index 3b18d10e..99bf0a9a 100644 --- a/src/h1/xsk/decompiler.cpp +++ b/src/h1/xsk/decompiler.cpp @@ -75,7 +75,7 @@ void decompiler::decompile_function(const function::ptr& func) // hotfix empty else block at func end if (stmt->list.size() > 0 && stmt->list.back() == ast::kind::asm_jump) { - if(stmt->list.back().as_jump->value == blk.loc_end) + if (stmt->list.back().as_jump->value == blk.loc_end) stmt->list.pop_back(); } @@ -255,7 +255,7 @@ void decompiler::decompile_instruction(const instruction::ptr& inst) auto name = std::make_unique(loc, inst->data[1]); auto node = std::make_unique(loc, std::move(path), std::move(name)); stack_.push(std::move(node)); - }; + } break; case opcode::OP_CreateLocalVariable: { @@ -1657,7 +1657,7 @@ void decompiler::decompile_instruction(const instruction::ptr& inst) { auto expr = std::make_unique(loc, inst->data[0]); func_->stmt->list.push_back(ast::stmt(std::move(expr))); - if(stack_.size() != 0) tern_labels_.push_back(inst->data[0]); + if (stack_.size() != 0) tern_labels_.push_back(inst->data[0]); } break; case opcode::OP_jumpback: @@ -1856,7 +1856,7 @@ void decompiler::decompile_ifelses(const ast::stmt_list::ptr& stmt) { auto& entry = stmt->list.at(i); - if(entry == ast::kind::asm_jump_cond) + if (entry == ast::kind::asm_jump_cond) { auto j = (entry.as_cond->value == blocks_.back().loc_end) ? (stmt->list.size() - 1) : (find_location_index(stmt, entry.as_cond->value) - 1); auto last_loc = blocks_.back().loc_end; @@ -2135,7 +2135,7 @@ void decompiler::decompile_loop(const ast::stmt_list::ptr& block, std::uint32_t { auto ref = block->list.at(start).loc().label(); - if(!find_location_reference(block, 0, start, ref)) + if (!find_location_reference(block, 0, start, ref)) { decompile_foreach(block, start, end); return; @@ -2144,29 +2144,29 @@ void decompiler::decompile_loop(const ast::stmt_list::ptr& block, std::uint32_t } } - if(start > 0) // while at func start + if (start > 0) // while at func start { auto index = 1; - while(block->list.at(start - index) == ast::kind::asm_create) + while (block->list.at(start - index) == ast::kind::asm_create) { - if(start - index > 0) + if (start - index > 0) index++; else break; } - if(block->list.at(start - index) == ast::kind::stmt_assign) + if (block->list.at(start - index) == ast::kind::stmt_assign) { auto ref = block->list.at(end).loc().label(); auto ref2 = block->list.at(start).loc().label(); - if(find_location_reference(block, start, end, ref)) + if (find_location_reference(block, start, end, ref)) { // continue is at jumpback, not post-expr decompile_while(block, start, end); return; } - else if(find_location_reference(block, 0, start, ref2)) + else if (find_location_reference(block, 0, start, ref2)) { // begin is at condition, not pre-expr decompile_while(block, start, end); @@ -2406,7 +2406,7 @@ void decompiler::decompile_switch(const ast::stmt_list::ptr& stmt, std::uint32_t auto list = std::make_unique(loc); list->is_case = true; auto def_stmt = ast::stmt(std::make_unique(loc_pos, std::move(list))); - while(stmt->list.at(loc_idx) == ast::kind::stmt_case) + while (stmt->list.at(loc_idx) == ast::kind::stmt_case) loc_idx++; stmt->list.insert(stmt->list.begin() + loc_idx, std::move(def_stmt)); idx += 2; @@ -2507,7 +2507,7 @@ auto decompiler::find_location_index(const ast::stmt_list::ptr& stmt, const std: for (auto& entry : stmt->list) { - if(entry.loc().label() == location) + if (entry.loc().label() == location) return index; index++; @@ -2773,7 +2773,7 @@ void decompiler::process_stmt_ifelse(const ast::stmt_ifelse::ptr& stmt, const bl { abort = stmt->blk_if->abort; - if(abort == abort_t::abort_none) + if (abort == abort_t::abort_none) childs.push_back(stmt->blk_if.get()); } diff --git a/src/h1/xsk/lexer.cpp b/src/h1/xsk/lexer.cpp index b8d739f6..412d1e0c 100644 --- a/src/h1/xsk/lexer.cpp +++ b/src/h1/xsk/lexer.cpp @@ -73,12 +73,12 @@ buffer::buffer() : length(0) buffer::~buffer() { - if(data) std::free(data); + if (data) std::free(data); } bool buffer::push(char c) { - if(length >= max_buf_size) + if (length >= max_buf_size) return false; data[length++] = c; @@ -90,7 +90,7 @@ reader::reader() : state(reader::end), buffer_pos(0), bytes_remaining(0), void reader::init(const char* data, size_t size) { - if(data && size) + if (data && size) { state = reader::ok; buffer_pos = data; @@ -112,7 +112,7 @@ void reader::advance() { ++buffer_pos; - if(bytes_remaining-- == 1) + if (bytes_remaining-- == 1) { state = reader::end; bytes_remaining = 0; @@ -562,7 +562,7 @@ lex_name: advance(); } - if(state_ == state::field) + if (state_ == state::field) { if (path) throw comp_error(loc_, "invalid field token '\\'"); diff --git a/src/h1/xsk/parser.cpp b/src/h1/xsk/parser.cpp index 64594bc8..738eac19 100644 --- a/src/h1/xsk/parser.cpp +++ b/src/h1/xsk/parser.cpp @@ -382,6 +382,7 @@ namespace xsk { namespace gsc { namespace h1 { break; case symbol_kind::S_stmt: // stmt + case symbol_kind::S_stmt_or_dev: // stmt_or_dev value.YY_MOVE_OR_COPY< ast::stmt > (YY_MOVE (that.value)); break; @@ -413,6 +414,10 @@ namespace xsk { namespace gsc { namespace h1 { value.YY_MOVE_OR_COPY< ast::stmt_default::ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_stmt_dev: // stmt_dev + value.YY_MOVE_OR_COPY< ast::stmt_dev::ptr > (YY_MOVE (that.value)); + break; + case symbol_kind::S_stmt_dowhile: // stmt_dowhile value.YY_MOVE_OR_COPY< ast::stmt_dowhile::ptr > (YY_MOVE (that.value)); break; @@ -441,9 +446,9 @@ namespace xsk { namespace gsc { namespace h1 { value.YY_MOVE_OR_COPY< ast::stmt_ifelse::ptr > (YY_MOVE (that.value)); break; - case symbol_kind::S_stmt_dev: // stmt_dev - case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list + case symbol_kind::S_stmt_or_dev_list: // stmt_or_dev_list + case symbol_kind::S_stmt_block: // stmt_block value.YY_MOVE_OR_COPY< ast::stmt_list::ptr > (YY_MOVE (that.value)); break; @@ -684,6 +689,7 @@ namespace xsk { namespace gsc { namespace h1 { break; case symbol_kind::S_stmt: // stmt + case symbol_kind::S_stmt_or_dev: // stmt_or_dev value.move< ast::stmt > (YY_MOVE (that.value)); break; @@ -715,6 +721,10 @@ namespace xsk { namespace gsc { namespace h1 { value.move< ast::stmt_default::ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_stmt_dev: // stmt_dev + value.move< ast::stmt_dev::ptr > (YY_MOVE (that.value)); + break; + case symbol_kind::S_stmt_dowhile: // stmt_dowhile value.move< ast::stmt_dowhile::ptr > (YY_MOVE (that.value)); break; @@ -743,9 +753,9 @@ namespace xsk { namespace gsc { namespace h1 { value.move< ast::stmt_ifelse::ptr > (YY_MOVE (that.value)); break; - case symbol_kind::S_stmt_dev: // stmt_dev - case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list + case symbol_kind::S_stmt_or_dev_list: // stmt_or_dev_list + case symbol_kind::S_stmt_block: // stmt_block value.move< ast::stmt_list::ptr > (YY_MOVE (that.value)); break; @@ -986,6 +996,7 @@ namespace xsk { namespace gsc { namespace h1 { break; case symbol_kind::S_stmt: // stmt + case symbol_kind::S_stmt_or_dev: // stmt_or_dev value.copy< ast::stmt > (that.value); break; @@ -1017,6 +1028,10 @@ namespace xsk { namespace gsc { namespace h1 { value.copy< ast::stmt_default::ptr > (that.value); break; + case symbol_kind::S_stmt_dev: // stmt_dev + value.copy< ast::stmt_dev::ptr > (that.value); + break; + case symbol_kind::S_stmt_dowhile: // stmt_dowhile value.copy< ast::stmt_dowhile::ptr > (that.value); break; @@ -1045,9 +1060,9 @@ namespace xsk { namespace gsc { namespace h1 { value.copy< ast::stmt_ifelse::ptr > (that.value); break; - case symbol_kind::S_stmt_dev: // stmt_dev - case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list + case symbol_kind::S_stmt_or_dev_list: // stmt_or_dev_list + case symbol_kind::S_stmt_block: // stmt_block value.copy< ast::stmt_list::ptr > (that.value); break; @@ -1287,6 +1302,7 @@ namespace xsk { namespace gsc { namespace h1 { break; case symbol_kind::S_stmt: // stmt + case symbol_kind::S_stmt_or_dev: // stmt_or_dev value.move< ast::stmt > (that.value); break; @@ -1318,6 +1334,10 @@ namespace xsk { namespace gsc { namespace h1 { value.move< ast::stmt_default::ptr > (that.value); break; + case symbol_kind::S_stmt_dev: // stmt_dev + value.move< ast::stmt_dev::ptr > (that.value); + break; + case symbol_kind::S_stmt_dowhile: // stmt_dowhile value.move< ast::stmt_dowhile::ptr > (that.value); break; @@ -1346,9 +1366,9 @@ namespace xsk { namespace gsc { namespace h1 { value.move< ast::stmt_ifelse::ptr > (that.value); break; - case symbol_kind::S_stmt_dev: // stmt_dev - case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list + case symbol_kind::S_stmt_or_dev_list: // stmt_or_dev_list + case symbol_kind::S_stmt_block: // stmt_block value.move< ast::stmt_list::ptr > (that.value); break; @@ -1843,6 +1863,7 @@ namespace xsk { namespace gsc { namespace h1 { break; case symbol_kind::S_stmt: // stmt + case symbol_kind::S_stmt_or_dev: // stmt_or_dev yylhs.value.emplace< ast::stmt > (); break; @@ -1874,6 +1895,10 @@ namespace xsk { namespace gsc { namespace h1 { yylhs.value.emplace< ast::stmt_default::ptr > (); break; + case symbol_kind::S_stmt_dev: // stmt_dev + yylhs.value.emplace< ast::stmt_dev::ptr > (); + break; + case symbol_kind::S_stmt_dowhile: // stmt_dowhile yylhs.value.emplace< ast::stmt_dowhile::ptr > (); break; @@ -1902,9 +1927,9 @@ namespace xsk { namespace gsc { namespace h1 { yylhs.value.emplace< ast::stmt_ifelse::ptr > (); break; - case symbol_kind::S_stmt_dev: // stmt_dev - case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list + case symbol_kind::S_stmt_or_dev_list: // stmt_or_dev_list + case symbol_kind::S_stmt_block: // stmt_block yylhs.value.emplace< ast::stmt_list::ptr > (); break; @@ -1984,1309 +2009,1327 @@ namespace xsk { namespace gsc { namespace h1 { switch (yyn) { case 2: // root: program -#line 256 "parser.ypp" +#line 258 "parser.ypp" { ast = std::move(yystack_[0].value.as < ast::program::ptr > ()); } -#line 1990 "parser.cpp" +#line 2015 "parser.cpp" break; case 3: // root: %empty -#line 257 "parser.ypp" +#line 259 "parser.ypp" { ast = std::make_unique(yylhs.location); } -#line 1996 "parser.cpp" +#line 2021 "parser.cpp" break; case 4: // program: program inline -#line 262 "parser.ypp" +#line 264 "parser.ypp" { yylhs.value.as < ast::program::ptr > () = std::move(yystack_[1].value.as < ast::program::ptr > ()); } -#line 2002 "parser.cpp" +#line 2027 "parser.cpp" break; case 5: // program: program include -#line 264 "parser.ypp" +#line 266 "parser.ypp" { yylhs.value.as < ast::program::ptr > () = std::move(yystack_[1].value.as < ast::program::ptr > ()); yylhs.value.as < ast::program::ptr > ()->includes.push_back(std::move(yystack_[0].value.as < ast::include::ptr > ())); } -#line 2008 "parser.cpp" +#line 2033 "parser.cpp" break; case 6: // program: program declaration -#line 266 "parser.ypp" +#line 268 "parser.ypp" { yylhs.value.as < ast::program::ptr > () = std::move(yystack_[1].value.as < ast::program::ptr > ()); yylhs.value.as < ast::program::ptr > ()->declarations.push_back(std::move(yystack_[0].value.as < ast::decl > ())); } -#line 2014 "parser.cpp" +#line 2039 "parser.cpp" break; case 7: // program: inline -#line 268 "parser.ypp" +#line 270 "parser.ypp" { yylhs.value.as < ast::program::ptr > () = std::make_unique(yylhs.location); } -#line 2020 "parser.cpp" +#line 2045 "parser.cpp" break; case 8: // program: include -#line 270 "parser.ypp" +#line 272 "parser.ypp" { yylhs.value.as < ast::program::ptr > () = std::make_unique(yylhs.location); yylhs.value.as < ast::program::ptr > ()->includes.push_back(std::move(yystack_[0].value.as < ast::include::ptr > ())); } -#line 2026 "parser.cpp" +#line 2051 "parser.cpp" break; case 9: // program: declaration -#line 272 "parser.ypp" +#line 274 "parser.ypp" { yylhs.value.as < ast::program::ptr > () = std::make_unique(yylhs.location); yylhs.value.as < ast::program::ptr > ()->declarations.push_back(std::move(yystack_[0].value.as < ast::decl > ())); } -#line 2032 "parser.cpp" +#line 2057 "parser.cpp" break; case 10: // inline: "#inline" expr_path ";" -#line 276 "parser.ypp" +#line 278 "parser.ypp" { lexer.push_header(yystack_[1].value.as < ast::expr_path::ptr > ()->value); } -#line 2038 "parser.cpp" +#line 2063 "parser.cpp" break; case 11: // include: "#include" expr_path ";" -#line 281 "parser.ypp" +#line 283 "parser.ypp" { yylhs.value.as < ast::include::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr_path::ptr > ())); } -#line 2044 "parser.cpp" +#line 2069 "parser.cpp" break; case 12: // declaration: "/#" -#line 285 "parser.ypp" +#line 287 "parser.ypp" { yylhs.value.as < ast::decl > ().as_dev_begin = std::make_unique(yylhs.location); } -#line 2050 "parser.cpp" +#line 2075 "parser.cpp" break; case 13: // declaration: "#/" -#line 286 "parser.ypp" +#line 288 "parser.ypp" { yylhs.value.as < ast::decl > ().as_dev_end = std::make_unique(yylhs.location); } -#line 2056 "parser.cpp" +#line 2081 "parser.cpp" break; case 14: // declaration: decl_usingtree -#line 287 "parser.ypp" +#line 289 "parser.ypp" { yylhs.value.as < ast::decl > ().as_usingtree = std::move(yystack_[0].value.as < ast::decl_usingtree::ptr > ()); } -#line 2062 "parser.cpp" +#line 2087 "parser.cpp" break; case 15: // declaration: decl_constant -#line 288 "parser.ypp" +#line 290 "parser.ypp" { yylhs.value.as < ast::decl > ().as_constant = std::move(yystack_[0].value.as < ast::decl_constant::ptr > ()); } -#line 2068 "parser.cpp" +#line 2093 "parser.cpp" break; case 16: // declaration: decl_thread -#line 289 "parser.ypp" +#line 291 "parser.ypp" { yylhs.value.as < ast::decl > ().as_thread = std::move(yystack_[0].value.as < ast::decl_thread::ptr > ()); } -#line 2074 "parser.cpp" +#line 2099 "parser.cpp" break; case 17: // decl_usingtree: "#using_animtree" "(" expr_string ")" ";" -#line 294 "parser.ypp" +#line 296 "parser.ypp" { lexer.ban_header(yylhs.location); yylhs.value.as < ast::decl_usingtree::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr_string::ptr > ())); } -#line 2080 "parser.cpp" +#line 2105 "parser.cpp" break; case 18: // decl_constant: expr_identifier "=" expr ";" -#line 299 "parser.ypp" +#line 301 "parser.ypp" { yylhs.value.as < ast::decl_constant::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr > ())); } -#line 2086 "parser.cpp" +#line 2111 "parser.cpp" break; case 19: // decl_thread: expr_identifier "(" expr_parameters ")" stmt_block -#line 304 "parser.ypp" +#line 306 "parser.ypp" { lexer.ban_header(yylhs.location); yylhs.value.as < ast::decl_thread::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[2].value.as < ast::expr_parameters::ptr > ()), std::move(yystack_[0].value.as < ast::stmt_list::ptr > ())); } -#line 2092 "parser.cpp" +#line 2117 "parser.cpp" break; - case 20: // stmt: stmt_dev -#line 308 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_list = std::move(yystack_[0].value.as < ast::stmt_list::ptr > ()); } -#line 2098 "parser.cpp" - break; - - case 21: // stmt: stmt_block -#line 309 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_list = std::move(yystack_[0].value.as < ast::stmt_list::ptr > ()); } -#line 2104 "parser.cpp" - break; - - case 22: // stmt: stmt_call + case 20: // stmt: stmt_block #line 310 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_call = std::move(yystack_[0].value.as < ast::stmt_call::ptr > ()); } -#line 2110 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_list = std::move(yystack_[0].value.as < ast::stmt_list::ptr > ()); } +#line 2123 "parser.cpp" break; - case 23: // stmt: stmt_assign + case 21: // stmt: stmt_call #line 311 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_assign = std::move(yystack_[0].value.as < ast::stmt_assign::ptr > ()); } -#line 2116 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_call = std::move(yystack_[0].value.as < ast::stmt_call::ptr > ()); } +#line 2129 "parser.cpp" break; - case 24: // stmt: stmt_endon + case 22: // stmt: stmt_assign #line 312 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_endon = std::move(yystack_[0].value.as < ast::stmt_endon::ptr > ()); } -#line 2122 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_assign = std::move(yystack_[0].value.as < ast::stmt_assign::ptr > ()); } +#line 2135 "parser.cpp" break; - case 25: // stmt: stmt_notify + case 23: // stmt: stmt_endon #line 313 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_notify = std::move(yystack_[0].value.as < ast::stmt_notify::ptr > ()); } -#line 2128 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_endon = std::move(yystack_[0].value.as < ast::stmt_endon::ptr > ()); } +#line 2141 "parser.cpp" break; - case 26: // stmt: stmt_wait + case 24: // stmt: stmt_notify #line 314 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_wait = std::move(yystack_[0].value.as < ast::stmt_wait::ptr > ()); } -#line 2134 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_notify = std::move(yystack_[0].value.as < ast::stmt_notify::ptr > ()); } +#line 2147 "parser.cpp" break; - case 27: // stmt: stmt_waittill + case 25: // stmt: stmt_wait #line 315 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_waittill = std::move(yystack_[0].value.as < ast::stmt_waittill::ptr > ()); } -#line 2140 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_wait = std::move(yystack_[0].value.as < ast::stmt_wait::ptr > ()); } +#line 2153 "parser.cpp" break; - case 28: // stmt: stmt_waittillmatch + case 26: // stmt: stmt_waittill #line 316 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_waittillmatch = std::move(yystack_[0].value.as < ast::stmt_waittillmatch::ptr > ()); } -#line 2146 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_waittill = std::move(yystack_[0].value.as < ast::stmt_waittill::ptr > ()); } +#line 2159 "parser.cpp" break; - case 29: // stmt: stmt_waittillframeend + case 27: // stmt: stmt_waittillmatch #line 317 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_waittillframeend = std::move(yystack_[0].value.as < ast::stmt_waittillframeend::ptr > ()); } -#line 2152 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_waittillmatch = std::move(yystack_[0].value.as < ast::stmt_waittillmatch::ptr > ()); } +#line 2165 "parser.cpp" break; - case 30: // stmt: stmt_waitframe + case 28: // stmt: stmt_waittillframeend #line 318 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_waitframe = std::move(yystack_[0].value.as < ast::stmt_waitframe::ptr > ()); } -#line 2158 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_waittillframeend = std::move(yystack_[0].value.as < ast::stmt_waittillframeend::ptr > ()); } +#line 2171 "parser.cpp" break; - case 31: // stmt: stmt_if + case 29: // stmt: stmt_waitframe #line 319 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_if = std::move(yystack_[0].value.as < ast::stmt_if::ptr > ()); } -#line 2164 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_waitframe = std::move(yystack_[0].value.as < ast::stmt_waitframe::ptr > ()); } +#line 2177 "parser.cpp" break; - case 32: // stmt: stmt_ifelse + case 30: // stmt: stmt_if #line 320 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_ifelse = std::move(yystack_[0].value.as < ast::stmt_ifelse::ptr > ()); } -#line 2170 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_if = std::move(yystack_[0].value.as < ast::stmt_if::ptr > ()); } +#line 2183 "parser.cpp" break; - case 33: // stmt: stmt_while + case 31: // stmt: stmt_ifelse #line 321 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_while = std::move(yystack_[0].value.as < ast::stmt_while::ptr > ()); } -#line 2176 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_ifelse = std::move(yystack_[0].value.as < ast::stmt_ifelse::ptr > ()); } +#line 2189 "parser.cpp" break; - case 34: // stmt: stmt_dowhile + case 32: // stmt: stmt_while #line 322 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_dowhile = std::move(yystack_[0].value.as < ast::stmt_dowhile::ptr > ()); } -#line 2182 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_while = std::move(yystack_[0].value.as < ast::stmt_while::ptr > ()); } +#line 2195 "parser.cpp" break; - case 35: // stmt: stmt_for + case 33: // stmt: stmt_dowhile #line 323 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_for = std::move(yystack_[0].value.as < ast::stmt_for::ptr > ()); } -#line 2188 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_dowhile = std::move(yystack_[0].value.as < ast::stmt_dowhile::ptr > ()); } +#line 2201 "parser.cpp" break; - case 36: // stmt: stmt_foreach + case 34: // stmt: stmt_for #line 324 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_foreach = std::move(yystack_[0].value.as < ast::stmt_foreach::ptr > ()); } -#line 2194 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_for = std::move(yystack_[0].value.as < ast::stmt_for::ptr > ()); } +#line 2207 "parser.cpp" break; - case 37: // stmt: stmt_switch + case 35: // stmt: stmt_foreach #line 325 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_switch = std::move(yystack_[0].value.as < ast::stmt_switch::ptr > ()); } -#line 2200 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_foreach = std::move(yystack_[0].value.as < ast::stmt_foreach::ptr > ()); } +#line 2213 "parser.cpp" break; - case 38: // stmt: stmt_case + case 36: // stmt: stmt_switch #line 326 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_case = std::move(yystack_[0].value.as < ast::stmt_case::ptr > ()); } -#line 2206 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_switch = std::move(yystack_[0].value.as < ast::stmt_switch::ptr > ()); } +#line 2219 "parser.cpp" break; - case 39: // stmt: stmt_default + case 37: // stmt: stmt_case #line 327 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_default = std::move(yystack_[0].value.as < ast::stmt_default::ptr > ()); } -#line 2212 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_case = std::move(yystack_[0].value.as < ast::stmt_case::ptr > ()); } +#line 2225 "parser.cpp" break; - case 40: // stmt: stmt_break + case 38: // stmt: stmt_default #line 328 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_break = std::move(yystack_[0].value.as < ast::stmt_break::ptr > ()); } -#line 2218 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_default = std::move(yystack_[0].value.as < ast::stmt_default::ptr > ()); } +#line 2231 "parser.cpp" break; - case 41: // stmt: stmt_continue + case 39: // stmt: stmt_break #line 329 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_continue = std::move(yystack_[0].value.as < ast::stmt_continue::ptr > ()); } -#line 2224 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_break = std::move(yystack_[0].value.as < ast::stmt_break::ptr > ()); } +#line 2237 "parser.cpp" break; - case 42: // stmt: stmt_return + case 40: // stmt: stmt_continue #line 330 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_return = std::move(yystack_[0].value.as < ast::stmt_return::ptr > ()); } -#line 2230 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_continue = std::move(yystack_[0].value.as < ast::stmt_continue::ptr > ()); } +#line 2243 "parser.cpp" break; - case 43: // stmt: stmt_breakpoint + case 41: // stmt: stmt_return #line 331 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_breakpoint = std::move(yystack_[0].value.as < ast::stmt_breakpoint::ptr > ()); } -#line 2236 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_return = std::move(yystack_[0].value.as < ast::stmt_return::ptr > ()); } +#line 2249 "parser.cpp" break; - case 44: // stmt: stmt_prof_begin + case 42: // stmt: stmt_breakpoint #line 332 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_prof_begin = std::move(yystack_[0].value.as < ast::stmt_prof_begin::ptr > ()); } -#line 2242 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_breakpoint = std::move(yystack_[0].value.as < ast::stmt_breakpoint::ptr > ()); } +#line 2255 "parser.cpp" break; - case 45: // stmt: stmt_prof_end + case 43: // stmt: stmt_prof_begin #line 333 "parser.ypp" + { yylhs.value.as < ast::stmt > ().as_prof_begin = std::move(yystack_[0].value.as < ast::stmt_prof_begin::ptr > ()); } +#line 2261 "parser.cpp" + break; + + case 44: // stmt: stmt_prof_end +#line 334 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_prof_end = std::move(yystack_[0].value.as < ast::stmt_prof_end::ptr > ()); } -#line 2248 "parser.cpp" +#line 2267 "parser.cpp" break; - case 46: // stmt_dev: "/#" stmt_list "#/" -#line 337 "parser.ypp" - { yylhs.value.as < ast::stmt_list::ptr > () = std::move(yystack_[1].value.as < ast::stmt_list::ptr > ()); } -#line 2254 "parser.cpp" - break; - - case 47: // stmt_dev: "/#" "#/" + case 45: // stmt_or_dev: stmt #line 338 "parser.ypp" - { yylhs.value.as < ast::stmt_list::ptr > () = std::make_unique(yylhs.location); } -#line 2260 "parser.cpp" + { yylhs.value.as < ast::stmt > () = std::move(yystack_[0].value.as < ast::stmt > ()); } +#line 2273 "parser.cpp" break; - case 48: // stmt_block: "{" stmt_list "}" -#line 342 "parser.ypp" - { yylhs.value.as < ast::stmt_list::ptr > () = std::move(yystack_[1].value.as < ast::stmt_list::ptr > ()); } -#line 2266 "parser.cpp" + case 46: // stmt_or_dev: stmt_dev +#line 339 "parser.ypp" + { yylhs.value.as < ast::stmt > ().as_dev = std::move(yystack_[0].value.as < ast::stmt_dev::ptr > ()); } +#line 2279 "parser.cpp" break; - case 49: // stmt_block: "{" "}" -#line 343 "parser.ypp" - { yylhs.value.as < ast::stmt_list::ptr > () = std::make_unique(yylhs.location); } -#line 2272 "parser.cpp" - break; - - case 50: // stmt_list: stmt_list stmt -#line 348 "parser.ypp" + case 47: // stmt_list: stmt_list stmt +#line 344 "parser.ypp" { yylhs.value.as < ast::stmt_list::ptr > () = std::move(yystack_[1].value.as < ast::stmt_list::ptr > ()); yylhs.value.as < ast::stmt_list::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2278 "parser.cpp" +#line 2285 "parser.cpp" break; - case 51: // stmt_list: stmt -#line 350 "parser.ypp" + case 48: // stmt_list: stmt +#line 346 "parser.ypp" { yylhs.value.as < ast::stmt_list::ptr > () = std::make_unique(yylhs.location); yylhs.value.as < ast::stmt_list::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2284 "parser.cpp" +#line 2291 "parser.cpp" break; - case 52: // stmt_expr: expr_assign -#line 355 "parser.ypp" - { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2290 "parser.cpp" + case 49: // stmt_or_dev_list: stmt_or_dev_list stmt_or_dev +#line 351 "parser.ypp" + { yylhs.value.as < ast::stmt_list::ptr > () = std::move(yystack_[1].value.as < ast::stmt_list::ptr > ()); yylhs.value.as < ast::stmt_list::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::stmt > ())); } +#line 2297 "parser.cpp" break; - case 53: // stmt_expr: expr_increment + case 50: // stmt_or_dev_list: stmt_or_dev +#line 353 "parser.ypp" + { yylhs.value.as < ast::stmt_list::ptr > () = std::make_unique(yylhs.location); yylhs.value.as < ast::stmt_list::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::stmt > ())); } +#line 2303 "parser.cpp" + break; + + case 51: // stmt_dev: "/#" stmt_list "#/" #line 357 "parser.ypp" - { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2296 "parser.cpp" + { yylhs.value.as < ast::stmt_dev::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::stmt_list::ptr > ())); } +#line 2309 "parser.cpp" break; - case 54: // stmt_expr: expr_decrement -#line 359 "parser.ypp" - { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2302 "parser.cpp" + case 52: // stmt_dev: "/#" "#/" +#line 358 "parser.ypp" + { yylhs.value.as < ast::stmt_dev::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } +#line 2315 "parser.cpp" break; - case 55: // stmt_expr: %empty -#line 361 "parser.ypp" - { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } -#line 2308 "parser.cpp" + case 53: // stmt_block: "{" stmt_or_dev_list "}" +#line 362 "parser.ypp" + { yylhs.value.as < ast::stmt_list::ptr > () = std::move(yystack_[1].value.as < ast::stmt_list::ptr > ()); } +#line 2321 "parser.cpp" break; - case 56: // stmt_call: expr_call ";" -#line 366 "parser.ypp" - { yylhs.value.as < ast::stmt_call::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[1].value.as < ast::expr_call::ptr > ()))); } -#line 2314 "parser.cpp" + case 54: // stmt_block: "{" "}" +#line 363 "parser.ypp" + { yylhs.value.as < ast::stmt_list::ptr > () = std::make_unique(yylhs.location); } +#line 2327 "parser.cpp" break; - case 57: // stmt_call: expr_method ";" + case 55: // stmt_expr: expr_assign #line 368 "parser.ypp" + { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2333 "parser.cpp" + break; + + case 56: // stmt_expr: expr_increment +#line 370 "parser.ypp" + { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2339 "parser.cpp" + break; + + case 57: // stmt_expr: expr_decrement +#line 372 "parser.ypp" + { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2345 "parser.cpp" + break; + + case 58: // stmt_expr: %empty +#line 374 "parser.ypp" + { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } +#line 2351 "parser.cpp" + break; + + case 59: // stmt_call: expr_call ";" +#line 379 "parser.ypp" + { yylhs.value.as < ast::stmt_call::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[1].value.as < ast::expr_call::ptr > ()))); } +#line 2357 "parser.cpp" + break; + + case 60: // stmt_call: expr_method ";" +#line 381 "parser.ypp" { yylhs.value.as < ast::stmt_call::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[1].value.as < ast::expr_method::ptr > ()))); } -#line 2320 "parser.cpp" +#line 2363 "parser.cpp" break; - case 58: // stmt_assign: expr_assign ";" -#line 373 "parser.ypp" + case 61: // stmt_assign: expr_assign ";" +#line 386 "parser.ypp" { yylhs.value.as < ast::stmt_assign::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } -#line 2326 "parser.cpp" +#line 2369 "parser.cpp" break; - case 59: // stmt_assign: expr_increment ";" -#line 375 "parser.ypp" + case 62: // stmt_assign: expr_increment ";" +#line 388 "parser.ypp" { yylhs.value.as < ast::stmt_assign::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } -#line 2332 "parser.cpp" +#line 2375 "parser.cpp" break; - case 60: // stmt_assign: expr_decrement ";" -#line 377 "parser.ypp" + case 63: // stmt_assign: expr_decrement ";" +#line 390 "parser.ypp" { yylhs.value.as < ast::stmt_assign::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } -#line 2338 "parser.cpp" +#line 2381 "parser.cpp" break; - case 61: // stmt_endon: expr_object "endon" "(" expr ")" ";" -#line 382 "parser.ypp" + case 64: // stmt_endon: expr_object "endon" "(" expr ")" ";" +#line 395 "parser.ypp" { yylhs.value.as < ast::stmt_endon::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr > ())); } -#line 2344 "parser.cpp" +#line 2387 "parser.cpp" break; - case 62: // stmt_notify: expr_object "notify" "(" expr "," expr_arguments_no_empty ")" ";" -#line 387 "parser.ypp" + case 65: // stmt_notify: expr_object "notify" "(" expr "," expr_arguments_no_empty ")" ";" +#line 400 "parser.ypp" { yylhs.value.as < ast::stmt_notify::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < ast::expr > ()), std::move(yystack_[4].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr_arguments::ptr > ())); } -#line 2350 "parser.cpp" +#line 2393 "parser.cpp" break; - case 63: // stmt_notify: expr_object "notify" "(" expr ")" ";" -#line 389 "parser.ypp" + case 66: // stmt_notify: expr_object "notify" "(" expr ")" ";" +#line 402 "parser.ypp" { yylhs.value.as < ast::stmt_notify::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr > ()), std::make_unique(yylhs.location)); } -#line 2356 "parser.cpp" +#line 2399 "parser.cpp" break; - case 64: // stmt_wait: "wait" expr ";" -#line 394 "parser.ypp" + case 67: // stmt_wait: "wait" expr ";" +#line 407 "parser.ypp" { yylhs.value.as < ast::stmt_wait::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } -#line 2362 "parser.cpp" +#line 2405 "parser.cpp" break; - case 65: // stmt_waittill: expr_object "waittill" "(" expr "," expr_arguments_no_empty ")" ";" -#line 399 "parser.ypp" + case 68: // stmt_waittill: expr_object "waittill" "(" expr "," expr_arguments_no_empty ")" ";" +#line 412 "parser.ypp" { yylhs.value.as < ast::stmt_waittill::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < ast::expr > ()), std::move(yystack_[4].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr_arguments::ptr > ())); } -#line 2368 "parser.cpp" +#line 2411 "parser.cpp" break; - case 66: // stmt_waittill: expr_object "waittill" "(" expr ")" ";" -#line 401 "parser.ypp" + case 69: // stmt_waittill: expr_object "waittill" "(" expr ")" ";" +#line 414 "parser.ypp" { yylhs.value.as < ast::stmt_waittill::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr > ()), std::make_unique(yylhs.location)); } -#line 2374 "parser.cpp" +#line 2417 "parser.cpp" break; - case 67: // stmt_waittillmatch: expr_object "waittillmatch" "(" expr "," expr_arguments_no_empty ")" ";" -#line 406 "parser.ypp" + case 70: // stmt_waittillmatch: expr_object "waittillmatch" "(" expr "," expr_arguments_no_empty ")" ";" +#line 419 "parser.ypp" { yylhs.value.as < ast::stmt_waittillmatch::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < ast::expr > ()), std::move(yystack_[4].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr_arguments::ptr > ())); } -#line 2380 "parser.cpp" +#line 2423 "parser.cpp" break; - case 68: // stmt_waittillmatch: expr_object "waittillmatch" "(" expr ")" ";" -#line 408 "parser.ypp" + case 71: // stmt_waittillmatch: expr_object "waittillmatch" "(" expr ")" ";" +#line 421 "parser.ypp" { yylhs.value.as < ast::stmt_waittillmatch::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr > ()), std::make_unique(yylhs.location)); } -#line 2386 "parser.cpp" +#line 2429 "parser.cpp" break; - case 69: // stmt_waittillframeend: "waittillframeend" ";" -#line 413 "parser.ypp" + case 72: // stmt_waittillframeend: "waittillframeend" ";" +#line 426 "parser.ypp" { yylhs.value.as < ast::stmt_waittillframeend::ptr > () = std::make_unique(yylhs.location); } -#line 2392 "parser.cpp" +#line 2435 "parser.cpp" break; - case 70: // stmt_waitframe: "waitframe" ";" -#line 418 "parser.ypp" + case 73: // stmt_waitframe: "waitframe" ";" +#line 431 "parser.ypp" { yylhs.value.as < ast::stmt_waitframe::ptr > () = std::make_unique(yylhs.location); } -#line 2398 "parser.cpp" +#line 2441 "parser.cpp" break; - case 71: // stmt_waitframe: "waitframe" "(" ")" ";" -#line 420 "parser.ypp" + case 74: // stmt_waitframe: "waitframe" "(" ")" ";" +#line 433 "parser.ypp" { yylhs.value.as < ast::stmt_waitframe::ptr > () = std::make_unique(yylhs.location); } -#line 2404 "parser.cpp" +#line 2447 "parser.cpp" break; - case 72: // stmt_if: "if" "(" expr ")" stmt -#line 425 "parser.ypp" + case 75: // stmt_if: "if" "(" expr ")" stmt +#line 438 "parser.ypp" { yylhs.value.as < ast::stmt_if::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2410 "parser.cpp" +#line 2453 "parser.cpp" break; - case 73: // stmt_ifelse: "if" "(" expr ")" stmt "else" stmt -#line 430 "parser.ypp" + case 76: // stmt_ifelse: "if" "(" expr ")" stmt "else" stmt +#line 443 "parser.ypp" { yylhs.value.as < ast::stmt_ifelse::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::stmt > ()), std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2416 "parser.cpp" +#line 2459 "parser.cpp" break; - case 74: // stmt_while: "while" "(" expr ")" stmt -#line 435 "parser.ypp" + case 77: // stmt_while: "while" "(" expr ")" stmt +#line 448 "parser.ypp" { yylhs.value.as < ast::stmt_while::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2422 "parser.cpp" +#line 2465 "parser.cpp" break; - case 75: // stmt_dowhile: "do" stmt "while" "(" expr ")" ";" -#line 440 "parser.ypp" + case 78: // stmt_dowhile: "do" stmt "while" "(" expr ")" ";" +#line 453 "parser.ypp" { yylhs.value.as < ast::stmt_dowhile::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[5].value.as < ast::stmt > ())); } -#line 2428 "parser.cpp" +#line 2471 "parser.cpp" break; - case 76: // stmt_for: "for" "(" stmt_expr ";" expr_or_empty ";" stmt_expr ")" stmt -#line 445 "parser.ypp" + case 79: // stmt_for: "for" "(" stmt_expr ";" expr_or_empty ";" stmt_expr ")" stmt +#line 458 "parser.ypp" { yylhs.value.as < ast::stmt_for::ptr > () = std::make_unique(yylhs.location, ast::stmt(std::move(yystack_[6].value.as < ast::stmt_expr::ptr > ())), std::move(yystack_[4].value.as < ast::expr > ()), ast::stmt(std::move(yystack_[2].value.as < ast::stmt_expr::ptr > ())), std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2434 "parser.cpp" +#line 2477 "parser.cpp" break; - case 77: // stmt_foreach: "foreach" "(" expr_identifier "in" expr ")" stmt -#line 450 "parser.ypp" + case 80: // stmt_foreach: "foreach" "(" expr_identifier "in" expr ")" stmt +#line 463 "parser.ypp" { yylhs.value.as < ast::stmt_foreach::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[4].value.as < ast::expr_identifier::ptr > ())), std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2440 "parser.cpp" +#line 2483 "parser.cpp" break; - case 78: // stmt_foreach: "foreach" "(" expr_identifier "," expr_identifier "in" expr ")" stmt -#line 452 "parser.ypp" + case 81: // stmt_foreach: "foreach" "(" expr_identifier "," expr_identifier "in" expr ")" stmt +#line 465 "parser.ypp" { yylhs.value.as < ast::stmt_foreach::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[6].value.as < ast::expr_identifier::ptr > ())), ast::expr(std::move(yystack_[4].value.as < ast::expr_identifier::ptr > ())), std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2446 "parser.cpp" +#line 2489 "parser.cpp" break; - case 79: // stmt_switch: "switch" "(" expr ")" stmt_block -#line 457 "parser.ypp" + case 82: // stmt_switch: "switch" "(" expr ")" stmt_block +#line 470 "parser.ypp" { yylhs.value.as < ast::stmt_switch::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::stmt_list::ptr > ())); } -#line 2452 "parser.cpp" +#line 2495 "parser.cpp" break; - case 80: // stmt_case: "case" expr_integer ":" -#line 462 "parser.ypp" + case 83: // stmt_case: "case" expr_integer ":" +#line 475 "parser.ypp" { yylhs.value.as < ast::stmt_case::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[1].value.as < ast::expr_integer::ptr > ())), std::make_unique(yylhs.location)); } -#line 2458 "parser.cpp" +#line 2501 "parser.cpp" break; - case 81: // stmt_case: "case" expr_string ":" -#line 464 "parser.ypp" + case 84: // stmt_case: "case" expr_string ":" +#line 477 "parser.ypp" { yylhs.value.as < ast::stmt_case::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[1].value.as < ast::expr_string::ptr > ())), std::make_unique(yylhs.location)); } -#line 2464 "parser.cpp" +#line 2507 "parser.cpp" break; - case 82: // stmt_default: "default" ":" -#line 469 "parser.ypp" + case 85: // stmt_default: "default" ":" +#line 482 "parser.ypp" { yylhs.value.as < ast::stmt_default::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } -#line 2470 "parser.cpp" +#line 2513 "parser.cpp" break; - case 83: // stmt_break: "break" ";" -#line 474 "parser.ypp" + case 86: // stmt_break: "break" ";" +#line 487 "parser.ypp" { yylhs.value.as < ast::stmt_break::ptr > () = std::make_unique(yylhs.location); } -#line 2476 "parser.cpp" +#line 2519 "parser.cpp" break; - case 84: // stmt_continue: "continue" ";" -#line 479 "parser.ypp" + case 87: // stmt_continue: "continue" ";" +#line 492 "parser.ypp" { yylhs.value.as < ast::stmt_continue::ptr > () = std::make_unique(yylhs.location); } -#line 2482 "parser.cpp" +#line 2525 "parser.cpp" break; - case 85: // stmt_return: "return" expr ";" -#line 484 "parser.ypp" + case 88: // stmt_return: "return" expr ";" +#line 497 "parser.ypp" { yylhs.value.as < ast::stmt_return::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } -#line 2488 "parser.cpp" +#line 2531 "parser.cpp" break; - case 86: // stmt_return: "return" ";" -#line 486 "parser.ypp" + case 89: // stmt_return: "return" ";" +#line 499 "parser.ypp" { yylhs.value.as < ast::stmt_return::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } -#line 2494 "parser.cpp" +#line 2537 "parser.cpp" break; - case 87: // stmt_breakpoint: "breakpoint" ";" -#line 491 "parser.ypp" + case 90: // stmt_breakpoint: "breakpoint" ";" +#line 504 "parser.ypp" { yylhs.value.as < ast::stmt_breakpoint::ptr > () = std::make_unique(yylhs.location); } -#line 2500 "parser.cpp" +#line 2543 "parser.cpp" break; - case 88: // stmt_prof_begin: "prof_begin" "(" expr_arguments ")" ";" -#line 496 "parser.ypp" + case 91: // stmt_prof_begin: "prof_begin" "(" expr_arguments ")" ";" +#line 509 "parser.ypp" { yylhs.value.as < ast::stmt_prof_begin::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr_arguments::ptr > ())); } -#line 2506 "parser.cpp" +#line 2549 "parser.cpp" break; - case 89: // stmt_prof_end: "prof_end" "(" expr_arguments ")" ";" -#line 501 "parser.ypp" + case 92: // stmt_prof_end: "prof_end" "(" expr_arguments ")" ";" +#line 514 "parser.ypp" { yylhs.value.as < ast::stmt_prof_end::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr_arguments::ptr > ())); } -#line 2512 "parser.cpp" +#line 2555 "parser.cpp" break; - case 90: // expr: expr_ternary -#line 505 "parser.ypp" + case 93: // expr: expr_ternary +#line 518 "parser.ypp" { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } -#line 2518 "parser.cpp" +#line 2561 "parser.cpp" break; - case 91: // expr: expr_binary -#line 506 "parser.ypp" - { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } -#line 2524 "parser.cpp" - break; - - case 92: // expr: expr_primitive -#line 507 "parser.ypp" - { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } -#line 2530 "parser.cpp" - break; - - case 93: // expr_or_empty: expr -#line 511 "parser.ypp" - { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } -#line 2536 "parser.cpp" - break; - - case 94: // expr_or_empty: %empty -#line 512 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location); } -#line 2542 "parser.cpp" - break; - - case 95: // expr_assign: expr_object "=" expr -#line 517 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2548 "parser.cpp" - break; - - case 96: // expr_assign: expr_object "|=" expr + case 94: // expr: expr_binary #line 519 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2554 "parser.cpp" + { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } +#line 2567 "parser.cpp" break; - case 97: // expr_assign: expr_object "&=" expr -#line 521 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2560 "parser.cpp" + case 95: // expr: expr_primitive +#line 520 "parser.ypp" + { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } +#line 2573 "parser.cpp" break; - case 98: // expr_assign: expr_object "^=" expr -#line 523 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2566 "parser.cpp" + case 96: // expr_or_empty: expr +#line 524 "parser.ypp" + { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } +#line 2579 "parser.cpp" break; - case 99: // expr_assign: expr_object "<<=" expr + case 97: // expr_or_empty: %empty #line 525 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location); } +#line 2585 "parser.cpp" + break; + + case 98: // expr_assign: expr_object "=" expr +#line 530 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2591 "parser.cpp" + break; + + case 99: // expr_assign: expr_object "|=" expr +#line 532 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2597 "parser.cpp" + break; + + case 100: // expr_assign: expr_object "&=" expr +#line 534 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2603 "parser.cpp" + break; + + case 101: // expr_assign: expr_object "^=" expr +#line 536 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2609 "parser.cpp" + break; + + case 102: // expr_assign: expr_object "<<=" expr +#line 538 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()),std::move( yystack_[0].value.as < ast::expr > ())); } -#line 2572 "parser.cpp" +#line 2615 "parser.cpp" break; - case 100: // expr_assign: expr_object ">>=" expr -#line 527 "parser.ypp" + case 103: // expr_assign: expr_object ">>=" expr +#line 540 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2578 "parser.cpp" +#line 2621 "parser.cpp" break; - case 101: // expr_assign: expr_object "+=" expr -#line 529 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2584 "parser.cpp" - break; - - case 102: // expr_assign: expr_object "-=" expr -#line 531 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2590 "parser.cpp" - break; - - case 103: // expr_assign: expr_object "*=" expr -#line 533 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2596 "parser.cpp" - break; - - case 104: // expr_assign: expr_object "/=" expr -#line 535 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2602 "parser.cpp" - break; - - case 105: // expr_assign: expr_object "%=" expr -#line 537 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2608 "parser.cpp" - break; - - case 106: // expr_increment: "++" expr_object + case 104: // expr_assign: expr_object "+=" expr #line 542 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ()), true); } -#line 2614 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2627 "parser.cpp" break; - case 107: // expr_increment: expr_object "++" + case 105: // expr_assign: expr_object "-=" expr #line 544 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2633 "parser.cpp" + break; + + case 106: // expr_assign: expr_object "*=" expr +#line 546 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2639 "parser.cpp" + break; + + case 107: // expr_assign: expr_object "/=" expr +#line 548 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2645 "parser.cpp" + break; + + case 108: // expr_assign: expr_object "%=" expr +#line 550 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2651 "parser.cpp" + break; + + case 109: // expr_increment: "++" expr_object +#line 555 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ()), true); } +#line 2657 "parser.cpp" + break; + + case 110: // expr_increment: expr_object "++" +#line 557 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ()), false); } -#line 2620 "parser.cpp" +#line 2663 "parser.cpp" break; - case 108: // expr_decrement: "--" expr_object -#line 549 "parser.ypp" + case 111: // expr_decrement: "--" expr_object +#line 562 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ()), true); } -#line 2626 "parser.cpp" +#line 2669 "parser.cpp" break; - case 109: // expr_decrement: expr_object "--" -#line 551 "parser.ypp" + case 112: // expr_decrement: expr_object "--" +#line 564 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ()), false); } -#line 2632 "parser.cpp" +#line 2675 "parser.cpp" break; - case 110: // expr_ternary: expr "?" expr ":" expr -#line 556 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2638 "parser.cpp" - break; - - case 111: // expr_binary: expr "||" expr -#line 561 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2644 "parser.cpp" - break; - - case 112: // expr_binary: expr "&&" expr -#line 563 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2650 "parser.cpp" - break; - - case 113: // expr_binary: expr "==" expr -#line 565 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2656 "parser.cpp" - break; - - case 114: // expr_binary: expr "!=" expr -#line 567 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2662 "parser.cpp" - break; - - case 115: // expr_binary: expr "<=" expr + case 113: // expr_ternary: expr "?" expr ":" expr #line 569 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2681 "parser.cpp" + break; + + case 114: // expr_binary: expr "||" expr +#line 574 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2687 "parser.cpp" + break; + + case 115: // expr_binary: expr "&&" expr +#line 576 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2693 "parser.cpp" + break; + + case 116: // expr_binary: expr "==" expr +#line 578 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2699 "parser.cpp" + break; + + case 117: // expr_binary: expr "!=" expr +#line 580 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2705 "parser.cpp" + break; + + case 118: // expr_binary: expr "<=" expr +#line 582 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2668 "parser.cpp" +#line 2711 "parser.cpp" break; - case 116: // expr_binary: expr ">=" expr -#line 571 "parser.ypp" + case 119: // expr_binary: expr ">=" expr +#line 584 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2674 "parser.cpp" +#line 2717 "parser.cpp" break; - case 117: // expr_binary: expr "<" expr -#line 573 "parser.ypp" + case 120: // expr_binary: expr "<" expr +#line 586 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2680 "parser.cpp" +#line 2723 "parser.cpp" break; - case 118: // expr_binary: expr ">" expr -#line 575 "parser.ypp" + case 121: // expr_binary: expr ">" expr +#line 588 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2686 "parser.cpp" +#line 2729 "parser.cpp" break; - case 119: // expr_binary: expr "|" expr -#line 577 "parser.ypp" + case 122: // expr_binary: expr "|" expr +#line 590 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2692 "parser.cpp" +#line 2735 "parser.cpp" break; - case 120: // expr_binary: expr "&" expr -#line 579 "parser.ypp" + case 123: // expr_binary: expr "&" expr +#line 592 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2698 "parser.cpp" +#line 2741 "parser.cpp" break; - case 121: // expr_binary: expr "^" expr -#line 581 "parser.ypp" + case 124: // expr_binary: expr "^" expr +#line 594 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2704 "parser.cpp" +#line 2747 "parser.cpp" break; - case 122: // expr_binary: expr "<<" expr -#line 583 "parser.ypp" + case 125: // expr_binary: expr "<<" expr +#line 596 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2710 "parser.cpp" +#line 2753 "parser.cpp" break; - case 123: // expr_binary: expr ">>" expr -#line 585 "parser.ypp" + case 126: // expr_binary: expr ">>" expr +#line 598 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2716 "parser.cpp" +#line 2759 "parser.cpp" break; - case 124: // expr_binary: expr "+" expr -#line 587 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2722 "parser.cpp" - break; - - case 125: // expr_binary: expr "-" expr -#line 589 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2728 "parser.cpp" - break; - - case 126: // expr_binary: expr "*" expr -#line 591 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2734 "parser.cpp" - break; - - case 127: // expr_binary: expr "/" expr -#line 593 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2740 "parser.cpp" - break; - - case 128: // expr_binary: expr "%" expr -#line 595 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2746 "parser.cpp" - break; - - case 129: // expr_primitive: expr_complement -#line 599 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_complement::ptr > ()); } -#line 2752 "parser.cpp" - break; - - case 130: // expr_primitive: expr_not + case 127: // expr_binary: expr "+" expr #line 600 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_not::ptr > ()); } -#line 2758 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2765 "parser.cpp" break; - case 131: // expr_primitive: expr_call -#line 601 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_call::ptr > ()); } -#line 2764 "parser.cpp" - break; - - case 132: // expr_primitive: expr_method + case 128: // expr_binary: expr "-" expr #line 602 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_method::ptr > ()); } -#line 2770 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2771 "parser.cpp" break; - case 133: // expr_primitive: expr_add_array -#line 603 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_add_array::ptr > ()); } -#line 2776 "parser.cpp" - break; - - case 134: // expr_primitive: expr_reference + case 129: // expr_binary: expr "*" expr #line 604 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_reference::ptr > ()); } -#line 2782 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2777 "parser.cpp" break; - case 135: // expr_primitive: expr_array -#line 605 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_array::ptr > ()); } -#line 2788 "parser.cpp" - break; - - case 136: // expr_primitive: expr_field + case 130: // expr_binary: expr "/" expr #line 606 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_field::ptr > ()); } -#line 2794 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2783 "parser.cpp" break; - case 137: // expr_primitive: expr_size -#line 607 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_size::ptr > ()); } -#line 2800 "parser.cpp" - break; - - case 138: // expr_primitive: expr_paren + case 131: // expr_binary: expr "%" expr #line 608 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_paren::ptr > ()); } -#line 2806 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2789 "parser.cpp" break; - case 139: // expr_primitive: expr_thisthread -#line 609 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_thisthread::ptr > ()); } -#line 2812 "parser.cpp" - break; - - case 140: // expr_primitive: expr_empty_array -#line 610 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_empty_array::ptr > ()); } -#line 2818 "parser.cpp" - break; - - case 141: // expr_primitive: expr_undefined -#line 611 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_undefined::ptr > ()); } -#line 2824 "parser.cpp" - break; - - case 142: // expr_primitive: expr_game + case 132: // expr_primitive: expr_complement #line 612 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_game::ptr > ()); } -#line 2830 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_complement::ptr > ()); } +#line 2795 "parser.cpp" break; - case 143: // expr_primitive: expr_self + case 133: // expr_primitive: expr_not #line 613 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_self::ptr > ()); } -#line 2836 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_not::ptr > ()); } +#line 2801 "parser.cpp" break; - case 144: // expr_primitive: expr_anim + case 134: // expr_primitive: expr_call #line 614 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_anim::ptr > ()); } -#line 2842 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_call::ptr > ()); } +#line 2807 "parser.cpp" break; - case 145: // expr_primitive: expr_level + case 135: // expr_primitive: expr_method #line 615 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_level::ptr > ()); } -#line 2848 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_method::ptr > ()); } +#line 2813 "parser.cpp" break; - case 146: // expr_primitive: expr_animation + case 136: // expr_primitive: expr_add_array #line 616 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_animation::ptr > ()); } -#line 2854 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_add_array::ptr > ()); } +#line 2819 "parser.cpp" break; - case 147: // expr_primitive: expr_animtree + case 137: // expr_primitive: expr_reference #line 617 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_animtree::ptr > ()); } -#line 2860 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_reference::ptr > ()); } +#line 2825 "parser.cpp" break; - case 148: // expr_primitive: expr_identifier + case 138: // expr_primitive: expr_array #line 618 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ()); } -#line 2866 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_array::ptr > ()); } +#line 2831 "parser.cpp" break; - case 149: // expr_primitive: expr_istring + case 139: // expr_primitive: expr_field #line 619 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_istring::ptr > ()); } -#line 2872 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_field::ptr > ()); } +#line 2837 "parser.cpp" break; - case 150: // expr_primitive: expr_string + case 140: // expr_primitive: expr_size #line 620 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_string::ptr > ()); } -#line 2878 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_size::ptr > ()); } +#line 2843 "parser.cpp" break; - case 151: // expr_primitive: expr_color + case 141: // expr_primitive: expr_paren #line 621 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_color::ptr > ()); } -#line 2884 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_paren::ptr > ()); } +#line 2849 "parser.cpp" break; - case 152: // expr_primitive: expr_vector + case 142: // expr_primitive: expr_thisthread #line 622 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_vector::ptr > ()); } -#line 2890 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_thisthread::ptr > ()); } +#line 2855 "parser.cpp" break; - case 153: // expr_primitive: expr_float + case 143: // expr_primitive: expr_empty_array #line 623 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_float::ptr > ()); } -#line 2896 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_empty_array::ptr > ()); } +#line 2861 "parser.cpp" break; - case 154: // expr_primitive: expr_integer + case 144: // expr_primitive: expr_undefined #line 624 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_integer::ptr > ()); } -#line 2902 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_undefined::ptr > ()); } +#line 2867 "parser.cpp" break; - case 155: // expr_primitive: expr_false + case 145: // expr_primitive: expr_game #line 625 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_false::ptr > ()); } -#line 2908 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_game::ptr > ()); } +#line 2873 "parser.cpp" break; - case 156: // expr_primitive: expr_true + case 146: // expr_primitive: expr_self #line 626 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_true::ptr > ()); } -#line 2914 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_self::ptr > ()); } +#line 2879 "parser.cpp" break; - case 157: // expr_complement: "~" expr + case 147: // expr_primitive: expr_anim +#line 627 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_anim::ptr > ()); } +#line 2885 "parser.cpp" + break; + + case 148: // expr_primitive: expr_level +#line 628 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_level::ptr > ()); } +#line 2891 "parser.cpp" + break; + + case 149: // expr_primitive: expr_animation +#line 629 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_animation::ptr > ()); } +#line 2897 "parser.cpp" + break; + + case 150: // expr_primitive: expr_animtree +#line 630 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_animtree::ptr > ()); } +#line 2903 "parser.cpp" + break; + + case 151: // expr_primitive: expr_identifier #line 631 "parser.ypp" - { yylhs.value.as < ast::expr_complement::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2920 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ()); } +#line 2909 "parser.cpp" break; - case 158: // expr_not: "!" expr + case 152: // expr_primitive: expr_istring +#line 632 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_istring::ptr > ()); } +#line 2915 "parser.cpp" + break; + + case 153: // expr_primitive: expr_string +#line 633 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_string::ptr > ()); } +#line 2921 "parser.cpp" + break; + + case 154: // expr_primitive: expr_color +#line 634 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_color::ptr > ()); } +#line 2927 "parser.cpp" + break; + + case 155: // expr_primitive: expr_vector +#line 635 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_vector::ptr > ()); } +#line 2933 "parser.cpp" + break; + + case 156: // expr_primitive: expr_float #line 636 "parser.ypp" - { yylhs.value.as < ast::expr_not::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2926 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_float::ptr > ()); } +#line 2939 "parser.cpp" break; - case 159: // expr_call: expr_function -#line 640 "parser.ypp" - { yylhs.value.as < ast::expr_call::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::call > ())); } -#line 2932 "parser.cpp" + case 157: // expr_primitive: expr_integer +#line 637 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_integer::ptr > ()); } +#line 2945 "parser.cpp" break; - case 160: // expr_call: expr_pointer -#line 641 "parser.ypp" - { yylhs.value.as < ast::expr_call::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::call > ())); } -#line 2938 "parser.cpp" + case 158: // expr_primitive: expr_false +#line 638 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_false::ptr > ()); } +#line 2951 "parser.cpp" break; - case 161: // expr_method: expr_object expr_function + case 159: // expr_primitive: expr_true +#line 639 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_true::ptr > ()); } +#line 2957 "parser.cpp" + break; + + case 160: // expr_complement: "~" expr #line 644 "parser.ypp" - { yylhs.value.as < ast::expr_method::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::call > ())); } -#line 2944 "parser.cpp" + { yylhs.value.as < ast::expr_complement::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2963 "parser.cpp" break; - case 162: // expr_method: expr_object expr_pointer -#line 645 "parser.ypp" - { yylhs.value.as < ast::expr_method::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::call > ())); } -#line 2950 "parser.cpp" + case 161: // expr_not: "!" expr +#line 649 "parser.ypp" + { yylhs.value.as < ast::expr_not::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2969 "parser.cpp" break; - case 163: // expr_function: expr_identifier "(" expr_arguments ")" -#line 650 "parser.ypp" - { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::normal); } -#line 2956 "parser.cpp" + case 162: // expr_call: expr_function +#line 653 "parser.ypp" + { yylhs.value.as < ast::expr_call::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::call > ())); } +#line 2975 "parser.cpp" break; - case 164: // expr_function: expr_path "::" expr_identifier "(" expr_arguments ")" -#line 652 "parser.ypp" - { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr_path::ptr > ()), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::normal); } -#line 2962 "parser.cpp" - break; - - case 165: // expr_function: "thread" expr_identifier "(" expr_arguments ")" + case 163: // expr_call: expr_pointer #line 654 "parser.ypp" - { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::thread); } -#line 2968 "parser.cpp" + { yylhs.value.as < ast::expr_call::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::call > ())); } +#line 2981 "parser.cpp" break; - case 166: // expr_function: "thread" expr_path "::" expr_identifier "(" expr_arguments ")" -#line 656 "parser.ypp" - { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr_path::ptr > ()), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::thread); } -#line 2974 "parser.cpp" + case 164: // expr_method: expr_object expr_function +#line 657 "parser.ypp" + { yylhs.value.as < ast::expr_method::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::call > ())); } +#line 2987 "parser.cpp" break; - case 167: // expr_function: "childthread" expr_identifier "(" expr_arguments ")" + case 165: // expr_method: expr_object expr_pointer #line 658 "parser.ypp" - { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::childthread); } -#line 2980 "parser.cpp" + { yylhs.value.as < ast::expr_method::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::call > ())); } +#line 2993 "parser.cpp" break; - case 168: // expr_function: "childthread" expr_path "::" expr_identifier "(" expr_arguments ")" -#line 660 "parser.ypp" - { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr_path::ptr > ()), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::childthread); } -#line 2986 "parser.cpp" + case 166: // expr_function: expr_identifier "(" expr_arguments ")" +#line 663 "parser.ypp" + { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::normal); } +#line 2999 "parser.cpp" break; - case 169: // expr_pointer: "[" "[" expr "]" "]" "(" expr_arguments ")" + case 167: // expr_function: expr_path "::" expr_identifier "(" expr_arguments ")" #line 665 "parser.ypp" - { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::normal); } -#line 2992 "parser.cpp" + { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr_path::ptr > ()), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::normal); } +#line 3005 "parser.cpp" break; - case 170: // expr_pointer: "thread" "[" "[" expr "]" "]" "(" expr_arguments ")" + case 168: // expr_function: "thread" expr_identifier "(" expr_arguments ")" #line 667 "parser.ypp" - { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::thread); } -#line 2998 "parser.cpp" + { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::thread); } +#line 3011 "parser.cpp" break; - case 171: // expr_pointer: "childthread" "[" "[" expr "]" "]" "(" expr_arguments ")" + case 169: // expr_function: "thread" expr_path "::" expr_identifier "(" expr_arguments ")" #line 669 "parser.ypp" - { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::childthread); } -#line 3004 "parser.cpp" + { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr_path::ptr > ()), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::thread); } +#line 3017 "parser.cpp" break; - case 172: // expr_pointer: "call" "[" "[" expr "]" "]" "(" expr_arguments ")" + case 170: // expr_function: "childthread" expr_identifier "(" expr_arguments ")" #line 671 "parser.ypp" + { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::childthread); } +#line 3023 "parser.cpp" + break; + + case 171: // expr_function: "childthread" expr_path "::" expr_identifier "(" expr_arguments ")" +#line 673 "parser.ypp" + { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr_path::ptr > ()), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::childthread); } +#line 3029 "parser.cpp" + break; + + case 172: // expr_pointer: "[" "[" expr "]" "]" "(" expr_arguments ")" +#line 678 "parser.ypp" + { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::normal); } +#line 3035 "parser.cpp" + break; + + case 173: // expr_pointer: "thread" "[" "[" expr "]" "]" "(" expr_arguments ")" +#line 680 "parser.ypp" + { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::thread); } +#line 3041 "parser.cpp" + break; + + case 174: // expr_pointer: "childthread" "[" "[" expr "]" "]" "(" expr_arguments ")" +#line 682 "parser.ypp" + { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::childthread); } +#line 3047 "parser.cpp" + break; + + case 175: // expr_pointer: "call" "[" "[" expr "]" "]" "(" expr_arguments ")" +#line 684 "parser.ypp" { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::builtin); } -#line 3010 "parser.cpp" +#line 3053 "parser.cpp" break; - case 173: // expr_add_array: "[" expr_arguments_no_empty "]" -#line 676 "parser.ypp" + case 176: // expr_add_array: "[" expr_arguments_no_empty "]" +#line 689 "parser.ypp" { yylhs.value.as < ast::expr_add_array::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ())); } -#line 3016 "parser.cpp" +#line 3059 "parser.cpp" break; - case 174: // expr_parameters: expr_parameters "," expr_identifier -#line 681 "parser.ypp" + case 177: // expr_parameters: expr_parameters "," expr_identifier +#line 694 "parser.ypp" { yylhs.value.as < ast::expr_parameters::ptr > () = std::move(yystack_[2].value.as < ast::expr_parameters::ptr > ()); yylhs.value.as < ast::expr_parameters::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ())); } -#line 3022 "parser.cpp" +#line 3065 "parser.cpp" break; - case 175: // expr_parameters: expr_identifier -#line 683 "parser.ypp" + case 178: // expr_parameters: expr_identifier +#line 696 "parser.ypp" { yylhs.value.as < ast::expr_parameters::ptr > () = std::make_unique(yylhs.location); yylhs.value.as < ast::expr_parameters::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ())); } -#line 3028 "parser.cpp" +#line 3071 "parser.cpp" break; - case 176: // expr_parameters: %empty -#line 685 "parser.ypp" + case 179: // expr_parameters: %empty +#line 698 "parser.ypp" { yylhs.value.as < ast::expr_parameters::ptr > () = std::make_unique(yylhs.location); } -#line 3034 "parser.cpp" +#line 3077 "parser.cpp" break; - case 177: // expr_arguments: expr_arguments_no_empty -#line 690 "parser.ypp" + case 180: // expr_arguments: expr_arguments_no_empty +#line 703 "parser.ypp" { yylhs.value.as < ast::expr_arguments::ptr > () = std::move(yystack_[0].value.as < ast::expr_arguments::ptr > ()); } -#line 3040 "parser.cpp" +#line 3083 "parser.cpp" break; - case 178: // expr_arguments: %empty -#line 692 "parser.ypp" + case 181: // expr_arguments: %empty +#line 705 "parser.ypp" { yylhs.value.as < ast::expr_arguments::ptr > () = std::make_unique(yylhs.location); } -#line 3046 "parser.cpp" +#line 3089 "parser.cpp" break; - case 179: // expr_arguments_no_empty: expr_arguments "," expr -#line 697 "parser.ypp" + case 182: // expr_arguments_no_empty: expr_arguments "," expr +#line 710 "parser.ypp" { yylhs.value.as < ast::expr_arguments::ptr > () = std::move(yystack_[2].value.as < ast::expr_arguments::ptr > ()); yylhs.value.as < ast::expr_arguments::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::expr > ())); } -#line 3052 "parser.cpp" +#line 3095 "parser.cpp" break; - case 180: // expr_arguments_no_empty: expr -#line 699 "parser.ypp" + case 183: // expr_arguments_no_empty: expr +#line 712 "parser.ypp" { yylhs.value.as < ast::expr_arguments::ptr > () = std::make_unique(yylhs.location); yylhs.value.as < ast::expr_arguments::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::expr > ())); } -#line 3058 "parser.cpp" +#line 3101 "parser.cpp" break; - case 181: // expr_reference: "::" expr_identifier -#line 704 "parser.ypp" + case 184: // expr_reference: "::" expr_identifier +#line 717 "parser.ypp" { yylhs.value.as < ast::expr_reference::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ())); } -#line 3064 "parser.cpp" +#line 3107 "parser.cpp" break; - case 182: // expr_reference: expr_path "::" expr_identifier -#line 706 "parser.ypp" + case 185: // expr_reference: expr_path "::" expr_identifier +#line 719 "parser.ypp" { yylhs.value.as < ast::expr_reference::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr_path::ptr > ()), std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ())); } -#line 3070 "parser.cpp" +#line 3113 "parser.cpp" break; - case 183: // expr_array: expr_object "[" expr "]" -#line 711 "parser.ypp" + case 186: // expr_array: expr_object "[" expr "]" +#line 724 "parser.ypp" { yylhs.value.as < ast::expr_array::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[3].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr > ())); } -#line 3076 "parser.cpp" +#line 3119 "parser.cpp" break; - case 184: // expr_field: expr_object "." expr_identifier -#line 716 "parser.ypp" + case 187: // expr_field: expr_object "." expr_identifier +#line 729 "parser.ypp" { yylhs.value.as < ast::expr_field::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ())); } -#line 3082 "parser.cpp" +#line 3125 "parser.cpp" break; - case 185: // expr_field: expr_object "field" -#line 718 "parser.ypp" + case 188: // expr_field: expr_object "field" +#line 731 "parser.ypp" { yylhs.value.as < ast::expr_field::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ()), std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ())); } -#line 3088 "parser.cpp" +#line 3131 "parser.cpp" break; - case 186: // expr_size: expr_object ".size" -#line 723 "parser.ypp" - { yylhs.value.as < ast::expr_size::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } -#line 3094 "parser.cpp" - break; - - case 187: // expr_paren: "(" expr ")" -#line 728 "parser.ypp" - { yylhs.value.as < ast::expr_paren::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } -#line 3100 "parser.cpp" - break; - - case 188: // expr_object: expr_call -#line 732 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_call::ptr > ()); } -#line 3106 "parser.cpp" - break; - - case 189: // expr_object: expr_method -#line 733 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_method::ptr > ()); } -#line 3112 "parser.cpp" - break; - - case 190: // expr_object: expr_array -#line 734 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_array::ptr > ()); } -#line 3118 "parser.cpp" - break; - - case 191: // expr_object: expr_field -#line 735 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_field::ptr > ()); } -#line 3124 "parser.cpp" - break; - - case 192: // expr_object: expr_game + case 189: // expr_size: expr_object ".size" #line 736 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_game::ptr > ()); } -#line 3130 "parser.cpp" + { yylhs.value.as < ast::expr_size::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } +#line 3137 "parser.cpp" break; - case 193: // expr_object: expr_self -#line 737 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_self::ptr > ()); } -#line 3136 "parser.cpp" + case 190: // expr_paren: "(" expr ")" +#line 741 "parser.ypp" + { yylhs.value.as < ast::expr_paren::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } +#line 3143 "parser.cpp" break; - case 194: // expr_object: expr_anim -#line 738 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_anim::ptr > ()); } -#line 3142 "parser.cpp" - break; - - case 195: // expr_object: expr_level -#line 739 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_level::ptr > ()); } -#line 3148 "parser.cpp" - break; - - case 196: // expr_object: expr_identifier -#line 740 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ()); } -#line 3154 "parser.cpp" - break; - - case 197: // expr_thisthread: "thisthread" + case 191: // expr_object: expr_call #line 745 "parser.ypp" - { yylhs.value.as < ast::expr_thisthread::ptr > () = std::make_unique(yylhs.location); } -#line 3160 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_call::ptr > ()); } +#line 3149 "parser.cpp" break; - case 198: // expr_empty_array: "[" "]" + case 192: // expr_object: expr_method +#line 746 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_method::ptr > ()); } +#line 3155 "parser.cpp" + break; + + case 193: // expr_object: expr_array +#line 747 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_array::ptr > ()); } +#line 3161 "parser.cpp" + break; + + case 194: // expr_object: expr_field +#line 748 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_field::ptr > ()); } +#line 3167 "parser.cpp" + break; + + case 195: // expr_object: expr_game +#line 749 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_game::ptr > ()); } +#line 3173 "parser.cpp" + break; + + case 196: // expr_object: expr_self #line 750 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_self::ptr > ()); } +#line 3179 "parser.cpp" + break; + + case 197: // expr_object: expr_anim +#line 751 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_anim::ptr > ()); } +#line 3185 "parser.cpp" + break; + + case 198: // expr_object: expr_level +#line 752 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_level::ptr > ()); } +#line 3191 "parser.cpp" + break; + + case 199: // expr_object: expr_identifier +#line 753 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ()); } +#line 3197 "parser.cpp" + break; + + case 200: // expr_thisthread: "thisthread" +#line 758 "parser.ypp" + { yylhs.value.as < ast::expr_thisthread::ptr > () = std::make_unique(yylhs.location); } +#line 3203 "parser.cpp" + break; + + case 201: // expr_empty_array: "[" "]" +#line 763 "parser.ypp" { yylhs.value.as < ast::expr_empty_array::ptr > () = std::make_unique(yylhs.location); } -#line 3166 "parser.cpp" +#line 3209 "parser.cpp" break; - case 199: // expr_undefined: "undefined" -#line 755 "parser.ypp" + case 202: // expr_undefined: "undefined" +#line 768 "parser.ypp" { yylhs.value.as < ast::expr_undefined::ptr > () = std::make_unique(yylhs.location); } -#line 3172 "parser.cpp" +#line 3215 "parser.cpp" break; - case 200: // expr_game: "game" -#line 760 "parser.ypp" + case 203: // expr_game: "game" +#line 773 "parser.ypp" { yylhs.value.as < ast::expr_game::ptr > () = std::make_unique(yylhs.location); } -#line 3178 "parser.cpp" +#line 3221 "parser.cpp" break; - case 201: // expr_self: "self" -#line 765 "parser.ypp" + case 204: // expr_self: "self" +#line 778 "parser.ypp" { yylhs.value.as < ast::expr_self::ptr > () = std::make_unique(yylhs.location); } -#line 3184 "parser.cpp" +#line 3227 "parser.cpp" break; - case 202: // expr_anim: "anim" -#line 770 "parser.ypp" + case 205: // expr_anim: "anim" +#line 783 "parser.ypp" { yylhs.value.as < ast::expr_anim::ptr > () = std::make_unique(yylhs.location); } -#line 3190 "parser.cpp" +#line 3233 "parser.cpp" break; - case 203: // expr_level: "level" -#line 775 "parser.ypp" + case 206: // expr_level: "level" +#line 788 "parser.ypp" { yylhs.value.as < ast::expr_level::ptr > () = std::make_unique(yylhs.location); } -#line 3196 "parser.cpp" +#line 3239 "parser.cpp" break; - case 204: // expr_animation: "%" "identifier" -#line 780 "parser.ypp" + case 207: // expr_animation: "%" "identifier" +#line 793 "parser.ypp" { yylhs.value.as < ast::expr_animation::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3202 "parser.cpp" +#line 3245 "parser.cpp" break; - case 205: // expr_animtree: "#animtree" -#line 785 "parser.ypp" + case 208: // expr_animtree: "#animtree" +#line 798 "parser.ypp" { yylhs.value.as < ast::expr_animtree::ptr > () = std::make_unique(yylhs.location); } -#line 3208 "parser.cpp" +#line 3251 "parser.cpp" break; - case 206: // expr_identifier: "identifier" -#line 790 "parser.ypp" + case 209: // expr_identifier: "identifier" +#line 803 "parser.ypp" { yylhs.value.as < ast::expr_identifier::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3214 "parser.cpp" +#line 3257 "parser.cpp" break; - case 207: // expr_path: "path" -#line 795 "parser.ypp" + case 210: // expr_path: "path" +#line 808 "parser.ypp" { yylhs.value.as < ast::expr_path::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3220 "parser.cpp" +#line 3263 "parser.cpp" break; - case 208: // expr_path: expr_identifier -#line 797 "parser.ypp" + case 211: // expr_path: expr_identifier +#line 810 "parser.ypp" { yylhs.value.as < ast::expr_path::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < ast::expr_identifier::ptr > ()->value); } -#line 3226 "parser.cpp" +#line 3269 "parser.cpp" break; - case 209: // expr_istring: "localized string" -#line 802 "parser.ypp" + case 212: // expr_istring: "localized string" +#line 815 "parser.ypp" { yylhs.value.as < ast::expr_istring::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3232 "parser.cpp" +#line 3275 "parser.cpp" break; - case 210: // expr_string: "string literal" -#line 807 "parser.ypp" + case 213: // expr_string: "string literal" +#line 820 "parser.ypp" { yylhs.value.as < ast::expr_string::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3238 "parser.cpp" +#line 3281 "parser.cpp" break; - case 211: // expr_color: "color" -#line 812 "parser.ypp" + case 214: // expr_color: "color" +#line 825 "parser.ypp" { yylhs.value.as < ast::expr_color::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3244 "parser.cpp" +#line 3287 "parser.cpp" break; - case 212: // expr_vector: "(" expr "," expr "," expr ")" -#line 817 "parser.ypp" + case 215: // expr_vector: "(" expr "," expr "," expr ")" +#line 830 "parser.ypp" { yylhs.value.as < ast::expr_vector::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[3].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr > ())); } -#line 3250 "parser.cpp" +#line 3293 "parser.cpp" break; - case 213: // expr_float: "-" "float" -#line 822 "parser.ypp" + case 216: // expr_float: "-" "float" +#line 835 "parser.ypp" { yylhs.value.as < ast::expr_float::ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } -#line 3256 "parser.cpp" +#line 3299 "parser.cpp" break; - case 214: // expr_float: "float" -#line 824 "parser.ypp" + case 217: // expr_float: "float" +#line 837 "parser.ypp" { yylhs.value.as < ast::expr_float::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3262 "parser.cpp" +#line 3305 "parser.cpp" break; - case 215: // expr_integer: "-" "integer" -#line 829 "parser.ypp" + case 218: // expr_integer: "-" "integer" +#line 842 "parser.ypp" { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } -#line 3268 "parser.cpp" +#line 3311 "parser.cpp" break; - case 216: // expr_integer: "integer" -#line 831 "parser.ypp" + case 219: // expr_integer: "integer" +#line 844 "parser.ypp" { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3274 "parser.cpp" +#line 3317 "parser.cpp" break; - case 217: // expr_false: "false" -#line 836 "parser.ypp" + case 220: // expr_false: "false" +#line 849 "parser.ypp" { yylhs.value.as < ast::expr_false::ptr > () = std::make_unique(yylhs.location); } -#line 3280 "parser.cpp" +#line 3323 "parser.cpp" break; - case 218: // expr_true: "true" -#line 841 "parser.ypp" + case 221: // expr_true: "true" +#line 854 "parser.ypp" { yylhs.value.as < ast::expr_true::ptr > () = std::make_unique(yylhs.location); } -#line 3286 "parser.cpp" +#line 3329 "parser.cpp" break; -#line 3290 "parser.cpp" +#line 3333 "parser.cpp" default: break; @@ -3485,24 +3528,25 @@ namespace xsk { namespace gsc { namespace h1 { "localized string", "color", "float", "integer", "ADD_ARRAY", "THEN", "TERN", "NEG", "ANIMREF", "PREINC", "PREDEC", "POSTINC", "POSTDEC", "$accept", "root", "program", "inline", "include", "declaration", - "decl_usingtree", "decl_constant", "decl_thread", "stmt", "stmt_dev", - "stmt_block", "stmt_list", "stmt_expr", "stmt_call", "stmt_assign", - "stmt_endon", "stmt_notify", "stmt_wait", "stmt_waittill", - "stmt_waittillmatch", "stmt_waittillframeend", "stmt_waitframe", - "stmt_if", "stmt_ifelse", "stmt_while", "stmt_dowhile", "stmt_for", - "stmt_foreach", "stmt_switch", "stmt_case", "stmt_default", "stmt_break", - "stmt_continue", "stmt_return", "stmt_breakpoint", "stmt_prof_begin", - "stmt_prof_end", "expr", "expr_or_empty", "expr_assign", - "expr_increment", "expr_decrement", "expr_ternary", "expr_binary", - "expr_primitive", "expr_complement", "expr_not", "expr_call", - "expr_method", "expr_function", "expr_pointer", "expr_add_array", - "expr_parameters", "expr_arguments", "expr_arguments_no_empty", - "expr_reference", "expr_array", "expr_field", "expr_size", "expr_paren", - "expr_object", "expr_thisthread", "expr_empty_array", "expr_undefined", - "expr_game", "expr_self", "expr_anim", "expr_level", "expr_animation", - "expr_animtree", "expr_identifier", "expr_path", "expr_istring", - "expr_string", "expr_color", "expr_vector", "expr_float", "expr_integer", - "expr_false", "expr_true", YY_NULLPTR + "decl_usingtree", "decl_constant", "decl_thread", "stmt", "stmt_or_dev", + "stmt_list", "stmt_or_dev_list", "stmt_dev", "stmt_block", "stmt_expr", + "stmt_call", "stmt_assign", "stmt_endon", "stmt_notify", "stmt_wait", + "stmt_waittill", "stmt_waittillmatch", "stmt_waittillframeend", + "stmt_waitframe", "stmt_if", "stmt_ifelse", "stmt_while", "stmt_dowhile", + "stmt_for", "stmt_foreach", "stmt_switch", "stmt_case", "stmt_default", + "stmt_break", "stmt_continue", "stmt_return", "stmt_breakpoint", + "stmt_prof_begin", "stmt_prof_end", "expr", "expr_or_empty", + "expr_assign", "expr_increment", "expr_decrement", "expr_ternary", + "expr_binary", "expr_primitive", "expr_complement", "expr_not", + "expr_call", "expr_method", "expr_function", "expr_pointer", + "expr_add_array", "expr_parameters", "expr_arguments", + "expr_arguments_no_empty", "expr_reference", "expr_array", "expr_field", + "expr_size", "expr_paren", "expr_object", "expr_thisthread", + "expr_empty_array", "expr_undefined", "expr_game", "expr_self", + "expr_anim", "expr_level", "expr_animation", "expr_animtree", + "expr_identifier", "expr_path", "expr_istring", "expr_string", + "expr_color", "expr_vector", "expr_float", "expr_integer", "expr_false", + "expr_true", YY_NULLPTR }; return yy_sname[yysymbol]; } @@ -3767,577 +3811,584 @@ namespace xsk { namespace gsc { namespace h1 { } - const short parser::yypact_ninf_ = -267; + const short parser::yypact_ninf_ = -270; - const short parser::yytable_ninf_ = -209; + const short parser::yytable_ninf_ = -212; const short parser::yypact_[] = { - 5, -267, -267, 49, 49, -28, -267, 26, 5, -267, - -267, -267, -267, -267, -267, -39, -267, -267, -34, -32, - -64, -267, -267, -267, -267, -61, 1195, -267, -267, -267, - 8, -26, -267, -267, -25, -13, -267, -3, -267, -267, - -267, -267, -267, -267, -267, 1195, 1065, -61, 1195, 1195, - -14, -55, -267, -267, -267, -267, 1999, -267, -267, -267, - -267, -267, 23, 346, -267, -267, -267, -267, 432, 805, - -267, -267, 935, -267, -267, -267, 1161, 1226, 1274, 1288, - -267, -267, 548, 17, -267, -267, -267, -267, -267, -267, - -267, -267, 3, 27, -61, 41, 31, 57, 42, 71, - 77, 45, 1325, 1065, -267, 2082, 83, 111, -267, -267, - -267, -267, -267, -267, -267, 1195, 1195, 1195, 1195, 1195, - 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, - 1195, 1195, 1195, 1195, -267, 1260, -61, -267, -267, -267, - 117, 110, 1195, -61, -267, 779, -267, -267, 1195, 1195, - -61, 1195, 1195, -61, 1195, -267, 1195, 1061, 1195, -267, - 1964, 134, 134, 2113, 2123, 609, 609, 36, 36, 36, - 36, 2154, 2195, 2164, 65, 65, -267, -267, -267, 1769, - -267, -61, -16, -267, 122, 857, 1195, 118, -29, 124, - 1039, 130, 131, 135, 136, -5, 128, 133, 139, 1130, - 140, 145, 151, -267, 152, 115, 115, -267, -267, -267, - 909, -267, -267, -267, -267, -267, -267, -267, -267, -267, - -267, -267, -267, -267, -267, -267, -267, -267, -267, -267, - -267, -267, -267, -267, -267, 147, 153, 157, 169, 170, - -267, -267, 28, -267, -267, -267, -267, -31, 1809, -2, - 155, 1849, -1, 182, 1889, 1928, 178, 2082, 1195, -267, - 122, -267, 1195, -267, 987, 2034, -267, 184, -267, 1195, - 211, 1195, 534, -61, 1195, 141, 185, 186, -267, -267, - -267, -267, 2069, -267, 1195, 1195, 1195, -267, -267, 177, - 177, -267, -267, -267, -267, -267, -267, -267, 197, 198, - 199, 201, -267, -267, 1195, 1195, 1195, 1195, 1195, 1195, - 1195, 1195, 1195, 1195, 1195, 200, -267, 1195, 202, -267, - 1195, 204, 1195, 203, 2082, 1, -267, -267, 192, 1491, - 210, 1525, 194, -267, -267, -267, 669, -8, 1559, -267, - -267, -267, 9, 38, 1061, 1195, 1195, 1195, 1195, 2082, - 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, - 213, 47, 215, 66, 216, 1593, 1195, -267, -267, 1039, - 1195, 1039, 1195, 1195, -61, 27, 217, 219, 1627, 1369, - 1413, 1457, 1195, -267, 1195, -267, 1195, -267, 82, 238, - 1661, -267, 2082, 223, 1695, 247, -267, -267, -267, 224, - 225, 1195, 226, 1195, 229, 1195, 91, 104, 114, -267, - 1039, 230, 534, 1039, 1195, -267, -267, 240, -267, 241, - -267, 248, -267, -267, -267, -267, -267, 249, -267, 1729, - 243, 244, 245, 1039, 1039, -267, -267, -267, -267, -267 + 3, -270, -270, -42, -42, -16, -270, 43, 3, -270, + -270, -270, -270, -270, -270, -25, -270, -270, 1, 7, + -50, -270, -270, -270, -270, -28, 934, -270, -270, -270, + 24, -14, -270, -270, -37, -33, -270, 59, -270, -270, + -270, -270, -270, -270, -270, 934, 627, -28, 934, 934, + 37, -11, -270, -270, -270, -270, 2024, -270, -270, -270, + -270, -270, 69, 293, -270, -270, -270, -270, 433, 532, + -270, -270, 542, -270, -270, -270, 665, 692, 965, 1179, + -270, -270, 8, 41, -270, -270, -270, -270, -270, -270, + -270, -270, 49, 73, -28, 62, 82, 78, 88, 95, + 89, 96, 1310, 627, -270, 2107, 98, 106, -270, -270, + -270, -270, -270, -270, -270, 934, 934, 934, 934, 934, + 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, + 934, 934, 934, 934, -270, 999, -28, -270, -270, -270, + 112, 114, 934, -28, -270, 791, -270, -270, 934, 934, + -28, 934, 934, -28, 934, -270, 934, 1754, 934, -270, + 1989, 65, 65, 2138, 2148, 860, 860, 152, 152, 152, + 152, 2179, 1013, 2189, 75, 75, -270, -270, -270, 1794, + -270, -28, 17, -270, 120, 1092, 934, 113, -10, 124, + 1268, 131, 134, 137, 140, -7, 141, 133, 136, 869, + 139, 155, 156, -270, 148, 33, 33, -270, -270, 843, + -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, + -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, + -270, -270, -270, -270, -270, -270, 151, 159, 161, 162, + 165, -270, -270, 1187, -270, -270, -270, -270, -32, 1834, + 32, 158, 1874, 34, 176, 1914, 1953, 157, 2107, 934, + -270, 120, -270, 934, -270, -270, 1146, 2059, -270, 164, + -270, 934, 202, 934, -19, -28, 934, 128, 172, 173, + -270, -270, -270, -270, 2094, -270, 934, 934, 934, -270, + -270, 592, 592, -270, -270, -270, -270, -270, -270, -270, + 184, 185, 188, 189, -270, -270, 934, 934, 934, 934, + 934, 934, 934, 934, 934, 934, 934, 193, -270, 934, + 194, -270, 934, 195, 934, 201, 2107, 38, -270, -270, + -270, 180, 1476, 203, 1510, 196, -270, -270, -270, 1272, + -4, 1544, -270, -270, -270, 42, 45, 1754, 934, 934, + 934, 934, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, + 2107, 2107, 2107, 204, 55, 205, 64, 207, 1578, 934, + -270, -270, 1268, 934, 1268, 934, 934, -28, 73, 208, + 209, 1612, 1354, 1398, 1442, 934, -270, 934, -270, 934, + -270, 68, 238, 1646, -270, 2107, 215, 1680, 235, -270, + -270, -270, 217, 219, 934, 220, 934, 221, 934, 71, + 77, 84, -270, 1268, 227, -19, 1268, 934, -270, -270, + 214, -270, 216, -270, 237, -270, -270, -270, -270, -270, + 241, -270, 1714, 233, 234, 239, 1268, 1268, -270, -270, + -270, -270, -270 }; const unsigned char parser::yydefact_[] = { - 3, 12, 13, 0, 0, 0, 206, 0, 2, 7, - 8, 9, 14, 15, 16, 0, 207, 208, 0, 0, - 0, 1, 4, 5, 6, 176, 0, 10, 11, 210, - 0, 0, 175, 205, 0, 0, 197, 0, 218, 217, - 199, 200, 201, 202, 203, 0, 178, 0, 0, 0, - 0, 0, 209, 211, 214, 216, 0, 90, 91, 92, - 129, 130, 131, 132, 159, 160, 133, 134, 135, 136, - 137, 138, 0, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 0, 149, 150, 151, 152, 153, 154, - 155, 156, 0, 0, 0, 0, 208, 0, 0, 208, - 0, 0, 0, 178, 198, 180, 0, 177, 181, 158, - 157, 213, 215, 204, 18, 0, 0, 0, 0, 0, + 3, 12, 13, 0, 0, 0, 209, 0, 2, 7, + 8, 9, 14, 15, 16, 0, 210, 211, 0, 0, + 0, 1, 4, 5, 6, 179, 0, 10, 11, 213, + 0, 0, 178, 208, 0, 0, 200, 0, 221, 220, + 202, 203, 204, 205, 206, 0, 181, 0, 0, 0, + 0, 0, 212, 214, 217, 219, 0, 93, 94, 95, + 132, 133, 134, 135, 162, 163, 136, 137, 138, 139, + 140, 141, 0, 142, 143, 144, 145, 146, 147, 148, + 149, 150, 151, 0, 152, 153, 154, 155, 156, 157, + 158, 159, 0, 0, 0, 0, 211, 0, 0, 211, + 0, 0, 0, 181, 201, 183, 0, 180, 184, 161, + 160, 216, 218, 207, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 186, 0, 0, 185, 161, 162, - 208, 0, 178, 0, 17, 0, 19, 174, 0, 178, - 0, 0, 178, 0, 0, 187, 0, 180, 0, 173, - 0, 122, 123, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 124, 125, 126, 127, 128, 0, - 184, 0, 0, 177, 182, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 189, 0, 0, 188, 164, 165, + 211, 0, 181, 0, 17, 0, 19, 177, 0, 181, + 0, 0, 181, 0, 0, 190, 0, 183, 0, 176, + 0, 125, 126, 114, 115, 116, 117, 118, 119, 120, + 121, 122, 123, 124, 127, 128, 129, 130, 131, 0, + 187, 0, 0, 180, 185, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 49, 0, 0, 0, 51, 20, 21, - 0, 22, 23, 24, 25, 26, 27, 28, 29, 30, - 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 0, 0, 0, 188, 189, - 190, 191, 0, 192, 193, 194, 195, 196, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 179, 0, 183, - 0, 163, 178, 47, 0, 0, 69, 0, 70, 0, - 0, 0, 55, 0, 0, 0, 0, 0, 82, 83, - 84, 86, 0, 87, 178, 178, 0, 188, 189, 106, - 108, 48, 50, 58, 59, 60, 56, 57, 0, 0, - 0, 0, 107, 109, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 165, 178, 0, 167, - 178, 0, 0, 0, 110, 0, 46, 64, 0, 0, - 0, 0, 0, 52, 53, 54, 0, 0, 0, 81, - 80, 85, 0, 0, 0, 0, 0, 0, 0, 95, - 101, 102, 103, 104, 105, 96, 97, 98, 100, 99, - 0, 0, 0, 0, 0, 0, 178, 164, 71, 0, - 0, 0, 94, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 178, 166, 178, 168, 178, 212, 0, 72, - 0, 74, 93, 0, 0, 0, 79, 88, 89, 0, - 0, 178, 0, 178, 0, 178, 0, 0, 0, 169, - 0, 0, 55, 0, 0, 61, 63, 177, 66, 177, - 68, 177, 170, 171, 172, 73, 75, 0, 77, 0, - 0, 0, 0, 0, 0, 62, 65, 67, 76, 78 + 0, 0, 0, 54, 0, 0, 0, 45, 50, 0, + 46, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 0, 0, 0, 191, + 192, 193, 194, 0, 195, 196, 197, 198, 199, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 182, 0, + 186, 0, 166, 181, 52, 48, 0, 0, 72, 0, + 73, 0, 0, 0, 58, 0, 0, 0, 0, 0, + 85, 86, 87, 89, 0, 90, 181, 181, 0, 191, + 192, 109, 111, 53, 49, 61, 62, 63, 59, 60, + 0, 0, 0, 0, 110, 112, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 168, 181, + 0, 170, 181, 0, 0, 0, 113, 0, 51, 47, + 67, 0, 0, 0, 0, 0, 55, 56, 57, 0, + 0, 0, 84, 83, 88, 0, 0, 0, 0, 0, + 0, 0, 98, 104, 105, 106, 107, 108, 99, 100, + 101, 103, 102, 0, 0, 0, 0, 0, 0, 181, + 167, 74, 0, 0, 0, 97, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 181, 169, 181, 171, 181, + 215, 0, 75, 0, 77, 96, 0, 0, 0, 82, + 91, 92, 0, 0, 181, 0, 181, 0, 181, 0, + 0, 0, 172, 0, 0, 58, 0, 0, 64, 66, + 180, 69, 180, 71, 180, 173, 174, 175, 76, 78, + 0, 80, 0, 0, 0, 0, 0, 0, 65, 68, + 70, 79, 81 }; const short parser::yypgoto_[] = { - -267, -267, -267, 292, 300, 301, -267, -267, -267, -72, - -267, -91, 144, -81, -267, -267, -267, -267, -267, -267, - -267, -267, -267, -267, -267, -267, -267, -267, -267, -267, - -267, -267, -267, -267, -267, -267, -267, -267, 195, -267, - -266, -260, -258, -267, -267, -267, -267, -267, -130, -12, - -67, -65, -267, -267, 340, -45, -267, -6, 246, -267, - -267, 252, -267, -267, -267, 280, 329, 348, 366, -267, - -267, 0, 6, -267, -9, -267, -267, -267, 137, -267, - -267 + -270, -270, -270, 294, 295, 296, -270, -270, -270, -152, + 117, -270, -270, -270, -91, -87, -270, -270, -270, -270, + -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, + -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, + 190, -270, -269, -267, -261, -270, -270, -270, -270, -270, + -86, -12, -66, -61, -270, -270, 13, -45, -270, -6, + 179, -270, -270, 249, -270, -270, -270, 282, 337, 362, + 372, -270, -270, 0, 6, -270, -8, -270, -270, -270, + 142, -270, -270 }; const short parser::yydefgoto_[] = { 0, 7, 8, 9, 10, 11, 12, 13, 14, 207, - 208, 209, 210, 332, 211, 212, 213, 214, 215, 216, - 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, - 227, 228, 229, 230, 231, 232, 233, 234, 105, 393, - 235, 236, 237, 57, 58, 59, 60, 61, 62, 63, - 64, 65, 66, 31, 106, 183, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91 + 208, 266, 209, 210, 211, 335, 212, 213, 214, 215, + 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, + 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, + 105, 396, 236, 237, 238, 57, 58, 59, 60, 61, + 62, 63, 64, 65, 66, 31, 106, 183, 67, 68, + 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, + 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, + 89, 90, 91 }; const short parser::yytable_[] = { - 15, 107, 146, 17, 17, 138, 333, 139, 15, 18, - 19, 30, 334, 25, 335, 238, 1, 2, 3, 4, - 5, 142, 373, 267, 20, 32, 21, 93, 27, -208, - 28, 95, 94, 268, 96, 99, 29, 261, 6, 26, - 97, 100, 158, 98, 113, 298, 299, 108, 300, 301, - 374, 316, 319, 101, 367, 238, 158, 158, 107, 158, - 238, 92, 376, -188, -188, 144, -188, 158, 34, 35, - -188, 37, 140, 16, 6, 287, 287, 143, 141, -188, - 238, 145, -188, 149, 135, 16, 6, 136, 275, 111, - 112, 377, 302, 303, 147, 29, 158, 148, 151, 55, - 383, 154, 116, 117, 6, 158, 304, 305, 306, 307, - 308, 309, 310, 311, 312, 313, 314, 150, 270, 385, - -188, -188, -188, 152, 158, 137, 16, 6, 129, 130, - 131, 132, 133, 239, 238, 409, 180, 153, 292, 240, - 158, 158, 287, 184, 422, 247, 333, 16, 6, 158, - 250, 141, 334, 253, 335, 34, 35, 423, 37, 131, - 132, 133, 158, 41, 42, 43, 44, 424, 159, 142, - 181, 204, 158, 239, 262, 138, 269, 139, 239, 240, - 266, 260, 271, 272, 240, 247, 276, 273, 274, 278, - 247, 141, 292, 288, 288, 279, 141, 284, 239, 240, - 240, 280, 283, 285, 240, 247, 247, 317, 286, 293, - 247, 141, 141, 16, 6, 294, 141, 34, 35, 295, - 37, 56, 138, 138, 139, 139, 129, 130, 131, 132, - 133, 296, 297, 135, 320, 323, 136, 328, 330, 238, - 102, 238, 140, 109, 110, 112, 339, 340, 141, 345, - 346, 347, 239, 348, 368, 366, 372, 360, 240, 362, - 288, 364, 370, 410, 247, 382, 240, 384, 386, 138, - 141, 139, 247, 337, 137, 16, 6, 414, 141, 397, - 238, 398, 287, 238, 396, 412, 415, 416, 418, 140, - 140, 420, 426, 430, 431, 141, 141, 389, 157, 391, - 22, 432, 433, 238, 238, 435, 436, 437, 23, 24, - 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 264, - 179, 427, 277, 0, 0, 0, 140, 0, 425, 0, - 0, 428, 141, 248, 0, 0, 251, 0, 0, 254, - 0, 255, 0, 257, 0, 0, 417, 239, 419, 239, - 421, 438, 439, 240, 0, 240, 0, 0, 0, 247, - 0, 247, 0, 0, 395, 141, 0, 141, 0, 0, - 0, 265, 0, 0, 0, 0, -189, -189, 0, -189, - 0, 241, 0, -189, 282, 0, 0, 242, 239, 0, - 288, 239, -189, 0, 240, -189, 240, 240, 0, 0, - 247, 0, 247, 247, 0, 0, 141, 0, 141, 141, - 0, 239, 239, 0, 0, 243, 0, 240, 240, 0, - 0, 241, 0, 247, 247, 0, 241, 242, 0, 141, - 141, 0, 242, -189, -189, -189, 0, 0, 0, 0, - 0, 241, 241, 324, 0, 0, 241, 289, 290, 0, - 0, 0, 242, 0, 329, 243, 331, 0, 0, 338, - 243, 0, -190, -190, 244, -190, 0, 0, 0, -190, - 0, 344, 182, 0, 0, 243, 243, 0, -190, 249, - 243, -190, 252, 245, 0, 0, 0, 0, 0, 349, - 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, - 241, 246, 0, 0, 244, 0, 242, 365, 241, 244, - 0, 0, 0, 0, 336, 0, 0, 0, 0, -190, - -190, -190, 0, 245, 244, 244, 0, 0, 245, 244, - 378, 379, 380, 381, 243, 0, 0, 0, 0, 0, - 0, 246, 243, 245, 245, 0, 246, 0, 245, 0, - 0, 0, 0, 0, 0, 390, 0, 392, 394, 0, - 0, 246, 246, 0, 34, 35, 246, 37, 0, 0, - 0, 0, 41, 42, 43, 44, 0, 0, -196, -196, - 204, -196, 0, 244, 0, -196, 0, 0, 205, 206, - 142, 244, 325, 0, -196, 0, 0, -196, -208, 429, - 0, 0, 245, 0, 0, 241, 0, 241, 0, 0, - 245, 242, 0, 242, 342, 343, 0, 0, 0, 0, - 246, 0, 16, 6, 0, 0, 0, 0, 246, 0, - 0, 0, 0, 0, 0, -196, -196, -196, 0, 243, - 0, 243, 0, 0, 0, 0, 241, 361, 241, 241, - 363, 0, 242, 0, 336, 242, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 116, 117, 0, 0, 241, - 241, 122, 123, 124, 125, 242, 242, 0, 0, 0, - 243, 0, 243, 243, 0, 0, 0, 0, 244, 0, - 244, 129, 130, 131, 132, 133, 388, 0, 0, 34, - 35, 0, 37, 243, 243, 0, 0, 245, 0, 245, - 0, 0, 406, 0, 407, 135, 408, 0, 136, 0, - 0, 0, 0, 302, 303, 246, 0, 246, 0, 244, - 0, 244, 244, 0, 0, 0, 0, 304, 305, 306, - 307, 308, 309, 310, 311, 312, 313, 314, 245, 0, - 245, 245, 244, 244, 0, 0, 137, 16, 6, 0, - 0, 0, 0, 0, 0, 0, 246, 0, 246, 246, - 0, 245, 245, 0, 0, 0, 0, 0, 0, 0, - 185, 0, 0, 0, 0, 0, 0, 0, 186, 246, - 246, 187, 188, 189, 0, 190, 191, 192, 193, 0, - 194, 195, 196, 197, 198, 199, 200, 201, 202, 34, - 35, 0, 37, 0, 0, 0, 0, 41, 42, 43, - 44, 0, 0, 145, 203, 204, 0, 0, 0, 0, - 0, 0, 0, 205, 206, -191, -191, 0, -191, 0, - 0, 0, -191, 0, 0, 0, 0, 0, 0, 0, - 0, -191, 0, 0, -191, 0, 0, 0, 185, 263, - 0, 0, 0, 0, 0, 0, 186, 16, 6, 187, - 188, 189, 0, 190, 191, 192, 193, 0, 194, 195, - 196, 197, 198, 199, 200, 201, 202, 34, 35, 0, - 37, 0, -191, -191, -191, 41, 42, 43, 44, 0, - 0, 145, 0, 204, 0, 0, 0, 0, 0, 0, - 185, 205, 206, 0, 0, 0, 0, 0, 186, 0, - 0, 187, 188, 189, 0, 190, 191, 192, 193, 0, - 194, 195, 196, 197, 198, 199, 200, 201, 202, 34, - 35, 0, 37, 0, 0, 16, 6, 41, 42, 43, - 44, 0, 0, 145, 291, 204, 0, 0, 0, 0, - 0, 0, 0, 205, 206, 34, 35, 0, 37, 0, - 0, 0, 134, 0, 0, 0, 0, 0, 0, 0, - 0, 135, 0, 0, 136, 0, 0, 0, 185, 326, - 0, 0, 0, 0, 0, 0, 186, 16, 6, 187, - 188, 189, 0, 190, 191, 192, 193, 0, 194, 195, - 196, 197, 198, 199, 200, 201, 202, 34, 35, 0, - 37, 0, 137, 16, 6, 41, 42, 43, 44, 0, - 0, 145, 0, 204, 0, 0, 0, 0, 0, 0, - 185, 205, 206, 0, 0, 0, 0, 0, 186, 0, - 0, 187, 188, 189, 0, 190, 191, 192, 193, 0, - 194, 195, 196, 197, 198, 199, 200, 201, 202, 34, - 35, 33, 37, 0, 0, 16, 6, 41, 42, 43, - 44, 0, 0, 145, 0, 204, 0, 0, 0, 0, - 0, 0, 0, 205, 206, 34, 35, 36, 37, 38, - 39, 40, 0, 41, 42, 43, 44, 45, 256, 0, - 0, 103, 104, 0, 115, 47, 0, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 16, 6, 0, - 0, 48, 49, 0, 0, 0, 33, 0, 0, 0, - 126, 127, 128, 129, 130, 131, 132, 133, 50, 0, - 0, 51, 0, 16, 6, 29, 52, 53, 54, 55, - 34, 35, 36, 37, 38, 39, 40, 0, 41, 42, - 43, 44, 45, 0, 0, 0, 46, 0, 0, 0, - 47, 0, 281, 0, 0, 0, 0, 0, 0, 0, - 0, -192, -192, 0, -192, 0, 48, 49, -192, 0, - 0, 33, 0, 0, 0, 0, 0, -192, 0, 0, - -192, 0, 0, 50, 0, 0, 51, 0, 16, 6, - 29, 52, 53, 54, 55, 34, 35, 36, 37, 38, - 39, 40, 0, 41, 42, 43, 44, 45, 0, 0, - 0, 46, 0, 0, 0, 47, 0, 0, -192, -192, - -192, 0, 0, 0, 0, 0, -193, -193, 0, -193, - 0, 48, 49, -193, 0, 0, 33, 0, 0, 0, - 0, 0, -193, 0, 0, -193, 0, 0, 50, 0, - 0, 51, 0, 16, 6, 29, 52, 53, 54, 55, - 34, 35, 36, 37, 38, 39, 40, 0, 41, 42, - 43, 44, 45, 0, -194, -194, 103, -194, 0, 0, - 47, -194, 0, -193, -193, -193, 0, 0, -195, -195, - -194, -195, 0, -194, 0, -195, 48, 49, 0, 0, - 0, 0, 0, 0, -195, 0, 0, -195, 0, 0, - 0, 0, 0, 50, 0, 0, 51, 0, 16, 6, - 29, 52, 53, 54, 55, 0, 0, 0, 0, 0, - 0, -194, -194, -194, 0, 0, 0, 0, 155, 0, - 0, 0, 0, 156, 0, -195, -195, -195, 115, 0, - 0, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 126, 127, 128, 129, 130, 131, - 132, 133, 400, 0, 0, 0, 0, 401, 0, 0, - 0, 0, 115, 0, 0, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 126, 127, - 128, 129, 130, 131, 132, 133, 402, 0, 0, 0, - 0, 403, 0, 0, 0, 0, 115, 0, 0, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 0, + 15, 107, 146, 17, 17, 336, 138, 337, 15, 18, + 19, 139, 30, 338, 1, 2, 3, 4, 5, 95, + 142, 34, 35, 98, 37, 32, 376, 25, -211, 41, + 42, 43, 44, 265, 96, 99, 20, 204, 272, 93, + 97, 100, 269, 21, 94, 205, 206, 108, -199, -199, + 29, -199, 270, 26, 377, -199, 16, 6, 107, 239, + 142, 16, 6, 27, -199, 16, 6, -199, -211, 28, + 262, 6, 140, 34, 35, 158, 37, 92, 141, 16, + 6, 41, 42, 43, 44, 318, 277, 321, 113, 204, + 158, 370, 158, 29, 147, 379, 158, 55, 380, 239, + 158, 143, 6, 158, 239, -199, -199, -199, 386, -191, + -191, 144, -191, 158, 329, 101, -191, 388, 148, 289, + 289, 412, 158, 239, 425, -191, 158, 145, -191, 158, + 426, 16, 6, 240, 149, 158, 180, 427, 150, 241, + 111, 112, 158, 184, 151, 248, 336, 152, 337, 153, + 251, 141, 154, 254, 338, 182, 158, 129, 130, 131, + 132, 133, 250, 159, 142, 253, -191, -191, -191, 131, + 132, 133, 263, 240, 181, 268, 271, 138, 240, 241, + 239, 261, 139, 273, 241, 248, 274, 278, 289, 275, + 248, 141, 276, 290, 290, 281, 141, 240, 282, 241, + 241, 285, 280, 241, 288, 248, 248, 286, 287, 248, + 319, 141, 141, 295, 325, 141, 56, 331, 116, 117, + 392, 296, 394, 297, 298, 138, 138, 299, 322, 333, + 139, 139, 112, 342, 343, 102, 348, 349, 109, 110, + 350, 351, 371, 140, 129, 130, 131, 132, 133, 141, + 363, 365, 367, 369, 240, 373, 385, 387, 375, 389, + 241, 428, 290, 413, 431, 417, 248, 433, 241, 434, + 400, 401, 141, 138, 248, 340, 327, 415, 139, 418, + 141, 419, 421, 423, 441, 442, 239, 399, 239, 429, + 435, 140, 140, 157, 436, 438, 439, 141, 141, 345, + 346, 440, 22, 23, 24, 160, 161, 162, 163, 164, + 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, + 175, 176, 177, 178, 242, 179, 294, 239, 430, 289, + 239, 0, 364, -192, -192, 366, -192, 279, 249, 140, + -192, 252, 0, 0, 255, 141, 256, 0, 258, -192, + 239, 239, -192, 0, 0, 0, 0, 0, 0, 420, + 240, 422, 240, 424, 242, 0, 241, 0, 241, 242, + 0, 0, 248, 0, 248, 0, 267, 398, 141, 0, + 141, 0, 391, 0, 242, 242, 0, 0, 242, 284, + -192, -192, -192, 0, 243, 0, 0, 0, 409, 0, + 410, 240, 411, 290, 240, 0, 0, 241, 0, 241, + 241, 0, 0, 248, 0, 248, 248, 0, 0, 141, + 0, 141, 141, 0, 240, 240, 0, 244, 0, 0, + 241, 241, 0, 0, 243, 0, 248, 248, 0, 243, + 0, 0, 141, 141, 0, 242, 0, 0, 0, 326, + 0, 0, 0, 242, 291, 292, 0, 0, 243, 0, + 0, 332, 0, 334, 0, 0, 341, 244, 0, 0, + 0, 0, 244, -193, -193, 0, -193, 0, 347, 0, + -193, 0, 245, 0, 0, 0, 0, 244, 244, -193, + 0, 244, -193, 0, 0, 0, 352, 353, 354, 355, + 356, 357, 358, 359, 360, 361, 362, 246, 0, 0, + 0, 0, 0, 0, 368, 243, 0, 247, 0, 0, + 0, 0, 245, 339, 0, 0, 0, 245, 0, 0, + -193, -193, -193, 0, 0, 0, 0, 0, 381, 382, + 383, 384, 245, 245, 0, 0, 245, 246, 244, 0, + 0, 242, 246, 242, 0, 0, 244, 247, 0, 0, + 0, 0, 247, 393, 0, 395, 397, 246, 246, 0, + 0, 246, -194, -194, 0, -194, 0, 247, 247, -194, + 0, 247, 34, 35, 0, 37, 0, 0, -194, 134, + 0, -194, 242, 0, 242, 242, 0, 0, 135, 0, + 0, 136, 0, 245, 0, 0, 0, 432, 0, 0, + 0, 245, 0, 0, 0, 242, 242, 0, 0, 0, + 0, 243, 0, 243, 0, 0, 0, 0, 246, -194, + -194, -194, 34, 35, 0, 37, 246, 0, 247, 137, + 16, 6, 0, 33, 0, 0, 247, 0, 135, 0, + 0, 136, 0, 0, 244, 0, 244, 0, 0, 0, + 0, 0, 243, 0, 339, 243, 0, 34, 35, 36, + 37, 38, 39, 40, 0, 41, 42, 43, 44, 45, + 0, 0, 0, 103, 104, 243, 243, 47, 0, 137, + 16, 6, 0, 0, 0, 244, 0, 244, 244, 0, + 0, 0, 0, 48, 49, -195, -195, 0, -195, 245, + 0, 245, -195, 0, 0, 0, 0, 0, 244, 244, + 50, -195, 0, 51, -195, 16, 6, 29, 52, 53, + 54, 55, -196, -196, 246, -196, 246, 0, 0, -196, + 0, 0, 0, 0, 247, 0, 247, 0, -196, 0, + 245, -196, 245, 245, 0, 0, 0, 0, 0, 0, + 0, 0, -195, -195, -195, 0, 0, 0, 0, 0, + 0, 0, 0, 245, 245, 246, 0, 246, 246, 0, + 0, 0, 0, 0, 0, 247, 0, 247, 247, -196, + -196, -196, 0, 0, 0, 0, 0, 0, 246, 246, + 0, 0, 185, 0, 0, 0, 0, 0, 247, 247, + 186, 0, 0, 187, 188, 189, 0, 190, 191, 192, + 193, 0, 194, 195, 196, 197, 198, 199, 200, 201, + 202, 34, 35, 0, 37, 0, 0, 0, 0, 41, + 42, 43, 44, 0, 0, 145, 203, 204, 0, 0, + 0, 0, 0, 0, 185, 205, 206, 0, 0, 0, + 0, 0, 186, 0, 0, 187, 188, 189, 0, 190, + 191, 192, 193, 0, 194, 195, 196, 197, 198, 199, + 200, 201, 202, 34, 35, 33, 37, 0, 0, 16, + 6, 41, 42, 43, 44, 0, 0, 145, 293, 204, + 0, 0, 0, 0, 0, 0, 0, 205, 206, 34, + 35, 36, 37, 38, 39, 40, 0, 41, 42, 43, + 44, 45, 0, 0, 0, 46, 116, 117, 0, 47, + 0, 283, 122, 123, 124, 125, 0, 0, 0, 0, + 0, 16, 6, 0, 0, 48, 49, 0, 0, 0, + 33, 0, 129, 130, 131, 132, 133, 0, 0, 0, + 0, 0, 50, 0, 0, 51, 0, 16, 6, 29, + 52, 53, 54, 55, 34, 35, 36, 37, 38, 39, + 40, 0, 41, 42, 43, 44, 45, 0, 0, 0, + 46, 0, 0, 0, 47, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, -197, -197, 0, -197, 0, + 48, 49, -197, 0, 0, 33, 0, 0, 0, 0, + 0, -197, 0, 0, -197, 0, 0, 50, 0, 0, + 51, 0, 16, 6, 29, 52, 53, 54, 55, 34, + 35, 36, 37, 38, 39, 40, 0, 41, 42, 43, + 44, 45, 0, 0, 0, 103, 0, 0, 0, 47, + 0, 0, -197, -197, -197, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 48, 49, 0, 0, 116, + 117, 0, 0, 120, 121, 122, 123, 124, 125, 0, + 0, 0, 50, 0, 0, 51, 0, 16, 6, 29, + 52, 53, 54, 55, 264, 129, 130, 131, 132, 133, + 0, 186, 0, 0, 187, 188, 189, 0, 190, 191, + 192, 193, 0, 194, 195, 196, 197, 198, 199, 200, + 201, 202, 34, 35, 0, 37, 0, 0, 0, 0, + 41, 42, 43, 44, 0, 0, 145, 0, 204, 0, + 0, 0, 0, 0, 0, 0, 205, 206, 328, 0, + 0, 0, 0, 0, 0, 186, 0, 0, 187, 188, + 189, 0, 190, 191, 192, 193, 0, 194, 195, 196, + 197, 198, 199, 200, 201, 202, 34, 35, 0, 37, + 16, 6, 0, 0, 41, 42, 43, 44, 0, 0, + 145, 0, 204, 0, 300, 301, 0, 302, 303, 0, + 205, 206, 0, 0, 0, 0, 0, 0, 0, -198, + -198, 0, -198, 0, 0, 0, -198, 34, 35, 0, + 37, 0, 0, 0, 0, -198, 0, 0, -198, 0, + 0, 0, 0, 135, 16, 6, 136, 0, 0, 0, + 0, 304, 305, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 306, 307, 308, 309, 310, + 311, 312, 313, 314, 315, 316, -198, -198, -198, 0, + 0, 0, 0, 0, 137, 16, 6, 186, 0, 0, + 187, 188, 189, 0, 190, 191, 192, 193, 0, 194, + 195, 196, 197, 198, 199, 200, 201, 202, 34, 35, + 0, 37, 34, 35, 0, 37, 41, 42, 43, 44, + 0, 0, 145, 0, 204, 0, 0, 0, 135, 0, + 0, 136, 205, 206, 0, 0, 304, 305, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 126, 127, 128, 129, 130, 131, 132, 133, - 404, 0, 0, 0, 0, 405, 0, 0, 0, 0, - 115, 0, 0, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 369, 0, 126, 127, 128, 129, - 130, 131, 132, 133, 115, 0, 0, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 371, 0, - 126, 127, 128, 129, 130, 131, 132, 133, 115, 0, - 0, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 375, 0, 126, 127, 128, 129, 130, 131, - 132, 133, 115, 0, 0, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 387, 0, 126, 127, - 128, 129, 130, 131, 132, 133, 115, 0, 0, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 0, + 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, + 316, 0, 0, 155, 0, 0, 16, 6, 156, 137, + 16, 6, 0, 115, 0, 0, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 126, + 127, 128, 129, 130, 131, 132, 133, 403, 0, 0, + 0, 0, 404, 0, 0, 0, 0, 115, 0, 0, + 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 399, 0, 126, 127, 128, 129, 130, 131, 132, 133, - 115, 0, 0, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 411, 0, 126, 127, 128, 129, - 130, 131, 132, 133, 115, 0, 0, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 413, 0, - 126, 127, 128, 129, 130, 131, 132, 133, 115, 0, - 0, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 434, 0, 126, 127, 128, 129, 130, 131, - 132, 133, 115, 0, 0, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 126, 127, - 128, 129, 130, 131, 132, 133, 259, 0, 0, 0, - 0, 0, 115, 0, 0, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 126, 127, - 128, 129, 130, 131, 132, 133, 315, 0, 0, 0, - 0, 0, 115, 0, 0, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 126, 127, - 128, 129, 130, 131, 132, 133, 318, 0, 0, 0, - 0, 0, 115, 0, 0, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 126, 127, - 128, 129, 130, 131, 132, 133, 321, 0, 0, 0, - 0, 0, 115, 0, 0, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 126, 127, - 128, 129, 130, 131, 132, 133, 322, 0, 0, 0, + 0, 0, 0, 126, 127, 128, 129, 130, 131, 132, + 133, 405, 0, 0, 0, 0, 406, 0, 0, 0, 0, 115, 0, 0, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 126, 127, 128, - 129, 130, 131, 132, 133, 258, 0, 115, 0, 0, + 129, 130, 131, 132, 133, 407, 0, 0, 0, 0, + 408, 0, 0, 0, 0, 115, 0, 0, 116, 117, + 118, 119, 120, 121, 122, 123, 124, 125, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 372, + 0, 126, 127, 128, 129, 130, 131, 132, 133, 115, + 0, 0, 116, 117, 118, 119, 120, 121, 122, 123, + 124, 125, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 374, 0, 126, 127, 128, 129, 130, + 131, 132, 133, 115, 0, 0, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 378, 0, 126, + 127, 128, 129, 130, 131, 132, 133, 115, 0, 0, + 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 390, 0, 126, 127, 128, 129, 130, 131, 132, + 133, 115, 0, 0, 116, 117, 118, 119, 120, 121, + 122, 123, 124, 125, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 402, 0, 126, 127, 128, + 129, 130, 131, 132, 133, 115, 0, 0, 116, 117, + 118, 119, 120, 121, 122, 123, 124, 125, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 414, + 0, 126, 127, 128, 129, 130, 131, 132, 133, 115, + 0, 0, 116, 117, 118, 119, 120, 121, 122, 123, + 124, 125, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 416, 0, 126, 127, 128, 129, 130, + 131, 132, 133, 115, 0, 0, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 437, 0, 126, + 127, 128, 129, 130, 131, 132, 133, 115, 0, 0, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 126, 127, 128, 129, 130, 131, 132, - 133, 114, 115, 0, 0, 116, 117, 118, 119, 120, + 133, 257, 0, 0, 0, 0, 0, 115, 0, 0, + 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 126, 127, 128, 129, 130, 131, 132, + 133, 260, 0, 0, 0, 0, 0, 115, 0, 0, + 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 126, 127, 128, 129, 130, 131, 132, + 133, 317, 0, 0, 0, 0, 0, 115, 0, 0, + 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 126, 127, 128, 129, 130, 131, 132, + 133, 320, 0, 0, 0, 0, 0, 115, 0, 0, + 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 126, 127, 128, 129, 130, 131, 132, + 133, 323, 0, 0, 0, 0, 0, 115, 0, 0, + 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 126, 127, 128, 129, 130, 131, 132, + 133, 324, 0, 0, 0, 0, 115, 0, 0, 116, + 117, 118, 119, 120, 121, 122, 123, 124, 125, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 126, 127, 128, 129, 130, 131, 132, 133, + 259, 0, 115, 0, 0, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 126, 127, - 128, 129, 130, 131, 132, 133, 327, 115, 0, 0, + 128, 129, 130, 131, 132, 133, 114, 115, 0, 0, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 126, 127, 128, 129, 130, 131, 132, - 133, 341, 115, 0, 0, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 115, 0, 0, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 0, 0, 0, 0, - 0, 126, 127, 128, 129, 130, 131, 132, 133, 116, - 117, 0, 119, 120, 121, 122, 123, 124, 125, 116, - 117, 0, 0, 120, 121, 122, 123, 124, 125, 0, - 0, 0, 126, 127, 128, 129, 130, 131, 132, 133, - 0, 0, 126, 127, 128, 129, 130, 131, 132, 133, - 116, 117, 0, 0, 120, 121, 122, 123, 124, 125, - 116, 117, 0, 0, 120, 121, 122, 123, 124, 125, - 0, 0, 0, 0, 127, 128, 129, 130, 131, 132, - 133, 0, 0, 0, 127, 0, 129, 130, 131, 132, - 133, 116, 117, 0, 0, 120, 121, 122, 123, 124, - 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 129, 130, 131, - 132, 133 + 133, 330, 115, 0, 0, 116, 117, 118, 119, 120, + 121, 122, 123, 124, 125, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 126, 127, + 128, 129, 130, 131, 132, 133, 344, 115, 0, 0, + 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, + 115, 0, 0, 116, 117, 118, 119, 120, 121, 122, + 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, + 133, 0, 0, 0, 0, 0, 126, 127, 128, 129, + 130, 131, 132, 133, 116, 117, 0, 119, 120, 121, + 122, 123, 124, 125, 116, 117, 0, 0, 120, 121, + 122, 123, 124, 125, 0, 0, 0, 126, 127, 128, + 129, 130, 131, 132, 133, 0, 0, 126, 127, 128, + 129, 130, 131, 132, 133, 116, 117, 0, 0, 120, + 121, 122, 123, 124, 125, 116, 117, 0, 0, 120, + 121, 122, 123, 124, 125, 0, 0, 0, 0, 127, + 128, 129, 130, 131, 132, 133, 0, 0, 0, 127, + 0, 129, 130, 131, 132, 133 }; const short parser::yycheck_[] = { - 0, 46, 93, 3, 4, 72, 272, 72, 8, 3, - 4, 20, 272, 52, 272, 145, 11, 12, 13, 14, - 15, 52, 30, 52, 52, 25, 0, 53, 62, 60, - 62, 56, 58, 62, 34, 35, 100, 53, 99, 78, - 34, 35, 58, 56, 99, 17, 18, 47, 20, 21, - 58, 53, 53, 56, 53, 185, 58, 58, 103, 58, - 190, 53, 53, 40, 41, 62, 43, 58, 40, 41, - 47, 43, 72, 98, 99, 205, 206, 60, 72, 56, - 210, 54, 59, 52, 56, 98, 99, 59, 93, 103, - 104, 53, 64, 65, 94, 100, 58, 56, 56, 104, - 53, 56, 66, 67, 99, 58, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 60, 190, 53, - 97, 98, 99, 52, 58, 97, 98, 99, 92, 93, - 94, 95, 96, 145, 264, 53, 136, 60, 210, 145, - 58, 58, 272, 143, 53, 145, 412, 98, 99, 58, - 150, 145, 412, 153, 412, 40, 41, 53, 43, 94, - 95, 96, 58, 48, 49, 50, 51, 53, 57, 52, - 60, 56, 58, 185, 52, 242, 52, 242, 190, 185, - 62, 181, 52, 52, 190, 185, 195, 52, 52, 61, - 190, 185, 264, 205, 206, 62, 190, 52, 210, 205, - 206, 62, 62, 52, 210, 205, 206, 52, 56, 62, - 210, 205, 206, 98, 99, 62, 210, 40, 41, 62, - 43, 26, 289, 290, 289, 290, 92, 93, 94, 95, - 96, 62, 62, 56, 52, 57, 59, 53, 27, 369, - 45, 371, 242, 48, 49, 104, 61, 61, 242, 52, - 52, 52, 264, 52, 62, 52, 62, 57, 264, 57, - 272, 57, 52, 25, 264, 52, 272, 52, 52, 336, - 264, 336, 272, 273, 97, 98, 99, 30, 272, 62, - 410, 62, 412, 413, 375, 62, 62, 62, 62, 289, - 290, 62, 62, 53, 53, 289, 290, 369, 103, 371, - 8, 53, 53, 433, 434, 62, 62, 62, 8, 8, - 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 185, - 135, 412, 195, -1, -1, -1, 336, -1, 410, -1, - -1, 413, 336, 148, -1, -1, 151, -1, -1, 154, - -1, 156, -1, 158, -1, -1, 401, 369, 403, 371, - 405, 433, 434, 369, -1, 371, -1, -1, -1, 369, - -1, 371, -1, -1, 374, 369, -1, 371, -1, -1, - -1, 186, -1, -1, -1, -1, 40, 41, -1, 43, - -1, 145, -1, 47, 199, -1, -1, 145, 410, -1, - 412, 413, 56, -1, 410, 59, 412, 413, -1, -1, - 410, -1, 412, 413, -1, -1, 410, -1, 412, 413, - -1, 433, 434, -1, -1, 145, -1, 433, 434, -1, - -1, 185, -1, 433, 434, -1, 190, 185, -1, 433, - 434, -1, 190, 97, 98, 99, -1, -1, -1, -1, - -1, 205, 206, 258, -1, -1, 210, 205, 206, -1, - -1, -1, 210, -1, 269, 185, 271, -1, -1, 274, - 190, -1, 40, 41, 145, 43, -1, -1, -1, 47, - -1, 286, 142, -1, -1, 205, 206, -1, 56, 149, - 210, 59, 152, 145, -1, -1, -1, -1, -1, 304, - 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 264, 145, -1, -1, 185, -1, 264, 322, 272, 190, - -1, -1, -1, -1, 272, -1, -1, -1, -1, 97, - 98, 99, -1, 185, 205, 206, -1, -1, 190, 210, - 345, 346, 347, 348, 264, -1, -1, -1, -1, -1, - -1, 185, 272, 205, 206, -1, 190, -1, 210, -1, - -1, -1, -1, -1, -1, 370, -1, 372, 373, -1, - -1, 205, 206, -1, 40, 41, 210, 43, -1, -1, - -1, -1, 48, 49, 50, 51, -1, -1, 40, 41, - 56, 43, -1, 264, -1, 47, -1, -1, 64, 65, - 52, 272, 262, -1, 56, -1, -1, 59, 60, 414, - -1, -1, 264, -1, -1, 369, -1, 371, -1, -1, - 272, 369, -1, 371, 284, 285, -1, -1, -1, -1, - 264, -1, 98, 99, -1, -1, -1, -1, 272, -1, - -1, -1, -1, -1, -1, 97, 98, 99, -1, 369, - -1, 371, -1, -1, -1, -1, 410, 317, 412, 413, - 320, -1, 410, -1, 412, 413, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 66, 67, -1, -1, 433, - 434, 72, 73, 74, 75, 433, 434, -1, -1, -1, - 410, -1, 412, 413, -1, -1, -1, -1, 369, -1, - 371, 92, 93, 94, 95, 96, 366, -1, -1, 40, - 41, -1, 43, 433, 434, -1, -1, 369, -1, 371, - -1, -1, 382, -1, 384, 56, 386, -1, 59, -1, - -1, -1, -1, 64, 65, 369, -1, 371, -1, 410, - -1, 412, 413, -1, -1, -1, -1, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 410, -1, - 412, 413, 433, 434, -1, -1, 97, 98, 99, -1, - -1, -1, -1, -1, -1, -1, 410, -1, 412, 413, - -1, 433, 434, -1, -1, -1, -1, -1, -1, -1, - 11, -1, -1, -1, -1, -1, -1, -1, 19, 433, - 434, 22, 23, 24, -1, 26, 27, 28, 29, -1, - 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, -1, 43, -1, -1, -1, -1, 48, 49, 50, - 51, -1, -1, 54, 55, 56, -1, -1, -1, -1, - -1, -1, -1, 64, 65, 40, 41, -1, 43, -1, - -1, -1, 47, -1, -1, -1, -1, -1, -1, -1, - -1, 56, -1, -1, 59, -1, -1, -1, 11, 12, - -1, -1, -1, -1, -1, -1, 19, 98, 99, 22, - 23, 24, -1, 26, 27, 28, 29, -1, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, -1, - 43, -1, 97, 98, 99, 48, 49, 50, 51, -1, - -1, 54, -1, 56, -1, -1, -1, -1, -1, -1, - 11, 64, 65, -1, -1, -1, -1, -1, 19, -1, - -1, 22, 23, 24, -1, 26, 27, 28, 29, -1, - 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, -1, 43, -1, -1, 98, 99, 48, 49, 50, - 51, -1, -1, 54, 55, 56, -1, -1, -1, -1, - -1, -1, -1, 64, 65, 40, 41, -1, 43, -1, - -1, -1, 47, -1, -1, -1, -1, -1, -1, -1, - -1, 56, -1, -1, 59, -1, -1, -1, 11, 12, - -1, -1, -1, -1, -1, -1, 19, 98, 99, 22, - 23, 24, -1, 26, 27, 28, 29, -1, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, -1, - 43, -1, 97, 98, 99, 48, 49, 50, 51, -1, - -1, 54, -1, 56, -1, -1, -1, -1, -1, -1, - 11, 64, 65, -1, -1, -1, -1, -1, 19, -1, - -1, 22, 23, 24, -1, 26, 27, 28, 29, -1, - 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 16, 43, -1, -1, 98, 99, 48, 49, 50, - 51, -1, -1, 54, -1, 56, -1, -1, -1, -1, - -1, -1, -1, 64, 65, 40, 41, 42, 43, 44, - 45, 46, -1, 48, 49, 50, 51, 52, 57, -1, - -1, 56, 57, -1, 63, 60, -1, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 98, 99, -1, - -1, 76, 77, -1, -1, -1, 16, -1, -1, -1, - 89, 90, 91, 92, 93, 94, 95, 96, 93, -1, - -1, 96, -1, 98, 99, 100, 101, 102, 103, 104, - 40, 41, 42, 43, 44, 45, 46, -1, 48, 49, - 50, 51, 52, -1, -1, -1, 56, -1, -1, -1, - 60, -1, 62, -1, -1, -1, -1, -1, -1, -1, - -1, 40, 41, -1, 43, -1, 76, 77, 47, -1, - -1, 16, -1, -1, -1, -1, -1, 56, -1, -1, - 59, -1, -1, 93, -1, -1, 96, -1, 98, 99, - 100, 101, 102, 103, 104, 40, 41, 42, 43, 44, - 45, 46, -1, 48, 49, 50, 51, 52, -1, -1, - -1, 56, -1, -1, -1, 60, -1, -1, 97, 98, - 99, -1, -1, -1, -1, -1, 40, 41, -1, 43, - -1, 76, 77, 47, -1, -1, 16, -1, -1, -1, - -1, -1, 56, -1, -1, 59, -1, -1, 93, -1, - -1, 96, -1, 98, 99, 100, 101, 102, 103, 104, - 40, 41, 42, 43, 44, 45, 46, -1, 48, 49, - 50, 51, 52, -1, 40, 41, 56, 43, -1, -1, - 60, 47, -1, 97, 98, 99, -1, -1, 40, 41, - 56, 43, -1, 59, -1, 47, 76, 77, -1, -1, - -1, -1, -1, -1, 56, -1, -1, 59, -1, -1, - -1, -1, -1, 93, -1, -1, 96, -1, 98, 99, - 100, 101, 102, 103, 104, -1, -1, -1, -1, -1, - -1, 97, 98, 99, -1, -1, -1, -1, 53, -1, - -1, -1, -1, 58, -1, 97, 98, 99, 63, -1, - -1, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 89, 90, 91, 92, 93, 94, - 95, 96, 53, -1, -1, -1, -1, 58, -1, -1, - -1, -1, 63, -1, -1, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 89, 90, - 91, 92, 93, 94, 95, 96, 53, -1, -1, -1, - -1, 58, -1, -1, -1, -1, 63, -1, -1, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, -1, + 0, 46, 93, 3, 4, 274, 72, 274, 8, 3, + 4, 72, 20, 274, 11, 12, 13, 14, 15, 56, + 52, 40, 41, 56, 43, 25, 30, 52, 60, 48, + 49, 50, 51, 185, 34, 35, 52, 56, 190, 53, + 34, 35, 52, 0, 58, 64, 65, 47, 40, 41, + 100, 43, 62, 78, 58, 47, 98, 99, 103, 145, + 52, 98, 99, 62, 56, 98, 99, 59, 60, 62, + 53, 99, 72, 40, 41, 58, 43, 53, 72, 98, + 99, 48, 49, 50, 51, 53, 93, 53, 99, 56, + 58, 53, 58, 100, 94, 53, 58, 104, 53, 185, + 58, 60, 99, 58, 190, 97, 98, 99, 53, 40, + 41, 62, 43, 58, 266, 56, 47, 53, 56, 205, + 206, 53, 58, 209, 53, 56, 58, 54, 59, 58, + 53, 98, 99, 145, 52, 58, 136, 53, 60, 145, + 103, 104, 58, 143, 56, 145, 415, 52, 415, 60, + 150, 145, 56, 153, 415, 142, 58, 92, 93, 94, + 95, 96, 149, 57, 52, 152, 97, 98, 99, 94, + 95, 96, 52, 185, 60, 62, 52, 243, 190, 185, + 266, 181, 243, 52, 190, 185, 52, 195, 274, 52, + 190, 185, 52, 205, 206, 62, 190, 209, 62, 205, + 206, 62, 61, 209, 56, 205, 206, 52, 52, 209, + 52, 205, 206, 62, 57, 209, 26, 53, 66, 67, + 372, 62, 374, 62, 62, 291, 292, 62, 52, 27, + 291, 292, 104, 61, 61, 45, 52, 52, 48, 49, + 52, 52, 62, 243, 92, 93, 94, 95, 96, 243, + 57, 57, 57, 52, 266, 52, 52, 52, 62, 52, + 266, 413, 274, 25, 416, 30, 266, 53, 274, 53, + 62, 62, 266, 339, 274, 275, 263, 62, 339, 62, + 274, 62, 62, 62, 436, 437, 372, 378, 374, 62, + 53, 291, 292, 103, 53, 62, 62, 291, 292, 286, + 287, 62, 8, 8, 8, 115, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, + 130, 131, 132, 133, 145, 135, 209, 413, 415, 415, + 416, -1, 319, 40, 41, 322, 43, 195, 148, 339, + 47, 151, -1, -1, 154, 339, 156, -1, 158, 56, + 436, 437, 59, -1, -1, -1, -1, -1, -1, 404, + 372, 406, 374, 408, 185, -1, 372, -1, 374, 190, + -1, -1, 372, -1, 374, -1, 186, 377, 372, -1, + 374, -1, 369, -1, 205, 206, -1, -1, 209, 199, + 97, 98, 99, -1, 145, -1, -1, -1, 385, -1, + 387, 413, 389, 415, 416, -1, -1, 413, -1, 415, + 416, -1, -1, 413, -1, 415, 416, -1, -1, 413, + -1, 415, 416, -1, 436, 437, -1, 145, -1, -1, + 436, 437, -1, -1, 185, -1, 436, 437, -1, 190, + -1, -1, 436, 437, -1, 266, -1, -1, -1, 259, + -1, -1, -1, 274, 205, 206, -1, -1, 209, -1, + -1, 271, -1, 273, -1, -1, 276, 185, -1, -1, + -1, -1, 190, 40, 41, -1, 43, -1, 288, -1, + 47, -1, 145, -1, -1, -1, -1, 205, 206, 56, + -1, 209, 59, -1, -1, -1, 306, 307, 308, 309, + 310, 311, 312, 313, 314, 315, 316, 145, -1, -1, + -1, -1, -1, -1, 324, 266, -1, 145, -1, -1, + -1, -1, 185, 274, -1, -1, -1, 190, -1, -1, + 97, 98, 99, -1, -1, -1, -1, -1, 348, 349, + 350, 351, 205, 206, -1, -1, 209, 185, 266, -1, + -1, 372, 190, 374, -1, -1, 274, 185, -1, -1, + -1, -1, 190, 373, -1, 375, 376, 205, 206, -1, + -1, 209, 40, 41, -1, 43, -1, 205, 206, 47, + -1, 209, 40, 41, -1, 43, -1, -1, 56, 47, + -1, 59, 413, -1, 415, 416, -1, -1, 56, -1, + -1, 59, -1, 266, -1, -1, -1, 417, -1, -1, + -1, 274, -1, -1, -1, 436, 437, -1, -1, -1, + -1, 372, -1, 374, -1, -1, -1, -1, 266, 97, + 98, 99, 40, 41, -1, 43, 274, -1, 266, 97, + 98, 99, -1, 16, -1, -1, 274, -1, 56, -1, + -1, 59, -1, -1, 372, -1, 374, -1, -1, -1, + -1, -1, 413, -1, 415, 416, -1, 40, 41, 42, + 43, 44, 45, 46, -1, 48, 49, 50, 51, 52, + -1, -1, -1, 56, 57, 436, 437, 60, -1, 97, + 98, 99, -1, -1, -1, 413, -1, 415, 416, -1, + -1, -1, -1, 76, 77, 40, 41, -1, 43, 372, + -1, 374, 47, -1, -1, -1, -1, -1, 436, 437, + 93, 56, -1, 96, 59, 98, 99, 100, 101, 102, + 103, 104, 40, 41, 372, 43, 374, -1, -1, 47, + -1, -1, -1, -1, 372, -1, 374, -1, 56, -1, + 413, 59, 415, 416, -1, -1, -1, -1, -1, -1, + -1, -1, 97, 98, 99, -1, -1, -1, -1, -1, + -1, -1, -1, 436, 437, 413, -1, 415, 416, -1, + -1, -1, -1, -1, -1, 413, -1, 415, 416, 97, + 98, 99, -1, -1, -1, -1, -1, -1, 436, 437, + -1, -1, 11, -1, -1, -1, -1, -1, 436, 437, + 19, -1, -1, 22, 23, 24, -1, 26, 27, 28, + 29, -1, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, -1, 43, -1, -1, -1, -1, 48, + 49, 50, 51, -1, -1, 54, 55, 56, -1, -1, + -1, -1, -1, -1, 11, 64, 65, -1, -1, -1, + -1, -1, 19, -1, -1, 22, 23, 24, -1, 26, + 27, 28, 29, -1, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 41, 16, 43, -1, -1, 98, + 99, 48, 49, 50, 51, -1, -1, 54, 55, 56, + -1, -1, -1, -1, -1, -1, -1, 64, 65, 40, + 41, 42, 43, 44, 45, 46, -1, 48, 49, 50, + 51, 52, -1, -1, -1, 56, 66, 67, -1, 60, + -1, 62, 72, 73, 74, 75, -1, -1, -1, -1, + -1, 98, 99, -1, -1, 76, 77, -1, -1, -1, + 16, -1, 92, 93, 94, 95, 96, -1, -1, -1, + -1, -1, 93, -1, -1, 96, -1, 98, 99, 100, + 101, 102, 103, 104, 40, 41, 42, 43, 44, 45, + 46, -1, 48, 49, 50, 51, 52, -1, -1, -1, + 56, -1, -1, -1, 60, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 40, 41, -1, 43, -1, + 76, 77, 47, -1, -1, 16, -1, -1, -1, -1, + -1, 56, -1, -1, 59, -1, -1, 93, -1, -1, + 96, -1, 98, 99, 100, 101, 102, 103, 104, 40, + 41, 42, 43, 44, 45, 46, -1, 48, 49, 50, + 51, 52, -1, -1, -1, 56, -1, -1, -1, 60, + -1, -1, 97, 98, 99, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 76, 77, -1, -1, 66, + 67, -1, -1, 70, 71, 72, 73, 74, 75, -1, + -1, -1, 93, -1, -1, 96, -1, 98, 99, 100, + 101, 102, 103, 104, 12, 92, 93, 94, 95, 96, + -1, 19, -1, -1, 22, 23, 24, -1, 26, 27, + 28, 29, -1, 31, 32, 33, 34, 35, 36, 37, + 38, 39, 40, 41, -1, 43, -1, -1, -1, -1, + 48, 49, 50, 51, -1, -1, 54, -1, 56, -1, + -1, -1, -1, -1, -1, -1, 64, 65, 12, -1, + -1, -1, -1, -1, -1, 19, -1, -1, 22, 23, + 24, -1, 26, 27, 28, 29, -1, 31, 32, 33, + 34, 35, 36, 37, 38, 39, 40, 41, -1, 43, + 98, 99, -1, -1, 48, 49, 50, 51, -1, -1, + 54, -1, 56, -1, 17, 18, -1, 20, 21, -1, + 64, 65, -1, -1, -1, -1, -1, -1, -1, 40, + 41, -1, 43, -1, -1, -1, 47, 40, 41, -1, + 43, -1, -1, -1, -1, 56, -1, -1, 59, -1, + -1, -1, -1, 56, 98, 99, 59, -1, -1, -1, + -1, 64, 65, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 78, 79, 80, 81, 82, + 83, 84, 85, 86, 87, 88, 97, 98, 99, -1, + -1, -1, -1, -1, 97, 98, 99, 19, -1, -1, + 22, 23, 24, -1, 26, 27, 28, 29, -1, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, + -1, 43, 40, 41, -1, 43, 48, 49, 50, 51, + -1, -1, 54, -1, 56, -1, -1, -1, 56, -1, + -1, 59, 64, 65, -1, -1, 64, 65, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 89, 90, 91, 92, 93, 94, 95, 96, - 53, -1, -1, -1, -1, 58, -1, -1, -1, -1, - 63, -1, -1, 66, 67, 68, 69, 70, 71, 72, - 73, 74, 75, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 53, -1, 89, 90, 91, 92, - 93, 94, 95, 96, 63, -1, -1, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 53, -1, - 89, 90, 91, 92, 93, 94, 95, 96, 63, -1, - -1, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 53, -1, 89, 90, 91, 92, 93, 94, - 95, 96, 63, -1, -1, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 53, -1, 89, 90, - 91, 92, 93, 94, 95, 96, 63, -1, -1, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, -1, + 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, + 88, -1, -1, 53, -1, -1, 98, 99, 58, 97, + 98, 99, -1, 63, -1, -1, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 75, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 89, + 90, 91, 92, 93, 94, 95, 96, 53, -1, -1, + -1, -1, 58, -1, -1, -1, -1, 63, -1, -1, + 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 53, -1, 89, 90, 91, 92, 93, 94, 95, 96, - 63, -1, -1, 66, 67, 68, 69, 70, 71, 72, - 73, 74, 75, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 53, -1, 89, 90, 91, 92, - 93, 94, 95, 96, 63, -1, -1, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 53, -1, - 89, 90, 91, 92, 93, 94, 95, 96, 63, -1, - -1, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 53, -1, 89, 90, 91, 92, 93, 94, - 95, 96, 63, -1, -1, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 89, 90, - 91, 92, 93, 94, 95, 96, 57, -1, -1, -1, - -1, -1, 63, -1, -1, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 89, 90, - 91, 92, 93, 94, 95, 96, 57, -1, -1, -1, - -1, -1, 63, -1, -1, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 89, 90, - 91, 92, 93, 94, 95, 96, 57, -1, -1, -1, - -1, -1, 63, -1, -1, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 89, 90, - 91, 92, 93, 94, 95, 96, 57, -1, -1, -1, - -1, -1, 63, -1, -1, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 89, 90, - 91, 92, 93, 94, 95, 96, 58, -1, -1, -1, + -1, -1, -1, 89, 90, 91, 92, 93, 94, 95, + 96, 53, -1, -1, -1, -1, 58, -1, -1, -1, -1, 63, -1, -1, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 89, 90, 91, - 92, 93, 94, 95, 96, 61, -1, 63, -1, -1, + 92, 93, 94, 95, 96, 53, -1, -1, -1, -1, + 58, -1, -1, -1, -1, 63, -1, -1, 66, 67, + 68, 69, 70, 71, 72, 73, 74, 75, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 53, + -1, 89, 90, 91, 92, 93, 94, 95, 96, 63, + -1, -1, 66, 67, 68, 69, 70, 71, 72, 73, + 74, 75, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 53, -1, 89, 90, 91, 92, 93, + 94, 95, 96, 63, -1, -1, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 75, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 53, -1, 89, + 90, 91, 92, 93, 94, 95, 96, 63, -1, -1, + 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 53, -1, 89, 90, 91, 92, 93, 94, 95, + 96, 63, -1, -1, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 53, -1, 89, 90, 91, + 92, 93, 94, 95, 96, 63, -1, -1, 66, 67, + 68, 69, 70, 71, 72, 73, 74, 75, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 53, + -1, 89, 90, 91, 92, 93, 94, 95, 96, 63, + -1, -1, 66, 67, 68, 69, 70, 71, 72, 73, + 74, 75, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 53, -1, 89, 90, 91, 92, 93, + 94, 95, 96, 63, -1, -1, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 75, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 53, -1, 89, + 90, 91, 92, 93, 94, 95, 96, 63, -1, -1, + 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 89, 90, 91, 92, 93, 94, 95, + 96, 57, -1, -1, -1, -1, -1, 63, -1, -1, + 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 89, 90, 91, 92, 93, 94, 95, + 96, 57, -1, -1, -1, -1, -1, 63, -1, -1, + 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 89, 90, 91, 92, 93, 94, 95, + 96, 57, -1, -1, -1, -1, -1, 63, -1, -1, + 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 89, 90, 91, 92, 93, 94, 95, + 96, 57, -1, -1, -1, -1, -1, 63, -1, -1, + 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 89, 90, 91, 92, 93, 94, 95, + 96, 57, -1, -1, -1, -1, -1, 63, -1, -1, + 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 89, 90, 91, 92, 93, 94, 95, + 96, 58, -1, -1, -1, -1, 63, -1, -1, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 89, 90, 91, 92, 93, 94, 95, 96, + 61, -1, 63, -1, -1, 66, 67, 68, 69, 70, + 71, 72, 73, 74, 75, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 89, 90, + 91, 92, 93, 94, 95, 96, 62, 63, -1, -1, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 89, 90, 91, 92, 93, 94, 95, @@ -4346,74 +4397,68 @@ namespace xsk { namespace gsc { namespace h1 { -1, -1, -1, -1, -1, -1, -1, -1, 89, 90, 91, 92, 93, 94, 95, 96, 62, 63, -1, -1, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 89, 90, 91, 92, 93, 94, 95, - 96, 62, 63, -1, -1, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 63, -1, -1, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 89, 90, - 91, 92, 93, 94, 95, 96, -1, -1, -1, -1, - -1, 89, 90, 91, 92, 93, 94, 95, 96, 66, - 67, -1, 69, 70, 71, 72, 73, 74, 75, 66, - 67, -1, -1, 70, 71, 72, 73, 74, 75, -1, - -1, -1, 89, 90, 91, 92, 93, 94, 95, 96, - -1, -1, 89, 90, 91, 92, 93, 94, 95, 96, - 66, 67, -1, -1, 70, 71, 72, 73, 74, 75, - 66, 67, -1, -1, 70, 71, 72, 73, 74, 75, - -1, -1, -1, -1, 90, 91, 92, 93, 94, 95, - 96, -1, -1, -1, 90, -1, 92, 93, 94, 95, - 96, 66, 67, -1, -1, 70, 71, 72, 73, 74, - 75, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 92, 93, 94, - 95, 96 + 63, -1, -1, 66, 67, 68, 69, 70, 71, 72, + 73, 74, 75, 89, 90, 91, 92, 93, 94, 95, + 96, -1, -1, -1, -1, -1, 89, 90, 91, 92, + 93, 94, 95, 96, 66, 67, -1, 69, 70, 71, + 72, 73, 74, 75, 66, 67, -1, -1, 70, 71, + 72, 73, 74, 75, -1, -1, -1, 89, 90, 91, + 92, 93, 94, 95, 96, -1, -1, 89, 90, 91, + 92, 93, 94, 95, 96, 66, 67, -1, -1, 70, + 71, 72, 73, 74, 75, 66, 67, -1, -1, 70, + 71, 72, 73, 74, 75, -1, -1, -1, -1, 90, + 91, 92, 93, 94, 95, 96, -1, -1, -1, 90, + -1, 92, 93, 94, 95, 96 }; const unsigned char parser::yystos_[] = { 0, 11, 12, 13, 14, 15, 99, 115, 116, 117, - 118, 119, 120, 121, 122, 185, 98, 185, 186, 186, + 118, 119, 120, 121, 122, 187, 98, 187, 188, 188, 52, 0, 117, 118, 119, 52, 78, 62, 62, 100, - 188, 167, 185, 16, 40, 41, 42, 43, 44, 45, + 190, 169, 187, 16, 40, 41, 42, 43, 44, 45, 46, 48, 49, 50, 51, 52, 56, 60, 76, 77, - 93, 96, 101, 102, 103, 104, 152, 157, 158, 159, - 160, 161, 162, 163, 164, 165, 166, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, - 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, - 193, 194, 53, 53, 58, 56, 185, 186, 56, 185, - 186, 56, 152, 56, 57, 152, 168, 169, 185, 152, - 152, 103, 104, 99, 62, 63, 66, 67, 68, 69, + 93, 96, 101, 102, 103, 104, 154, 159, 160, 161, + 162, 163, 164, 165, 166, 167, 168, 172, 173, 174, + 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, + 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, + 195, 196, 53, 53, 58, 56, 187, 188, 56, 187, + 188, 56, 154, 56, 57, 154, 170, 171, 187, 154, + 154, 103, 104, 99, 62, 63, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 89, 90, 91, 92, - 93, 94, 95, 96, 47, 56, 59, 97, 164, 165, - 185, 186, 52, 60, 62, 54, 125, 185, 56, 52, - 60, 56, 52, 60, 56, 53, 58, 152, 58, 57, - 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, - 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, - 185, 60, 168, 169, 185, 11, 19, 22, 23, 24, + 93, 94, 95, 96, 47, 56, 59, 97, 166, 167, + 187, 188, 52, 60, 62, 54, 128, 187, 56, 52, + 60, 56, 52, 60, 56, 53, 58, 154, 58, 57, + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 187, 60, 170, 171, 187, 11, 19, 22, 23, 24, 26, 27, 28, 29, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 55, 56, 64, 65, 123, 124, 125, - 126, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 150, 151, 154, 155, 156, 162, 163, - 171, 172, 175, 179, 180, 181, 182, 185, 152, 168, - 185, 152, 168, 185, 152, 152, 57, 152, 61, 57, - 185, 53, 52, 12, 126, 152, 62, 52, 62, 52, - 123, 52, 52, 52, 52, 93, 188, 192, 61, 62, - 62, 62, 152, 62, 52, 52, 56, 162, 163, 175, - 175, 55, 123, 62, 62, 62, 62, 62, 17, 18, - 20, 21, 64, 65, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 57, 53, 52, 57, 53, - 52, 57, 58, 57, 152, 168, 12, 62, 53, 152, - 27, 152, 127, 154, 155, 156, 175, 185, 152, 61, - 61, 62, 168, 168, 152, 52, 52, 52, 52, 152, - 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, - 57, 168, 57, 168, 57, 152, 52, 53, 62, 53, - 52, 53, 62, 30, 58, 53, 53, 53, 152, 152, - 152, 152, 52, 53, 52, 53, 52, 53, 168, 123, - 152, 123, 152, 153, 152, 185, 125, 62, 62, 53, - 53, 58, 53, 58, 53, 58, 168, 168, 168, 53, - 25, 53, 62, 53, 30, 62, 62, 169, 62, 169, - 62, 169, 53, 53, 53, 123, 62, 127, 123, 152, - 53, 53, 53, 53, 53, 62, 62, 62, 123, 123 + 37, 38, 39, 55, 56, 64, 65, 123, 124, 126, + 127, 128, 130, 131, 132, 133, 134, 135, 136, 137, + 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, + 148, 149, 150, 151, 152, 153, 156, 157, 158, 164, + 165, 173, 174, 177, 181, 182, 183, 184, 187, 154, + 170, 187, 154, 170, 187, 154, 154, 57, 154, 61, + 57, 187, 53, 52, 12, 123, 125, 154, 62, 52, + 62, 52, 123, 52, 52, 52, 52, 93, 190, 194, + 61, 62, 62, 62, 154, 62, 52, 52, 56, 164, + 165, 177, 177, 55, 124, 62, 62, 62, 62, 62, + 17, 18, 20, 21, 64, 65, 78, 79, 80, 81, + 82, 83, 84, 85, 86, 87, 88, 57, 53, 52, + 57, 53, 52, 57, 58, 57, 154, 170, 12, 123, + 62, 53, 154, 27, 154, 129, 156, 157, 158, 177, + 187, 154, 61, 61, 62, 170, 170, 154, 52, 52, + 52, 52, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 57, 170, 57, 170, 57, 154, 52, + 53, 62, 53, 52, 53, 62, 30, 58, 53, 53, + 53, 154, 154, 154, 154, 52, 53, 52, 53, 52, + 53, 170, 123, 154, 123, 154, 155, 154, 187, 128, + 62, 62, 53, 53, 58, 53, 58, 53, 58, 170, + 170, 170, 53, 25, 53, 62, 53, 30, 62, 62, + 171, 62, 171, 62, 171, 53, 53, 53, 123, 62, + 129, 123, 154, 53, 53, 53, 53, 53, 62, 62, + 62, 123, 123 }; const unsigned char @@ -4423,24 +4468,25 @@ namespace xsk { namespace gsc { namespace h1 { 117, 118, 119, 119, 119, 119, 119, 120, 121, 122, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, - 123, 123, 123, 123, 123, 123, 124, 124, 125, 125, - 126, 126, 127, 127, 127, 127, 128, 128, 129, 129, - 129, 130, 131, 131, 132, 133, 133, 134, 134, 135, - 136, 136, 137, 138, 139, 140, 141, 142, 142, 143, - 144, 144, 145, 146, 147, 148, 148, 149, 150, 151, - 152, 152, 152, 153, 153, 154, 154, 154, 154, 154, - 154, 154, 154, 154, 154, 154, 155, 155, 156, 156, - 157, 158, 158, 158, 158, 158, 158, 158, 158, 158, - 158, 158, 158, 158, 158, 158, 158, 158, 158, 159, - 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, - 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, - 159, 159, 159, 159, 159, 159, 159, 160, 161, 162, - 162, 163, 163, 164, 164, 164, 164, 164, 164, 165, - 165, 165, 165, 166, 167, 167, 167, 168, 168, 169, - 169, 170, 170, 171, 172, 172, 173, 174, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 186, 187, - 188, 189, 190, 191, 191, 192, 192, 193, 194 + 123, 123, 123, 123, 123, 124, 124, 125, 125, 126, + 126, 127, 127, 128, 128, 129, 129, 129, 129, 130, + 130, 131, 131, 131, 132, 133, 133, 134, 135, 135, + 136, 136, 137, 138, 138, 139, 140, 141, 142, 143, + 144, 144, 145, 146, 146, 147, 148, 149, 150, 150, + 151, 152, 153, 154, 154, 154, 155, 155, 156, 156, + 156, 156, 156, 156, 156, 156, 156, 156, 156, 157, + 157, 158, 158, 159, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 162, 163, 164, 164, 165, 165, 166, 166, 166, 166, + 166, 166, 167, 167, 167, 167, 168, 169, 169, 169, + 170, 170, 171, 171, 172, 172, 173, 174, 174, 175, + 176, 177, 177, 177, 177, 177, 177, 177, 177, 177, + 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, + 188, 188, 189, 190, 191, 192, 193, 193, 194, 194, + 195, 196 }; const signed char @@ -4450,24 +4496,25 @@ namespace xsk { namespace gsc { namespace h1 { 3, 3, 1, 1, 1, 1, 1, 5, 4, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 3, 2, 3, 2, - 2, 1, 1, 1, 1, 0, 2, 2, 2, 2, - 2, 6, 8, 6, 3, 8, 6, 8, 6, 2, - 2, 4, 5, 7, 5, 7, 9, 7, 9, 5, - 3, 3, 2, 2, 2, 3, 2, 2, 5, 5, - 1, 1, 1, 1, 0, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, - 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, + 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, + 1, 3, 2, 3, 2, 1, 1, 1, 0, 2, + 2, 2, 2, 2, 6, 8, 6, 3, 8, 6, + 8, 6, 2, 2, 4, 5, 7, 5, 7, 9, + 7, 9, 5, 3, 3, 2, 2, 2, 3, 2, + 2, 5, 5, 1, 1, 1, 1, 0, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, + 2, 2, 2, 5, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, - 1, 2, 2, 4, 6, 5, 7, 5, 7, 8, - 9, 9, 9, 3, 3, 1, 0, 1, 0, 3, - 1, 2, 3, 4, 3, 2, 2, 3, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, - 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, - 1, 1, 7, 2, 1, 2, 1, 1, 1 + 2, 2, 1, 1, 2, 2, 4, 6, 5, 7, + 5, 7, 8, 9, 9, 9, 3, 3, 1, 0, + 1, 0, 3, 1, 2, 3, 4, 3, 2, 2, + 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 2, 1, 1, 1, 1, 1, 2, 1, 1, + 1, 1, 1, 1, 1, 7, 2, 1, 2, 1, + 1, 1 }; @@ -4477,28 +4524,29 @@ namespace xsk { namespace gsc { namespace h1 { const short parser::yyrline_[] = { - 0, 256, 256, 257, 261, 263, 265, 267, 269, 271, - 276, 280, 285, 286, 287, 288, 289, 293, 298, 303, - 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, - 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, - 328, 329, 330, 331, 332, 333, 337, 338, 342, 343, - 347, 349, 354, 356, 358, 361, 365, 367, 372, 374, - 376, 381, 386, 388, 393, 398, 400, 405, 407, 412, - 417, 419, 424, 429, 434, 439, 444, 449, 451, 456, - 461, 463, 468, 473, 478, 483, 485, 490, 495, 500, - 505, 506, 507, 511, 512, 516, 518, 520, 522, 524, - 526, 528, 530, 532, 534, 536, 541, 543, 548, 550, - 555, 560, 562, 564, 566, 568, 570, 572, 574, 576, - 578, 580, 582, 584, 586, 588, 590, 592, 594, 599, - 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, - 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, - 620, 621, 622, 623, 624, 625, 626, 630, 635, 640, - 641, 644, 645, 649, 651, 653, 655, 657, 659, 664, - 666, 668, 670, 675, 680, 682, 685, 689, 692, 696, - 698, 703, 705, 710, 715, 717, 722, 727, 732, 733, - 734, 735, 736, 737, 738, 739, 740, 744, 749, 754, - 759, 764, 769, 774, 779, 784, 789, 794, 796, 801, - 806, 811, 816, 821, 823, 828, 830, 835, 840 + 0, 258, 258, 259, 263, 265, 267, 269, 271, 273, + 278, 282, 287, 288, 289, 290, 291, 295, 300, 305, + 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, + 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, + 330, 331, 332, 333, 334, 338, 339, 343, 345, 350, + 352, 357, 358, 362, 363, 367, 369, 371, 374, 378, + 380, 385, 387, 389, 394, 399, 401, 406, 411, 413, + 418, 420, 425, 430, 432, 437, 442, 447, 452, 457, + 462, 464, 469, 474, 476, 481, 486, 491, 496, 498, + 503, 508, 513, 518, 519, 520, 524, 525, 529, 531, + 533, 535, 537, 539, 541, 543, 545, 547, 549, 554, + 556, 561, 563, 568, 573, 575, 577, 579, 581, 583, + 585, 587, 589, 591, 593, 595, 597, 599, 601, 603, + 605, 607, 612, 613, 614, 615, 616, 617, 618, 619, + 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, + 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, + 643, 648, 653, 654, 657, 658, 662, 664, 666, 668, + 670, 672, 677, 679, 681, 683, 688, 693, 695, 698, + 702, 705, 709, 711, 716, 718, 723, 728, 730, 735, + 740, 745, 746, 747, 748, 749, 750, 751, 752, 753, + 757, 762, 767, 772, 777, 782, 787, 792, 797, 802, + 807, 809, 814, 819, 824, 829, 834, 836, 841, 843, + 848, 853 }; void @@ -4531,9 +4579,9 @@ namespace xsk { namespace gsc { namespace h1 { #line 13 "parser.ypp" } } } // xsk::gsc::h1 -#line 4535 "parser.cpp" +#line 4583 "parser.cpp" -#line 844 "parser.ypp" +#line 857 "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 d6e34997..8e16ba45 100644 --- a/src/h1/xsk/parser.hpp +++ b/src/h1/xsk/parser.hpp @@ -537,6 +537,7 @@ namespace xsk { namespace gsc { namespace h1 { char dummy39[sizeof (ast::program::ptr)]; // stmt + // stmt_or_dev char dummy40[sizeof (ast::stmt)]; // stmt_assign @@ -560,64 +561,67 @@ namespace xsk { namespace gsc { namespace h1 { // stmt_default char dummy47[sizeof (ast::stmt_default::ptr)]; + // stmt_dev + char dummy48[sizeof (ast::stmt_dev::ptr)]; + // stmt_dowhile - char dummy48[sizeof (ast::stmt_dowhile::ptr)]; + char dummy49[sizeof (ast::stmt_dowhile::ptr)]; // stmt_endon - char dummy49[sizeof (ast::stmt_endon::ptr)]; + char dummy50[sizeof (ast::stmt_endon::ptr)]; // stmt_expr - char dummy50[sizeof (ast::stmt_expr::ptr)]; + char dummy51[sizeof (ast::stmt_expr::ptr)]; // stmt_for - char dummy51[sizeof (ast::stmt_for::ptr)]; + char dummy52[sizeof (ast::stmt_for::ptr)]; // stmt_foreach - char dummy52[sizeof (ast::stmt_foreach::ptr)]; + char dummy53[sizeof (ast::stmt_foreach::ptr)]; // stmt_if - char dummy53[sizeof (ast::stmt_if::ptr)]; + char dummy54[sizeof (ast::stmt_if::ptr)]; // stmt_ifelse - char dummy54[sizeof (ast::stmt_ifelse::ptr)]; + char dummy55[sizeof (ast::stmt_ifelse::ptr)]; - // stmt_dev - // stmt_block // stmt_list - char dummy55[sizeof (ast::stmt_list::ptr)]; + // stmt_or_dev_list + // stmt_block + char dummy56[sizeof (ast::stmt_list::ptr)]; // stmt_notify - char dummy56[sizeof (ast::stmt_notify::ptr)]; + char dummy57[sizeof (ast::stmt_notify::ptr)]; // stmt_prof_begin - char dummy57[sizeof (ast::stmt_prof_begin::ptr)]; + char dummy58[sizeof (ast::stmt_prof_begin::ptr)]; // stmt_prof_end - char dummy58[sizeof (ast::stmt_prof_end::ptr)]; + char dummy59[sizeof (ast::stmt_prof_end::ptr)]; // stmt_return - char dummy59[sizeof (ast::stmt_return::ptr)]; + char dummy60[sizeof (ast::stmt_return::ptr)]; // stmt_switch - char dummy60[sizeof (ast::stmt_switch::ptr)]; + char dummy61[sizeof (ast::stmt_switch::ptr)]; // stmt_wait - char dummy61[sizeof (ast::stmt_wait::ptr)]; + char dummy62[sizeof (ast::stmt_wait::ptr)]; // stmt_waitframe - char dummy62[sizeof (ast::stmt_waitframe::ptr)]; + char dummy63[sizeof (ast::stmt_waitframe::ptr)]; // stmt_waittill - char dummy63[sizeof (ast::stmt_waittill::ptr)]; + char dummy64[sizeof (ast::stmt_waittill::ptr)]; // stmt_waittillframeend - char dummy64[sizeof (ast::stmt_waittillframeend::ptr)]; + char dummy65[sizeof (ast::stmt_waittillframeend::ptr)]; // stmt_waittillmatch - char dummy65[sizeof (ast::stmt_waittillmatch::ptr)]; + char dummy66[sizeof (ast::stmt_waittillmatch::ptr)]; // stmt_while - char dummy66[sizeof (ast::stmt_while::ptr)]; + char dummy67[sizeof (ast::stmt_while::ptr)]; // "field" // "path" @@ -627,7 +631,7 @@ namespace xsk { namespace gsc { namespace h1 { // "color" // "float" // "integer" - char dummy67[sizeof (std::string)]; + char dummy68[sizeof (std::string)]; }; /// The size of the largest semantic type. @@ -932,77 +936,79 @@ namespace xsk { namespace gsc { namespace h1 { S_decl_constant = 121, // decl_constant S_decl_thread = 122, // decl_thread S_stmt = 123, // stmt - S_stmt_dev = 124, // stmt_dev - S_stmt_block = 125, // stmt_block - S_stmt_list = 126, // stmt_list - S_stmt_expr = 127, // stmt_expr - S_stmt_call = 128, // stmt_call - S_stmt_assign = 129, // stmt_assign - S_stmt_endon = 130, // stmt_endon - S_stmt_notify = 131, // stmt_notify - S_stmt_wait = 132, // stmt_wait - S_stmt_waittill = 133, // stmt_waittill - S_stmt_waittillmatch = 134, // stmt_waittillmatch - S_stmt_waittillframeend = 135, // stmt_waittillframeend - S_stmt_waitframe = 136, // stmt_waitframe - S_stmt_if = 137, // stmt_if - S_stmt_ifelse = 138, // stmt_ifelse - S_stmt_while = 139, // stmt_while - S_stmt_dowhile = 140, // stmt_dowhile - S_stmt_for = 141, // stmt_for - S_stmt_foreach = 142, // stmt_foreach - S_stmt_switch = 143, // stmt_switch - S_stmt_case = 144, // stmt_case - S_stmt_default = 145, // stmt_default - S_stmt_break = 146, // stmt_break - S_stmt_continue = 147, // stmt_continue - S_stmt_return = 148, // stmt_return - S_stmt_breakpoint = 149, // stmt_breakpoint - S_stmt_prof_begin = 150, // stmt_prof_begin - S_stmt_prof_end = 151, // stmt_prof_end - S_expr = 152, // expr - S_expr_or_empty = 153, // expr_or_empty - S_expr_assign = 154, // expr_assign - S_expr_increment = 155, // expr_increment - S_expr_decrement = 156, // expr_decrement - S_expr_ternary = 157, // expr_ternary - S_expr_binary = 158, // expr_binary - S_expr_primitive = 159, // expr_primitive - S_expr_complement = 160, // expr_complement - S_expr_not = 161, // expr_not - S_expr_call = 162, // expr_call - S_expr_method = 163, // expr_method - S_expr_function = 164, // expr_function - S_expr_pointer = 165, // expr_pointer - S_expr_add_array = 166, // expr_add_array - S_expr_parameters = 167, // expr_parameters - S_expr_arguments = 168, // expr_arguments - S_expr_arguments_no_empty = 169, // expr_arguments_no_empty - S_expr_reference = 170, // expr_reference - S_expr_array = 171, // expr_array - S_expr_field = 172, // expr_field - S_expr_size = 173, // expr_size - S_expr_paren = 174, // expr_paren - S_expr_object = 175, // expr_object - S_expr_thisthread = 176, // expr_thisthread - S_expr_empty_array = 177, // expr_empty_array - S_expr_undefined = 178, // expr_undefined - S_expr_game = 179, // expr_game - S_expr_self = 180, // expr_self - S_expr_anim = 181, // expr_anim - S_expr_level = 182, // expr_level - S_expr_animation = 183, // expr_animation - S_expr_animtree = 184, // expr_animtree - S_expr_identifier = 185, // expr_identifier - S_expr_path = 186, // expr_path - S_expr_istring = 187, // expr_istring - S_expr_string = 188, // expr_string - S_expr_color = 189, // expr_color - S_expr_vector = 190, // expr_vector - S_expr_float = 191, // expr_float - S_expr_integer = 192, // expr_integer - S_expr_false = 193, // expr_false - S_expr_true = 194 // expr_true + S_stmt_or_dev = 124, // stmt_or_dev + S_stmt_list = 125, // stmt_list + S_stmt_or_dev_list = 126, // stmt_or_dev_list + S_stmt_dev = 127, // stmt_dev + S_stmt_block = 128, // stmt_block + S_stmt_expr = 129, // stmt_expr + S_stmt_call = 130, // stmt_call + S_stmt_assign = 131, // stmt_assign + S_stmt_endon = 132, // stmt_endon + S_stmt_notify = 133, // stmt_notify + S_stmt_wait = 134, // stmt_wait + S_stmt_waittill = 135, // stmt_waittill + S_stmt_waittillmatch = 136, // stmt_waittillmatch + S_stmt_waittillframeend = 137, // stmt_waittillframeend + S_stmt_waitframe = 138, // stmt_waitframe + S_stmt_if = 139, // stmt_if + S_stmt_ifelse = 140, // stmt_ifelse + S_stmt_while = 141, // stmt_while + S_stmt_dowhile = 142, // stmt_dowhile + S_stmt_for = 143, // stmt_for + S_stmt_foreach = 144, // stmt_foreach + S_stmt_switch = 145, // stmt_switch + S_stmt_case = 146, // stmt_case + S_stmt_default = 147, // stmt_default + S_stmt_break = 148, // stmt_break + S_stmt_continue = 149, // stmt_continue + S_stmt_return = 150, // stmt_return + S_stmt_breakpoint = 151, // stmt_breakpoint + S_stmt_prof_begin = 152, // stmt_prof_begin + S_stmt_prof_end = 153, // stmt_prof_end + S_expr = 154, // expr + S_expr_or_empty = 155, // expr_or_empty + S_expr_assign = 156, // expr_assign + S_expr_increment = 157, // expr_increment + S_expr_decrement = 158, // expr_decrement + S_expr_ternary = 159, // expr_ternary + S_expr_binary = 160, // expr_binary + S_expr_primitive = 161, // expr_primitive + S_expr_complement = 162, // expr_complement + S_expr_not = 163, // expr_not + S_expr_call = 164, // expr_call + S_expr_method = 165, // expr_method + S_expr_function = 166, // expr_function + S_expr_pointer = 167, // expr_pointer + S_expr_add_array = 168, // expr_add_array + S_expr_parameters = 169, // expr_parameters + S_expr_arguments = 170, // expr_arguments + S_expr_arguments_no_empty = 171, // expr_arguments_no_empty + S_expr_reference = 172, // expr_reference + S_expr_array = 173, // expr_array + S_expr_field = 174, // expr_field + S_expr_size = 175, // expr_size + S_expr_paren = 176, // expr_paren + S_expr_object = 177, // expr_object + S_expr_thisthread = 178, // expr_thisthread + S_expr_empty_array = 179, // expr_empty_array + S_expr_undefined = 180, // expr_undefined + S_expr_game = 181, // expr_game + S_expr_self = 182, // expr_self + S_expr_anim = 183, // expr_anim + S_expr_level = 184, // expr_level + S_expr_animation = 185, // expr_animation + S_expr_animtree = 186, // expr_animtree + S_expr_identifier = 187, // expr_identifier + S_expr_path = 188, // expr_path + S_expr_istring = 189, // expr_istring + S_expr_string = 190, // expr_string + S_expr_color = 191, // expr_color + S_expr_vector = 192, // expr_vector + S_expr_float = 193, // expr_float + S_expr_integer = 194, // expr_integer + S_expr_false = 195, // expr_false + S_expr_true = 196 // expr_true }; }; @@ -1206,6 +1212,7 @@ namespace xsk { namespace gsc { namespace h1 { break; case symbol_kind::S_stmt: // stmt + case symbol_kind::S_stmt_or_dev: // stmt_or_dev value.move< ast::stmt > (std::move (that.value)); break; @@ -1237,6 +1244,10 @@ namespace xsk { namespace gsc { namespace h1 { value.move< ast::stmt_default::ptr > (std::move (that.value)); break; + case symbol_kind::S_stmt_dev: // stmt_dev + value.move< ast::stmt_dev::ptr > (std::move (that.value)); + break; + case symbol_kind::S_stmt_dowhile: // stmt_dowhile value.move< ast::stmt_dowhile::ptr > (std::move (that.value)); break; @@ -1265,9 +1276,9 @@ namespace xsk { namespace gsc { namespace h1 { value.move< ast::stmt_ifelse::ptr > (std::move (that.value)); break; - case symbol_kind::S_stmt_dev: // stmt_dev - case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list + case symbol_kind::S_stmt_or_dev_list: // stmt_or_dev_list + case symbol_kind::S_stmt_block: // stmt_block value.move< ast::stmt_list::ptr > (std::move (that.value)); break; @@ -2007,6 +2018,20 @@ namespace xsk { namespace gsc { namespace h1 { {} #endif +#if 201103L <= YY_CPLUSPLUS + basic_symbol (typename Base::kind_type t, ast::stmt_dev::ptr&& v, location_type&& l) + : Base (t) + , value (std::move (v)) + , location (std::move (l)) + {} +#else + basic_symbol (typename Base::kind_type t, const ast::stmt_dev::ptr& v, const location_type& l) + : Base (t) + , value (v) + , location (l) + {} +#endif + #if 201103L <= YY_CPLUSPLUS basic_symbol (typename Base::kind_type t, ast::stmt_dowhile::ptr&& v, location_type&& l) : Base (t) @@ -2476,6 +2501,7 @@ switch (yykind) break; case symbol_kind::S_stmt: // stmt + case symbol_kind::S_stmt_or_dev: // stmt_or_dev value.template destroy< ast::stmt > (); break; @@ -2507,6 +2533,10 @@ switch (yykind) value.template destroy< ast::stmt_default::ptr > (); break; + case symbol_kind::S_stmt_dev: // stmt_dev + value.template destroy< ast::stmt_dev::ptr > (); + break; + case symbol_kind::S_stmt_dowhile: // stmt_dowhile value.template destroy< ast::stmt_dowhile::ptr > (); break; @@ -2535,9 +2565,9 @@ switch (yykind) value.template destroy< ast::stmt_ifelse::ptr > (); break; - case symbol_kind::S_stmt_dev: // stmt_dev - case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list + case symbol_kind::S_stmt_or_dev_list: // stmt_or_dev_list + case symbol_kind::S_stmt_block: // stmt_block value.template destroy< ast::stmt_list::ptr > (); break; @@ -4806,8 +4836,8 @@ switch (yykind) /// Constants. enum { - yylast_ = 2291, ///< Last index in yytable_. - yynnts_ = 81, ///< Number of nonterminal symbols. + yylast_ = 2285, ///< Last index in yytable_. + yynnts_ = 83, ///< Number of nonterminal symbols. yyfinal_ = 21 ///< Termination state number. }; @@ -5001,6 +5031,7 @@ switch (yykind) break; case symbol_kind::S_stmt: // stmt + case symbol_kind::S_stmt_or_dev: // stmt_or_dev value.copy< ast::stmt > (YY_MOVE (that.value)); break; @@ -5032,6 +5063,10 @@ switch (yykind) value.copy< ast::stmt_default::ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_stmt_dev: // stmt_dev + value.copy< ast::stmt_dev::ptr > (YY_MOVE (that.value)); + break; + case symbol_kind::S_stmt_dowhile: // stmt_dowhile value.copy< ast::stmt_dowhile::ptr > (YY_MOVE (that.value)); break; @@ -5060,9 +5095,9 @@ switch (yykind) value.copy< ast::stmt_ifelse::ptr > (YY_MOVE (that.value)); break; - case symbol_kind::S_stmt_dev: // stmt_dev - case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list + case symbol_kind::S_stmt_or_dev_list: // stmt_or_dev_list + case symbol_kind::S_stmt_block: // stmt_block value.copy< ast::stmt_list::ptr > (YY_MOVE (that.value)); break; @@ -5317,6 +5352,7 @@ switch (yykind) break; case symbol_kind::S_stmt: // stmt + case symbol_kind::S_stmt_or_dev: // stmt_or_dev value.move< ast::stmt > (YY_MOVE (s.value)); break; @@ -5348,6 +5384,10 @@ switch (yykind) value.move< ast::stmt_default::ptr > (YY_MOVE (s.value)); break; + case symbol_kind::S_stmt_dev: // stmt_dev + value.move< ast::stmt_dev::ptr > (YY_MOVE (s.value)); + break; + case symbol_kind::S_stmt_dowhile: // stmt_dowhile value.move< ast::stmt_dowhile::ptr > (YY_MOVE (s.value)); break; @@ -5376,9 +5416,9 @@ switch (yykind) value.move< ast::stmt_ifelse::ptr > (YY_MOVE (s.value)); break; - case symbol_kind::S_stmt_dev: // stmt_dev - case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list + case symbol_kind::S_stmt_or_dev_list: // stmt_or_dev_list + case symbol_kind::S_stmt_block: // stmt_block value.move< ast::stmt_list::ptr > (YY_MOVE (s.value)); break; @@ -5500,7 +5540,7 @@ switch (yykind) #line 13 "parser.ypp" } } } // xsk::gsc::h1 -#line 5504 "parser.hpp" +#line 5544 "parser.hpp" diff --git a/src/h1/xsk/resolver.cpp b/src/h1/xsk/resolver.cpp index aaf16f11..0a7e2fd6 100644 --- a/src/h1/xsk/resolver.cpp +++ b/src/h1/xsk/resolver.cpp @@ -46,7 +46,7 @@ auto resolver::opcode_name(std::uint8_t id) -> std::string auto resolver::function_id(const std::string& name) -> std::uint16_t { - if(name.starts_with("_func_")) + if (name.starts_with("_func_")) { return std::stoul(name.substr(6), nullptr, 16); } @@ -75,7 +75,7 @@ auto resolver::function_name(std::uint16_t id) -> std::string auto resolver::method_id(const std::string& name) -> std::uint16_t { - if(name.starts_with("_meth_")) + if (name.starts_with("_meth_")) { return std::stoul(name.substr(6), nullptr, 16); } @@ -104,7 +104,7 @@ auto resolver::method_name(std::uint16_t id) -> std::string auto resolver::file_id(const std::string& name) -> std::uint16_t { - if(name.starts_with("_id_")) + if (name.starts_with("_id_")) { return std::stoul(name.substr(4), nullptr, 16); } @@ -133,7 +133,7 @@ auto resolver::file_name(std::uint16_t id) -> std::string auto resolver::token_id(const std::string& name) -> std::uint16_t { - if(name.starts_with("_id_")) + if (name.starts_with("_id_")) { return std::stoul(name.substr(4), nullptr, 16); } @@ -162,7 +162,7 @@ auto resolver::token_name(std::uint16_t id) -> std::string auto resolver::find_function(const std::string& name) -> bool { - if(name.starts_with("_func_")) return true; + if (name.starts_with("_func_")) return true; const auto itr = function_map_rev.find(name); @@ -176,7 +176,7 @@ auto resolver::find_function(const std::string& name) -> bool auto resolver::find_method(const std::string& name) -> bool { - if(name.starts_with("_meth_")) return true; + if (name.starts_with("_meth_")) return true; const auto itr = method_map_rev.find(name); @@ -190,7 +190,7 @@ auto resolver::find_method(const std::string& name) -> bool auto resolver::make_token(std::string_view str) -> std::string { - if(str.starts_with("_id_") || str.starts_with("_func_") || str.starts_with("_meth_")) + if (str.starts_with("_id_") || str.starts_with("_func_") || str.starts_with("_meth_")) { return std::string(str); } @@ -213,7 +213,7 @@ auto resolver::file_data(const std::string& name) -> std::tuplefirst ,reinterpret_cast(itr->second.data()), itr->second.size() }; } @@ -222,7 +222,7 @@ auto resolver::file_data(const std::string& name) -> std::tuplefirst, reinterpret_cast(res.first->second.data()), res.first->second.size() }; } @@ -3966,7 +3966,7 @@ struct __init__ __init__() { static bool init = false; - if(init) return; + if (init) return; init = true; opcode_map.reserve(opcode_list.size()); @@ -3980,31 +3980,31 @@ struct __init__ token_map.reserve(token_list.size()); token_map_rev.reserve(token_list.size()); - for(const auto& entry : opcode_list) + for (const auto& entry : opcode_list) { opcode_map.insert({ entry.first, entry.second }); opcode_map_rev.insert({ entry.second, entry.first }); } - for(const auto& entry : function_list) + for (const auto& entry : function_list) { function_map.insert({ entry.first, entry.second }); function_map_rev.insert({ entry.second, entry.first }); } - for(const auto& entry : method_list) + for (const auto& entry : method_list) { method_map.insert({ entry.first, entry.second }); method_map_rev.insert({ entry.second, entry.first }); } - for(const auto& entry : file_list) + for (const auto& entry : file_list) { file_map.insert({ entry.first, entry.second }); file_map_rev.insert({ entry.second, entry.first }); } - for(const auto& entry : token_list) + for (const auto& entry : token_list) { token_map.insert({ entry.first, entry.second }); token_map_rev.insert({ entry.second, entry.first }); diff --git a/src/h2/xsk/assembler.cpp b/src/h2/xsk/assembler.cpp index 47db133e..48a69cf4 100644 --- a/src/h2/xsk/assembler.cpp +++ b/src/h2/xsk/assembler.cpp @@ -571,4 +571,4 @@ auto assembler::resolve_label(const std::string& name) -> std::int32_t throw asm_error("Couldn't resolve label address of '" + name + "'!"); } -} // namespace xsk::gsc::h2 +} // namespace xsk::gsc::h2 diff --git a/src/h2/xsk/compiler.cpp b/src/h2/xsk/compiler.cpp index 1123a5c3..d1999b2d 100644 --- a/src/h2/xsk/compiler.cpp +++ b/src/h2/xsk/compiler.cpp @@ -152,7 +152,7 @@ void compiler::emit_declaration(const ast::decl& decl) void compiler::emit_decl_usingtree(const ast::decl_usingtree::ptr& animtree) { - if(developer_thread_) + if (developer_thread_) throw comp_error(animtree->loc(), "cannot put #using_animtree inside /# ... #/ comment"); animtrees_.push_back({ animtree->name->value, false }); @@ -195,6 +195,9 @@ void compiler::emit_stmt(const ast::stmt& stmt, const block::ptr& blk, bool last case ast::kind::stmt_list: emit_stmt_list(stmt.as_list, blk, last); break; + case ast::kind::stmt_dev: + emit_stmt_dev(stmt.as_dev, blk, last); + break; case ast::kind::stmt_expr: emit_stmt_expr(stmt.as_expr, blk); break; @@ -284,6 +287,11 @@ void compiler::emit_stmt_list(const ast::stmt_list::ptr& stmt, const block::ptr& } } +void compiler::emit_stmt_dev(const ast::stmt_dev::ptr& stmt, const block::ptr& blk, bool last) +{ + emit_stmt_list(stmt->list, blk, last); +} + void compiler::emit_stmt_expr(const ast::stmt_expr::ptr& stmt, const block::ptr& blk) { switch (stmt->expr.kind()) @@ -580,6 +588,8 @@ void compiler::emit_stmt_dowhile(const ast::stmt_dowhile::ptr& stmt, const block emit_stmt(stmt->stmt, stmt->blk, false); + insert_label(continue_loc); + bool const_cond = is_constant_condition(stmt->test); if (!const_cond) @@ -588,7 +598,6 @@ void compiler::emit_stmt_dowhile(const ast::stmt_dowhile::ptr& stmt, const block emit_opcode(opcode::OP_JumpOnFalse, break_loc); } - insert_label(continue_loc); emit_opcode(opcode::OP_jumpback, begin_loc); insert_label(break_loc); @@ -1009,9 +1018,6 @@ void compiler::emit_expr(const ast::expr& expr, const block::ptr& blk) case ast::kind::expr_string: emit_expr_string(expr.as_string); break; - case ast::kind::expr_color: - emit_expr_color(expr.as_color); - break; case ast::kind::expr_vector: emit_expr_vector(expr.as_vector, blk); break; @@ -1961,30 +1967,6 @@ void compiler::emit_expr_string(const ast::expr_string::ptr& expr) emit_opcode(opcode::OP_GetString, expr->value); } -void compiler::emit_expr_color(const ast::expr_color::ptr& expr) -{ - std::vector data; - std::string x, y, z; - - if (expr->value.size() == 3) - { - x = "0x" + expr->value.substr(0, 1) + expr->value.substr(0, 1); - y = "0x" + expr->value.substr(1, 1) + expr->value.substr(1, 1); - z = "0x" + expr->value.substr(2, 1) + expr->value.substr(2, 1); - } - else - { - x = "0x" + expr->value.substr(0, 2); - y = "0x" + expr->value.substr(2, 2); - z = "0x" + expr->value.substr(4, 2); - } - - data.push_back(utils::string::hex_to_dec(x.data())); - data.push_back(utils::string::hex_to_dec(y.data())); - data.push_back(utils::string::hex_to_dec(z.data())); - emit_opcode(opcode::OP_GetVector, data); -} - void compiler::emit_expr_float(const ast::expr_float::ptr& expr) { emit_opcode(opcode::OP_GetFloat, expr->value); @@ -2109,6 +2091,9 @@ void compiler::process_stmt(const ast::stmt& stmt, const block::ptr& blk) case ast::kind::stmt_list: process_stmt_list(stmt.as_list, blk); break; + case ast::kind::stmt_dev: + process_stmt_dev(stmt.as_dev, blk); + break; case ast::kind::stmt_expr: process_stmt_expr(stmt.as_expr, blk); break; @@ -2174,6 +2159,11 @@ void compiler::process_stmt_list(const ast::stmt_list::ptr& stmt, const block::p } } +void compiler::process_stmt_dev(const ast::stmt_dev::ptr& stmt, const block::ptr& blk) +{ + process_stmt_list(stmt->list, blk); +} + void compiler::process_stmt_expr(const ast::stmt_expr::ptr& stmt, const block::ptr& blk) { switch (stmt->expr.kind()) diff --git a/src/h2/xsk/compiler.hpp b/src/h2/xsk/compiler.hpp index 09e17901..b5fdebf1 100644 --- a/src/h2/xsk/compiler.hpp +++ b/src/h2/xsk/compiler.hpp @@ -48,6 +48,7 @@ private: void emit_decl_thread(const ast::decl_thread::ptr& thread); void emit_stmt(const ast::stmt& stmt, const block::ptr& blk, bool last); void emit_stmt_list(const ast::stmt_list::ptr& stmt, const block::ptr& blk, bool last); + void emit_stmt_dev(const ast::stmt_dev::ptr& stmt, const block::ptr& blk, bool last); void emit_stmt_expr(const ast::stmt_expr::ptr& stmt, const block::ptr& blk); void emit_stmt_call(const ast::stmt_call::ptr& stmt, const block::ptr& blk); void emit_stmt_assign(const ast::stmt_assign::ptr& stmt, const block::ptr& blk); @@ -110,7 +111,6 @@ private: void emit_expr_animtree(const ast::expr_animtree::ptr& expr); void emit_expr_istring(const ast::expr_istring::ptr& expr); void emit_expr_string(const ast::expr_string::ptr& expr); - void emit_expr_color(const ast::expr_color::ptr& expr); void emit_expr_float(const ast::expr_float::ptr& expr); void emit_expr_integer(const ast::expr_integer::ptr& expr); void emit_expr_false(const ast::expr_false::ptr& expr); @@ -123,6 +123,7 @@ private: void process_thread(const ast::decl_thread::ptr& decl, const block::ptr& blk); void process_stmt(const ast::stmt& stmt, const block::ptr& blk); void process_stmt_list(const ast::stmt_list::ptr& stmt, const block::ptr& blk); + void process_stmt_dev(const ast::stmt_dev::ptr& stmt, const block::ptr& blk); void process_stmt_expr(const ast::stmt_expr::ptr& stmt, const block::ptr& blk); void process_stmt_assign(const ast::stmt_assign::ptr& stmt, const block::ptr& blk); void process_stmt_waittill(const ast::stmt_waittill::ptr& stmt, const block::ptr& blk); diff --git a/src/h2/xsk/decompiler.cpp b/src/h2/xsk/decompiler.cpp index e5db0a8b..8a2dac0d 100644 --- a/src/h2/xsk/decompiler.cpp +++ b/src/h2/xsk/decompiler.cpp @@ -75,7 +75,7 @@ void decompiler::decompile_function(const function::ptr& func) // hotfix empty else block at func end if (stmt->list.size() > 0 && stmt->list.back() == ast::kind::asm_jump) { - if(stmt->list.back().as_jump->value == blk.loc_end) + if (stmt->list.back().as_jump->value == blk.loc_end) stmt->list.pop_back(); } @@ -255,7 +255,7 @@ void decompiler::decompile_instruction(const instruction::ptr& inst) auto name = std::make_unique(loc, inst->data[1]); auto node = std::make_unique(loc, std::move(path), std::move(name)); stack_.push(std::move(node)); - }; + } break; case opcode::OP_CreateLocalVariable: { @@ -1657,7 +1657,7 @@ void decompiler::decompile_instruction(const instruction::ptr& inst) { auto expr = std::make_unique(loc, inst->data[0]); func_->stmt->list.push_back(ast::stmt(std::move(expr))); - if(stack_.size() != 0) tern_labels_.push_back(inst->data[0]); + if (stack_.size() != 0) tern_labels_.push_back(inst->data[0]); } break; case opcode::OP_jumpback: @@ -1856,7 +1856,7 @@ void decompiler::decompile_ifelses(const ast::stmt_list::ptr& stmt) { auto& entry = stmt->list.at(i); - if(entry == ast::kind::asm_jump_cond) + if (entry == ast::kind::asm_jump_cond) { auto j = (entry.as_cond->value == blocks_.back().loc_end) ? (stmt->list.size() - 1) : (find_location_index(stmt, entry.as_cond->value) - 1); auto last_loc = blocks_.back().loc_end; @@ -2135,7 +2135,7 @@ void decompiler::decompile_loop(const ast::stmt_list::ptr& block, std::uint32_t { auto ref = block->list.at(start).loc().label(); - if(!find_location_reference(block, 0, start, ref)) + if (!find_location_reference(block, 0, start, ref)) { decompile_foreach(block, start, end); return; @@ -2144,29 +2144,29 @@ void decompiler::decompile_loop(const ast::stmt_list::ptr& block, std::uint32_t } } - if(start > 0) // while at func start + if (start > 0) // while at func start { auto index = 1; - while(block->list.at(start - index) == ast::kind::asm_create) + while (block->list.at(start - index) == ast::kind::asm_create) { - if(start - index > 0) + if (start - index > 0) index++; else break; } - if(block->list.at(start - index) == ast::kind::stmt_assign) + if (block->list.at(start - index) == ast::kind::stmt_assign) { auto ref = block->list.at(end).loc().label(); auto ref2 = block->list.at(start).loc().label(); - if(find_location_reference(block, start, end, ref)) + if (find_location_reference(block, start, end, ref)) { // continue is at jumpback, not post-expr decompile_while(block, start, end); return; } - else if(find_location_reference(block, 0, start, ref2)) + else if (find_location_reference(block, 0, start, ref2)) { // begin is at condition, not pre-expr decompile_while(block, start, end); @@ -2406,7 +2406,7 @@ void decompiler::decompile_switch(const ast::stmt_list::ptr& stmt, std::uint32_t auto list = std::make_unique(loc); list->is_case = true; auto def_stmt = ast::stmt(std::make_unique(loc_pos, std::move(list))); - while(stmt->list.at(loc_idx) == ast::kind::stmt_case) + while (stmt->list.at(loc_idx) == ast::kind::stmt_case) loc_idx++; stmt->list.insert(stmt->list.begin() + loc_idx, std::move(def_stmt)); idx += 2; @@ -2507,7 +2507,7 @@ auto decompiler::find_location_index(const ast::stmt_list::ptr& stmt, const std: for (auto& entry : stmt->list) { - if(entry.loc().label() == location) + if (entry.loc().label() == location) return index; index++; @@ -2773,7 +2773,7 @@ void decompiler::process_stmt_ifelse(const ast::stmt_ifelse::ptr& stmt, const bl { abort = stmt->blk_if->abort; - if(abort == abort_t::abort_none) + if (abort == abort_t::abort_none) childs.push_back(stmt->blk_if.get()); } diff --git a/src/h2/xsk/lexer.cpp b/src/h2/xsk/lexer.cpp index f35f0a19..ca936dce 100644 --- a/src/h2/xsk/lexer.cpp +++ b/src/h2/xsk/lexer.cpp @@ -73,12 +73,12 @@ buffer::buffer() : length(0) buffer::~buffer() { - if(data) std::free(data); + if (data) std::free(data); } bool buffer::push(char c) { - if(length >= max_buf_size) + if (length >= max_buf_size) return false; data[length++] = c; @@ -90,7 +90,7 @@ reader::reader() : state(reader::end), buffer_pos(0), bytes_remaining(0), void reader::init(const char* data, size_t size) { - if(data && size) + if (data && size) { state = reader::ok; buffer_pos = data; @@ -112,7 +112,7 @@ void reader::advance() { ++buffer_pos; - if(bytes_remaining-- == 1) + if (bytes_remaining-- == 1) { state = reader::end; bytes_remaining = 0; @@ -562,7 +562,7 @@ lex_name: advance(); } - if(state_ == state::field) + if (state_ == state::field) { if (path) throw comp_error(loc_, "invalid field token '\\'"); diff --git a/src/h2/xsk/parser.cpp b/src/h2/xsk/parser.cpp index b4b6c6f9..acc92e7d 100644 --- a/src/h2/xsk/parser.cpp +++ b/src/h2/xsk/parser.cpp @@ -382,6 +382,7 @@ namespace xsk { namespace gsc { namespace h2 { break; case symbol_kind::S_stmt: // stmt + case symbol_kind::S_stmt_or_dev: // stmt_or_dev value.YY_MOVE_OR_COPY< ast::stmt > (YY_MOVE (that.value)); break; @@ -413,6 +414,10 @@ namespace xsk { namespace gsc { namespace h2 { value.YY_MOVE_OR_COPY< ast::stmt_default::ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_stmt_dev: // stmt_dev + value.YY_MOVE_OR_COPY< ast::stmt_dev::ptr > (YY_MOVE (that.value)); + break; + case symbol_kind::S_stmt_dowhile: // stmt_dowhile value.YY_MOVE_OR_COPY< ast::stmt_dowhile::ptr > (YY_MOVE (that.value)); break; @@ -441,9 +446,9 @@ namespace xsk { namespace gsc { namespace h2 { value.YY_MOVE_OR_COPY< ast::stmt_ifelse::ptr > (YY_MOVE (that.value)); break; - case symbol_kind::S_stmt_dev: // stmt_dev - case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list + case symbol_kind::S_stmt_or_dev_list: // stmt_or_dev_list + case symbol_kind::S_stmt_block: // stmt_block value.YY_MOVE_OR_COPY< ast::stmt_list::ptr > (YY_MOVE (that.value)); break; @@ -684,6 +689,7 @@ namespace xsk { namespace gsc { namespace h2 { break; case symbol_kind::S_stmt: // stmt + case symbol_kind::S_stmt_or_dev: // stmt_or_dev value.move< ast::stmt > (YY_MOVE (that.value)); break; @@ -715,6 +721,10 @@ namespace xsk { namespace gsc { namespace h2 { value.move< ast::stmt_default::ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_stmt_dev: // stmt_dev + value.move< ast::stmt_dev::ptr > (YY_MOVE (that.value)); + break; + case symbol_kind::S_stmt_dowhile: // stmt_dowhile value.move< ast::stmt_dowhile::ptr > (YY_MOVE (that.value)); break; @@ -743,9 +753,9 @@ namespace xsk { namespace gsc { namespace h2 { value.move< ast::stmt_ifelse::ptr > (YY_MOVE (that.value)); break; - case symbol_kind::S_stmt_dev: // stmt_dev - case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list + case symbol_kind::S_stmt_or_dev_list: // stmt_or_dev_list + case symbol_kind::S_stmt_block: // stmt_block value.move< ast::stmt_list::ptr > (YY_MOVE (that.value)); break; @@ -986,6 +996,7 @@ namespace xsk { namespace gsc { namespace h2 { break; case symbol_kind::S_stmt: // stmt + case symbol_kind::S_stmt_or_dev: // stmt_or_dev value.copy< ast::stmt > (that.value); break; @@ -1017,6 +1028,10 @@ namespace xsk { namespace gsc { namespace h2 { value.copy< ast::stmt_default::ptr > (that.value); break; + case symbol_kind::S_stmt_dev: // stmt_dev + value.copy< ast::stmt_dev::ptr > (that.value); + break; + case symbol_kind::S_stmt_dowhile: // stmt_dowhile value.copy< ast::stmt_dowhile::ptr > (that.value); break; @@ -1045,9 +1060,9 @@ namespace xsk { namespace gsc { namespace h2 { value.copy< ast::stmt_ifelse::ptr > (that.value); break; - case symbol_kind::S_stmt_dev: // stmt_dev - case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list + case symbol_kind::S_stmt_or_dev_list: // stmt_or_dev_list + case symbol_kind::S_stmt_block: // stmt_block value.copy< ast::stmt_list::ptr > (that.value); break; @@ -1287,6 +1302,7 @@ namespace xsk { namespace gsc { namespace h2 { break; case symbol_kind::S_stmt: // stmt + case symbol_kind::S_stmt_or_dev: // stmt_or_dev value.move< ast::stmt > (that.value); break; @@ -1318,6 +1334,10 @@ namespace xsk { namespace gsc { namespace h2 { value.move< ast::stmt_default::ptr > (that.value); break; + case symbol_kind::S_stmt_dev: // stmt_dev + value.move< ast::stmt_dev::ptr > (that.value); + break; + case symbol_kind::S_stmt_dowhile: // stmt_dowhile value.move< ast::stmt_dowhile::ptr > (that.value); break; @@ -1346,9 +1366,9 @@ namespace xsk { namespace gsc { namespace h2 { value.move< ast::stmt_ifelse::ptr > (that.value); break; - case symbol_kind::S_stmt_dev: // stmt_dev - case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list + case symbol_kind::S_stmt_or_dev_list: // stmt_or_dev_list + case symbol_kind::S_stmt_block: // stmt_block value.move< ast::stmt_list::ptr > (that.value); break; @@ -1843,6 +1863,7 @@ namespace xsk { namespace gsc { namespace h2 { break; case symbol_kind::S_stmt: // stmt + case symbol_kind::S_stmt_or_dev: // stmt_or_dev yylhs.value.emplace< ast::stmt > (); break; @@ -1874,6 +1895,10 @@ namespace xsk { namespace gsc { namespace h2 { yylhs.value.emplace< ast::stmt_default::ptr > (); break; + case symbol_kind::S_stmt_dev: // stmt_dev + yylhs.value.emplace< ast::stmt_dev::ptr > (); + break; + case symbol_kind::S_stmt_dowhile: // stmt_dowhile yylhs.value.emplace< ast::stmt_dowhile::ptr > (); break; @@ -1902,9 +1927,9 @@ namespace xsk { namespace gsc { namespace h2 { yylhs.value.emplace< ast::stmt_ifelse::ptr > (); break; - case symbol_kind::S_stmt_dev: // stmt_dev - case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list + case symbol_kind::S_stmt_or_dev_list: // stmt_or_dev_list + case symbol_kind::S_stmt_block: // stmt_block yylhs.value.emplace< ast::stmt_list::ptr > (); break; @@ -1984,1309 +2009,1327 @@ namespace xsk { namespace gsc { namespace h2 { switch (yyn) { case 2: // root: program -#line 254 "parser.ypp" +#line 256 "parser.ypp" { ast = std::move(yystack_[0].value.as < ast::program::ptr > ()); } -#line 1990 "parser.cpp" +#line 2015 "parser.cpp" break; case 3: // root: %empty -#line 255 "parser.ypp" +#line 257 "parser.ypp" { ast = std::make_unique(yylhs.location); } -#line 1996 "parser.cpp" +#line 2021 "parser.cpp" break; case 4: // program: program inline -#line 260 "parser.ypp" +#line 262 "parser.ypp" { yylhs.value.as < ast::program::ptr > () = std::move(yystack_[1].value.as < ast::program::ptr > ()); } -#line 2002 "parser.cpp" +#line 2027 "parser.cpp" break; case 5: // program: program include -#line 262 "parser.ypp" +#line 264 "parser.ypp" { yylhs.value.as < ast::program::ptr > () = std::move(yystack_[1].value.as < ast::program::ptr > ()); yylhs.value.as < ast::program::ptr > ()->includes.push_back(std::move(yystack_[0].value.as < ast::include::ptr > ())); } -#line 2008 "parser.cpp" +#line 2033 "parser.cpp" break; case 6: // program: program declaration -#line 264 "parser.ypp" +#line 266 "parser.ypp" { yylhs.value.as < ast::program::ptr > () = std::move(yystack_[1].value.as < ast::program::ptr > ()); yylhs.value.as < ast::program::ptr > ()->declarations.push_back(std::move(yystack_[0].value.as < ast::decl > ())); } -#line 2014 "parser.cpp" +#line 2039 "parser.cpp" break; case 7: // program: inline -#line 266 "parser.ypp" +#line 268 "parser.ypp" { yylhs.value.as < ast::program::ptr > () = std::make_unique(yylhs.location); } -#line 2020 "parser.cpp" +#line 2045 "parser.cpp" break; case 8: // program: include -#line 268 "parser.ypp" +#line 270 "parser.ypp" { yylhs.value.as < ast::program::ptr > () = std::make_unique(yylhs.location); yylhs.value.as < ast::program::ptr > ()->includes.push_back(std::move(yystack_[0].value.as < ast::include::ptr > ())); } -#line 2026 "parser.cpp" +#line 2051 "parser.cpp" break; case 9: // program: declaration -#line 270 "parser.ypp" +#line 272 "parser.ypp" { yylhs.value.as < ast::program::ptr > () = std::make_unique(yylhs.location); yylhs.value.as < ast::program::ptr > ()->declarations.push_back(std::move(yystack_[0].value.as < ast::decl > ())); } -#line 2032 "parser.cpp" +#line 2057 "parser.cpp" break; case 10: // inline: "#inline" expr_path ";" -#line 274 "parser.ypp" +#line 276 "parser.ypp" { lexer.push_header(yystack_[1].value.as < ast::expr_path::ptr > ()->value); } -#line 2038 "parser.cpp" +#line 2063 "parser.cpp" break; case 11: // include: "#include" expr_path ";" -#line 279 "parser.ypp" +#line 281 "parser.ypp" { yylhs.value.as < ast::include::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr_path::ptr > ())); } -#line 2044 "parser.cpp" +#line 2069 "parser.cpp" break; case 12: // declaration: "/#" -#line 283 "parser.ypp" +#line 285 "parser.ypp" { yylhs.value.as < ast::decl > ().as_dev_begin = std::make_unique(yylhs.location); } -#line 2050 "parser.cpp" +#line 2075 "parser.cpp" break; case 13: // declaration: "#/" -#line 284 "parser.ypp" +#line 286 "parser.ypp" { yylhs.value.as < ast::decl > ().as_dev_end = std::make_unique(yylhs.location); } -#line 2056 "parser.cpp" +#line 2081 "parser.cpp" break; case 14: // declaration: decl_usingtree -#line 285 "parser.ypp" +#line 287 "parser.ypp" { yylhs.value.as < ast::decl > ().as_usingtree = std::move(yystack_[0].value.as < ast::decl_usingtree::ptr > ()); } -#line 2062 "parser.cpp" +#line 2087 "parser.cpp" break; case 15: // declaration: decl_constant -#line 286 "parser.ypp" +#line 288 "parser.ypp" { yylhs.value.as < ast::decl > ().as_constant = std::move(yystack_[0].value.as < ast::decl_constant::ptr > ()); } -#line 2068 "parser.cpp" +#line 2093 "parser.cpp" break; case 16: // declaration: decl_thread -#line 287 "parser.ypp" +#line 289 "parser.ypp" { yylhs.value.as < ast::decl > ().as_thread = std::move(yystack_[0].value.as < ast::decl_thread::ptr > ()); } -#line 2074 "parser.cpp" +#line 2099 "parser.cpp" break; case 17: // decl_usingtree: "#using_animtree" "(" expr_string ")" ";" -#line 292 "parser.ypp" +#line 294 "parser.ypp" { lexer.ban_header(yylhs.location); yylhs.value.as < ast::decl_usingtree::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr_string::ptr > ())); } -#line 2080 "parser.cpp" +#line 2105 "parser.cpp" break; case 18: // decl_constant: expr_identifier "=" expr ";" -#line 297 "parser.ypp" +#line 299 "parser.ypp" { yylhs.value.as < ast::decl_constant::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr > ())); } -#line 2086 "parser.cpp" +#line 2111 "parser.cpp" break; case 19: // decl_thread: expr_identifier "(" expr_parameters ")" stmt_block -#line 302 "parser.ypp" +#line 304 "parser.ypp" { lexer.ban_header(yylhs.location); yylhs.value.as < ast::decl_thread::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[2].value.as < ast::expr_parameters::ptr > ()), std::move(yystack_[0].value.as < ast::stmt_list::ptr > ())); } -#line 2092 "parser.cpp" +#line 2117 "parser.cpp" break; - case 20: // stmt: stmt_dev -#line 306 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_list = std::move(yystack_[0].value.as < ast::stmt_list::ptr > ()); } -#line 2098 "parser.cpp" - break; - - case 21: // stmt: stmt_block -#line 307 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_list = std::move(yystack_[0].value.as < ast::stmt_list::ptr > ()); } -#line 2104 "parser.cpp" - break; - - case 22: // stmt: stmt_call + case 20: // stmt: stmt_block #line 308 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_call = std::move(yystack_[0].value.as < ast::stmt_call::ptr > ()); } -#line 2110 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_list = std::move(yystack_[0].value.as < ast::stmt_list::ptr > ()); } +#line 2123 "parser.cpp" break; - case 23: // stmt: stmt_assign + case 21: // stmt: stmt_call #line 309 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_assign = std::move(yystack_[0].value.as < ast::stmt_assign::ptr > ()); } -#line 2116 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_call = std::move(yystack_[0].value.as < ast::stmt_call::ptr > ()); } +#line 2129 "parser.cpp" break; - case 24: // stmt: stmt_endon + case 22: // stmt: stmt_assign #line 310 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_endon = std::move(yystack_[0].value.as < ast::stmt_endon::ptr > ()); } -#line 2122 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_assign = std::move(yystack_[0].value.as < ast::stmt_assign::ptr > ()); } +#line 2135 "parser.cpp" break; - case 25: // stmt: stmt_notify + case 23: // stmt: stmt_endon #line 311 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_notify = std::move(yystack_[0].value.as < ast::stmt_notify::ptr > ()); } -#line 2128 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_endon = std::move(yystack_[0].value.as < ast::stmt_endon::ptr > ()); } +#line 2141 "parser.cpp" break; - case 26: // stmt: stmt_wait + case 24: // stmt: stmt_notify #line 312 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_wait = std::move(yystack_[0].value.as < ast::stmt_wait::ptr > ()); } -#line 2134 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_notify = std::move(yystack_[0].value.as < ast::stmt_notify::ptr > ()); } +#line 2147 "parser.cpp" break; - case 27: // stmt: stmt_waittill + case 25: // stmt: stmt_wait #line 313 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_waittill = std::move(yystack_[0].value.as < ast::stmt_waittill::ptr > ()); } -#line 2140 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_wait = std::move(yystack_[0].value.as < ast::stmt_wait::ptr > ()); } +#line 2153 "parser.cpp" break; - case 28: // stmt: stmt_waittillmatch + case 26: // stmt: stmt_waittill #line 314 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_waittillmatch = std::move(yystack_[0].value.as < ast::stmt_waittillmatch::ptr > ()); } -#line 2146 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_waittill = std::move(yystack_[0].value.as < ast::stmt_waittill::ptr > ()); } +#line 2159 "parser.cpp" break; - case 29: // stmt: stmt_waittillframeend + case 27: // stmt: stmt_waittillmatch #line 315 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_waittillframeend = std::move(yystack_[0].value.as < ast::stmt_waittillframeend::ptr > ()); } -#line 2152 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_waittillmatch = std::move(yystack_[0].value.as < ast::stmt_waittillmatch::ptr > ()); } +#line 2165 "parser.cpp" break; - case 30: // stmt: stmt_waitframe + case 28: // stmt: stmt_waittillframeend #line 316 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_waitframe = std::move(yystack_[0].value.as < ast::stmt_waitframe::ptr > ()); } -#line 2158 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_waittillframeend = std::move(yystack_[0].value.as < ast::stmt_waittillframeend::ptr > ()); } +#line 2171 "parser.cpp" break; - case 31: // stmt: stmt_if + case 29: // stmt: stmt_waitframe #line 317 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_if = std::move(yystack_[0].value.as < ast::stmt_if::ptr > ()); } -#line 2164 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_waitframe = std::move(yystack_[0].value.as < ast::stmt_waitframe::ptr > ()); } +#line 2177 "parser.cpp" break; - case 32: // stmt: stmt_ifelse + case 30: // stmt: stmt_if #line 318 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_ifelse = std::move(yystack_[0].value.as < ast::stmt_ifelse::ptr > ()); } -#line 2170 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_if = std::move(yystack_[0].value.as < ast::stmt_if::ptr > ()); } +#line 2183 "parser.cpp" break; - case 33: // stmt: stmt_while + case 31: // stmt: stmt_ifelse #line 319 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_while = std::move(yystack_[0].value.as < ast::stmt_while::ptr > ()); } -#line 2176 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_ifelse = std::move(yystack_[0].value.as < ast::stmt_ifelse::ptr > ()); } +#line 2189 "parser.cpp" break; - case 34: // stmt: stmt_dowhile + case 32: // stmt: stmt_while #line 320 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_dowhile = std::move(yystack_[0].value.as < ast::stmt_dowhile::ptr > ()); } -#line 2182 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_while = std::move(yystack_[0].value.as < ast::stmt_while::ptr > ()); } +#line 2195 "parser.cpp" break; - case 35: // stmt: stmt_for + case 33: // stmt: stmt_dowhile #line 321 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_for = std::move(yystack_[0].value.as < ast::stmt_for::ptr > ()); } -#line 2188 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_dowhile = std::move(yystack_[0].value.as < ast::stmt_dowhile::ptr > ()); } +#line 2201 "parser.cpp" break; - case 36: // stmt: stmt_foreach + case 34: // stmt: stmt_for #line 322 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_foreach = std::move(yystack_[0].value.as < ast::stmt_foreach::ptr > ()); } -#line 2194 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_for = std::move(yystack_[0].value.as < ast::stmt_for::ptr > ()); } +#line 2207 "parser.cpp" break; - case 37: // stmt: stmt_switch + case 35: // stmt: stmt_foreach #line 323 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_switch = std::move(yystack_[0].value.as < ast::stmt_switch::ptr > ()); } -#line 2200 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_foreach = std::move(yystack_[0].value.as < ast::stmt_foreach::ptr > ()); } +#line 2213 "parser.cpp" break; - case 38: // stmt: stmt_case + case 36: // stmt: stmt_switch #line 324 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_case = std::move(yystack_[0].value.as < ast::stmt_case::ptr > ()); } -#line 2206 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_switch = std::move(yystack_[0].value.as < ast::stmt_switch::ptr > ()); } +#line 2219 "parser.cpp" break; - case 39: // stmt: stmt_default + case 37: // stmt: stmt_case #line 325 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_default = std::move(yystack_[0].value.as < ast::stmt_default::ptr > ()); } -#line 2212 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_case = std::move(yystack_[0].value.as < ast::stmt_case::ptr > ()); } +#line 2225 "parser.cpp" break; - case 40: // stmt: stmt_break + case 38: // stmt: stmt_default #line 326 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_break = std::move(yystack_[0].value.as < ast::stmt_break::ptr > ()); } -#line 2218 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_default = std::move(yystack_[0].value.as < ast::stmt_default::ptr > ()); } +#line 2231 "parser.cpp" break; - case 41: // stmt: stmt_continue + case 39: // stmt: stmt_break #line 327 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_continue = std::move(yystack_[0].value.as < ast::stmt_continue::ptr > ()); } -#line 2224 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_break = std::move(yystack_[0].value.as < ast::stmt_break::ptr > ()); } +#line 2237 "parser.cpp" break; - case 42: // stmt: stmt_return + case 40: // stmt: stmt_continue #line 328 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_return = std::move(yystack_[0].value.as < ast::stmt_return::ptr > ()); } -#line 2230 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_continue = std::move(yystack_[0].value.as < ast::stmt_continue::ptr > ()); } +#line 2243 "parser.cpp" break; - case 43: // stmt: stmt_breakpoint + case 41: // stmt: stmt_return #line 329 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_breakpoint = std::move(yystack_[0].value.as < ast::stmt_breakpoint::ptr > ()); } -#line 2236 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_return = std::move(yystack_[0].value.as < ast::stmt_return::ptr > ()); } +#line 2249 "parser.cpp" break; - case 44: // stmt: stmt_prof_begin + case 42: // stmt: stmt_breakpoint #line 330 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_prof_begin = std::move(yystack_[0].value.as < ast::stmt_prof_begin::ptr > ()); } -#line 2242 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_breakpoint = std::move(yystack_[0].value.as < ast::stmt_breakpoint::ptr > ()); } +#line 2255 "parser.cpp" break; - case 45: // stmt: stmt_prof_end + case 43: // stmt: stmt_prof_begin #line 331 "parser.ypp" + { yylhs.value.as < ast::stmt > ().as_prof_begin = std::move(yystack_[0].value.as < ast::stmt_prof_begin::ptr > ()); } +#line 2261 "parser.cpp" + break; + + case 44: // stmt: stmt_prof_end +#line 332 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_prof_end = std::move(yystack_[0].value.as < ast::stmt_prof_end::ptr > ()); } -#line 2248 "parser.cpp" +#line 2267 "parser.cpp" break; - case 46: // stmt_dev: "/#" stmt_list "#/" -#line 335 "parser.ypp" - { yylhs.value.as < ast::stmt_list::ptr > () = std::move(yystack_[1].value.as < ast::stmt_list::ptr > ()); } -#line 2254 "parser.cpp" - break; - - case 47: // stmt_dev: "/#" "#/" + case 45: // stmt_or_dev: stmt #line 336 "parser.ypp" - { yylhs.value.as < ast::stmt_list::ptr > () = std::make_unique(yylhs.location); } -#line 2260 "parser.cpp" + { yylhs.value.as < ast::stmt > () = std::move(yystack_[0].value.as < ast::stmt > ()); } +#line 2273 "parser.cpp" break; - case 48: // stmt_block: "{" stmt_list "}" -#line 340 "parser.ypp" - { yylhs.value.as < ast::stmt_list::ptr > () = std::move(yystack_[1].value.as < ast::stmt_list::ptr > ()); } -#line 2266 "parser.cpp" + case 46: // stmt_or_dev: stmt_dev +#line 337 "parser.ypp" + { yylhs.value.as < ast::stmt > ().as_dev = std::move(yystack_[0].value.as < ast::stmt_dev::ptr > ()); } +#line 2279 "parser.cpp" break; - case 49: // stmt_block: "{" "}" -#line 341 "parser.ypp" - { yylhs.value.as < ast::stmt_list::ptr > () = std::make_unique(yylhs.location); } -#line 2272 "parser.cpp" - break; - - case 50: // stmt_list: stmt_list stmt -#line 346 "parser.ypp" + case 47: // stmt_list: stmt_list stmt +#line 342 "parser.ypp" { yylhs.value.as < ast::stmt_list::ptr > () = std::move(yystack_[1].value.as < ast::stmt_list::ptr > ()); yylhs.value.as < ast::stmt_list::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2278 "parser.cpp" +#line 2285 "parser.cpp" break; - case 51: // stmt_list: stmt -#line 348 "parser.ypp" + case 48: // stmt_list: stmt +#line 344 "parser.ypp" { yylhs.value.as < ast::stmt_list::ptr > () = std::make_unique(yylhs.location); yylhs.value.as < ast::stmt_list::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2284 "parser.cpp" +#line 2291 "parser.cpp" break; - case 52: // stmt_expr: expr_assign -#line 353 "parser.ypp" - { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2290 "parser.cpp" + case 49: // stmt_or_dev_list: stmt_or_dev_list stmt_or_dev +#line 349 "parser.ypp" + { yylhs.value.as < ast::stmt_list::ptr > () = std::move(yystack_[1].value.as < ast::stmt_list::ptr > ()); yylhs.value.as < ast::stmt_list::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::stmt > ())); } +#line 2297 "parser.cpp" break; - case 53: // stmt_expr: expr_increment + case 50: // stmt_or_dev_list: stmt_or_dev +#line 351 "parser.ypp" + { yylhs.value.as < ast::stmt_list::ptr > () = std::make_unique(yylhs.location); yylhs.value.as < ast::stmt_list::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::stmt > ())); } +#line 2303 "parser.cpp" + break; + + case 51: // stmt_dev: "/#" stmt_list "#/" #line 355 "parser.ypp" - { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2296 "parser.cpp" + { yylhs.value.as < ast::stmt_dev::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::stmt_list::ptr > ())); } +#line 2309 "parser.cpp" break; - case 54: // stmt_expr: expr_decrement -#line 357 "parser.ypp" - { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2302 "parser.cpp" + case 52: // stmt_dev: "/#" "#/" +#line 356 "parser.ypp" + { yylhs.value.as < ast::stmt_dev::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } +#line 2315 "parser.cpp" break; - case 55: // stmt_expr: %empty -#line 359 "parser.ypp" - { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } -#line 2308 "parser.cpp" + case 53: // stmt_block: "{" stmt_or_dev_list "}" +#line 360 "parser.ypp" + { yylhs.value.as < ast::stmt_list::ptr > () = std::move(yystack_[1].value.as < ast::stmt_list::ptr > ()); } +#line 2321 "parser.cpp" break; - case 56: // stmt_call: expr_call ";" -#line 364 "parser.ypp" - { yylhs.value.as < ast::stmt_call::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[1].value.as < ast::expr_call::ptr > ()))); } -#line 2314 "parser.cpp" + case 54: // stmt_block: "{" "}" +#line 361 "parser.ypp" + { yylhs.value.as < ast::stmt_list::ptr > () = std::make_unique(yylhs.location); } +#line 2327 "parser.cpp" break; - case 57: // stmt_call: expr_method ";" + case 55: // stmt_expr: expr_assign #line 366 "parser.ypp" + { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2333 "parser.cpp" + break; + + case 56: // stmt_expr: expr_increment +#line 368 "parser.ypp" + { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2339 "parser.cpp" + break; + + case 57: // stmt_expr: expr_decrement +#line 370 "parser.ypp" + { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2345 "parser.cpp" + break; + + case 58: // stmt_expr: %empty +#line 372 "parser.ypp" + { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } +#line 2351 "parser.cpp" + break; + + case 59: // stmt_call: expr_call ";" +#line 377 "parser.ypp" + { yylhs.value.as < ast::stmt_call::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[1].value.as < ast::expr_call::ptr > ()))); } +#line 2357 "parser.cpp" + break; + + case 60: // stmt_call: expr_method ";" +#line 379 "parser.ypp" { yylhs.value.as < ast::stmt_call::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[1].value.as < ast::expr_method::ptr > ()))); } -#line 2320 "parser.cpp" +#line 2363 "parser.cpp" break; - case 58: // stmt_assign: expr_assign ";" -#line 371 "parser.ypp" + case 61: // stmt_assign: expr_assign ";" +#line 384 "parser.ypp" { yylhs.value.as < ast::stmt_assign::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } -#line 2326 "parser.cpp" +#line 2369 "parser.cpp" break; - case 59: // stmt_assign: expr_increment ";" -#line 373 "parser.ypp" + case 62: // stmt_assign: expr_increment ";" +#line 386 "parser.ypp" { yylhs.value.as < ast::stmt_assign::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } -#line 2332 "parser.cpp" +#line 2375 "parser.cpp" break; - case 60: // stmt_assign: expr_decrement ";" -#line 375 "parser.ypp" + case 63: // stmt_assign: expr_decrement ";" +#line 388 "parser.ypp" { yylhs.value.as < ast::stmt_assign::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } -#line 2338 "parser.cpp" +#line 2381 "parser.cpp" break; - case 61: // stmt_endon: expr_object "endon" "(" expr ")" ";" -#line 380 "parser.ypp" + case 64: // stmt_endon: expr_object "endon" "(" expr ")" ";" +#line 393 "parser.ypp" { yylhs.value.as < ast::stmt_endon::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr > ())); } -#line 2344 "parser.cpp" +#line 2387 "parser.cpp" break; - case 62: // stmt_notify: expr_object "notify" "(" expr "," expr_arguments_no_empty ")" ";" -#line 385 "parser.ypp" + case 65: // stmt_notify: expr_object "notify" "(" expr "," expr_arguments_no_empty ")" ";" +#line 398 "parser.ypp" { yylhs.value.as < ast::stmt_notify::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < ast::expr > ()), std::move(yystack_[4].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr_arguments::ptr > ())); } -#line 2350 "parser.cpp" +#line 2393 "parser.cpp" break; - case 63: // stmt_notify: expr_object "notify" "(" expr ")" ";" -#line 387 "parser.ypp" + case 66: // stmt_notify: expr_object "notify" "(" expr ")" ";" +#line 400 "parser.ypp" { yylhs.value.as < ast::stmt_notify::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr > ()), std::make_unique(yylhs.location)); } -#line 2356 "parser.cpp" +#line 2399 "parser.cpp" break; - case 64: // stmt_wait: "wait" expr ";" -#line 392 "parser.ypp" + case 67: // stmt_wait: "wait" expr ";" +#line 405 "parser.ypp" { yylhs.value.as < ast::stmt_wait::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } -#line 2362 "parser.cpp" +#line 2405 "parser.cpp" break; - case 65: // stmt_waittill: expr_object "waittill" "(" expr "," expr_arguments_no_empty ")" ";" -#line 397 "parser.ypp" + case 68: // stmt_waittill: expr_object "waittill" "(" expr "," expr_arguments_no_empty ")" ";" +#line 410 "parser.ypp" { yylhs.value.as < ast::stmt_waittill::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < ast::expr > ()), std::move(yystack_[4].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr_arguments::ptr > ())); } -#line 2368 "parser.cpp" +#line 2411 "parser.cpp" break; - case 66: // stmt_waittill: expr_object "waittill" "(" expr ")" ";" -#line 399 "parser.ypp" + case 69: // stmt_waittill: expr_object "waittill" "(" expr ")" ";" +#line 412 "parser.ypp" { yylhs.value.as < ast::stmt_waittill::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr > ()), std::make_unique(yylhs.location)); } -#line 2374 "parser.cpp" +#line 2417 "parser.cpp" break; - case 67: // stmt_waittillmatch: expr_object "waittillmatch" "(" expr "," expr_arguments_no_empty ")" ";" -#line 404 "parser.ypp" + case 70: // stmt_waittillmatch: expr_object "waittillmatch" "(" expr "," expr_arguments_no_empty ")" ";" +#line 417 "parser.ypp" { yylhs.value.as < ast::stmt_waittillmatch::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < ast::expr > ()), std::move(yystack_[4].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr_arguments::ptr > ())); } -#line 2380 "parser.cpp" +#line 2423 "parser.cpp" break; - case 68: // stmt_waittillmatch: expr_object "waittillmatch" "(" expr ")" ";" -#line 406 "parser.ypp" + case 71: // stmt_waittillmatch: expr_object "waittillmatch" "(" expr ")" ";" +#line 419 "parser.ypp" { yylhs.value.as < ast::stmt_waittillmatch::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr > ()), std::make_unique(yylhs.location)); } -#line 2386 "parser.cpp" +#line 2429 "parser.cpp" break; - case 69: // stmt_waittillframeend: "waittillframeend" ";" -#line 411 "parser.ypp" + case 72: // stmt_waittillframeend: "waittillframeend" ";" +#line 424 "parser.ypp" { yylhs.value.as < ast::stmt_waittillframeend::ptr > () = std::make_unique(yylhs.location); } -#line 2392 "parser.cpp" +#line 2435 "parser.cpp" break; - case 70: // stmt_waitframe: "waitframe" ";" -#line 416 "parser.ypp" + case 73: // stmt_waitframe: "waitframe" ";" +#line 429 "parser.ypp" { yylhs.value.as < ast::stmt_waitframe::ptr > () = std::make_unique(yylhs.location); } -#line 2398 "parser.cpp" +#line 2441 "parser.cpp" break; - case 71: // stmt_waitframe: "waitframe" "(" ")" ";" -#line 418 "parser.ypp" + case 74: // stmt_waitframe: "waitframe" "(" ")" ";" +#line 431 "parser.ypp" { yylhs.value.as < ast::stmt_waitframe::ptr > () = std::make_unique(yylhs.location); } -#line 2404 "parser.cpp" +#line 2447 "parser.cpp" break; - case 72: // stmt_if: "if" "(" expr ")" stmt -#line 423 "parser.ypp" + case 75: // stmt_if: "if" "(" expr ")" stmt +#line 436 "parser.ypp" { yylhs.value.as < ast::stmt_if::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2410 "parser.cpp" +#line 2453 "parser.cpp" break; - case 73: // stmt_ifelse: "if" "(" expr ")" stmt "else" stmt -#line 428 "parser.ypp" + case 76: // stmt_ifelse: "if" "(" expr ")" stmt "else" stmt +#line 441 "parser.ypp" { yylhs.value.as < ast::stmt_ifelse::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::stmt > ()), std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2416 "parser.cpp" +#line 2459 "parser.cpp" break; - case 74: // stmt_while: "while" "(" expr ")" stmt -#line 433 "parser.ypp" + case 77: // stmt_while: "while" "(" expr ")" stmt +#line 446 "parser.ypp" { yylhs.value.as < ast::stmt_while::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2422 "parser.cpp" +#line 2465 "parser.cpp" break; - case 75: // stmt_dowhile: "do" stmt "while" "(" expr ")" ";" -#line 438 "parser.ypp" + case 78: // stmt_dowhile: "do" stmt "while" "(" expr ")" ";" +#line 451 "parser.ypp" { yylhs.value.as < ast::stmt_dowhile::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[5].value.as < ast::stmt > ())); } -#line 2428 "parser.cpp" +#line 2471 "parser.cpp" break; - case 76: // stmt_for: "for" "(" stmt_expr ";" expr_or_empty ";" stmt_expr ")" stmt -#line 443 "parser.ypp" + case 79: // stmt_for: "for" "(" stmt_expr ";" expr_or_empty ";" stmt_expr ")" stmt +#line 456 "parser.ypp" { yylhs.value.as < ast::stmt_for::ptr > () = std::make_unique(yylhs.location, ast::stmt(std::move(yystack_[6].value.as < ast::stmt_expr::ptr > ())), std::move(yystack_[4].value.as < ast::expr > ()), ast::stmt(std::move(yystack_[2].value.as < ast::stmt_expr::ptr > ())), std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2434 "parser.cpp" +#line 2477 "parser.cpp" break; - case 77: // stmt_foreach: "foreach" "(" expr_identifier "in" expr ")" stmt -#line 448 "parser.ypp" + case 80: // stmt_foreach: "foreach" "(" expr_identifier "in" expr ")" stmt +#line 461 "parser.ypp" { yylhs.value.as < ast::stmt_foreach::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[4].value.as < ast::expr_identifier::ptr > ())), std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2440 "parser.cpp" +#line 2483 "parser.cpp" break; - case 78: // stmt_foreach: "foreach" "(" expr_identifier "," expr_identifier "in" expr ")" stmt -#line 450 "parser.ypp" + case 81: // stmt_foreach: "foreach" "(" expr_identifier "," expr_identifier "in" expr ")" stmt +#line 463 "parser.ypp" { yylhs.value.as < ast::stmt_foreach::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[6].value.as < ast::expr_identifier::ptr > ())), ast::expr(std::move(yystack_[4].value.as < ast::expr_identifier::ptr > ())), std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2446 "parser.cpp" +#line 2489 "parser.cpp" break; - case 79: // stmt_switch: "switch" "(" expr ")" stmt_block -#line 455 "parser.ypp" + case 82: // stmt_switch: "switch" "(" expr ")" stmt_block +#line 468 "parser.ypp" { yylhs.value.as < ast::stmt_switch::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::stmt_list::ptr > ())); } -#line 2452 "parser.cpp" +#line 2495 "parser.cpp" break; - case 80: // stmt_case: "case" expr_integer ":" -#line 460 "parser.ypp" + case 83: // stmt_case: "case" expr_integer ":" +#line 473 "parser.ypp" { yylhs.value.as < ast::stmt_case::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[1].value.as < ast::expr_integer::ptr > ())), std::make_unique(yylhs.location)); } -#line 2458 "parser.cpp" +#line 2501 "parser.cpp" break; - case 81: // stmt_case: "case" expr_string ":" -#line 462 "parser.ypp" + case 84: // stmt_case: "case" expr_string ":" +#line 475 "parser.ypp" { yylhs.value.as < ast::stmt_case::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[1].value.as < ast::expr_string::ptr > ())), std::make_unique(yylhs.location)); } -#line 2464 "parser.cpp" +#line 2507 "parser.cpp" break; - case 82: // stmt_default: "default" ":" -#line 467 "parser.ypp" + case 85: // stmt_default: "default" ":" +#line 480 "parser.ypp" { yylhs.value.as < ast::stmt_default::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } -#line 2470 "parser.cpp" +#line 2513 "parser.cpp" break; - case 83: // stmt_break: "break" ";" -#line 472 "parser.ypp" + case 86: // stmt_break: "break" ";" +#line 485 "parser.ypp" { yylhs.value.as < ast::stmt_break::ptr > () = std::make_unique(yylhs.location); } -#line 2476 "parser.cpp" +#line 2519 "parser.cpp" break; - case 84: // stmt_continue: "continue" ";" -#line 477 "parser.ypp" + case 87: // stmt_continue: "continue" ";" +#line 490 "parser.ypp" { yylhs.value.as < ast::stmt_continue::ptr > () = std::make_unique(yylhs.location); } -#line 2482 "parser.cpp" +#line 2525 "parser.cpp" break; - case 85: // stmt_return: "return" expr ";" -#line 482 "parser.ypp" + case 88: // stmt_return: "return" expr ";" +#line 495 "parser.ypp" { yylhs.value.as < ast::stmt_return::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } -#line 2488 "parser.cpp" +#line 2531 "parser.cpp" break; - case 86: // stmt_return: "return" ";" -#line 484 "parser.ypp" + case 89: // stmt_return: "return" ";" +#line 497 "parser.ypp" { yylhs.value.as < ast::stmt_return::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } -#line 2494 "parser.cpp" +#line 2537 "parser.cpp" break; - case 87: // stmt_breakpoint: "breakpoint" ";" -#line 489 "parser.ypp" + case 90: // stmt_breakpoint: "breakpoint" ";" +#line 502 "parser.ypp" { yylhs.value.as < ast::stmt_breakpoint::ptr > () = std::make_unique(yylhs.location); } -#line 2500 "parser.cpp" +#line 2543 "parser.cpp" break; - case 88: // stmt_prof_begin: "prof_begin" "(" expr_arguments ")" ";" -#line 494 "parser.ypp" + case 91: // stmt_prof_begin: "prof_begin" "(" expr_arguments ")" ";" +#line 507 "parser.ypp" { yylhs.value.as < ast::stmt_prof_begin::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr_arguments::ptr > ())); } -#line 2506 "parser.cpp" +#line 2549 "parser.cpp" break; - case 89: // stmt_prof_end: "prof_end" "(" expr_arguments ")" ";" -#line 499 "parser.ypp" + case 92: // stmt_prof_end: "prof_end" "(" expr_arguments ")" ";" +#line 512 "parser.ypp" { yylhs.value.as < ast::stmt_prof_end::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr_arguments::ptr > ())); } -#line 2512 "parser.cpp" +#line 2555 "parser.cpp" break; - case 90: // expr: expr_ternary -#line 503 "parser.ypp" + case 93: // expr: expr_ternary +#line 516 "parser.ypp" { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } -#line 2518 "parser.cpp" +#line 2561 "parser.cpp" break; - case 91: // expr: expr_binary -#line 504 "parser.ypp" - { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } -#line 2524 "parser.cpp" - break; - - case 92: // expr: expr_primitive -#line 505 "parser.ypp" - { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } -#line 2530 "parser.cpp" - break; - - case 93: // expr_or_empty: expr -#line 509 "parser.ypp" - { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } -#line 2536 "parser.cpp" - break; - - case 94: // expr_or_empty: %empty -#line 510 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location); } -#line 2542 "parser.cpp" - break; - - case 95: // expr_assign: expr_object "=" expr -#line 515 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2548 "parser.cpp" - break; - - case 96: // expr_assign: expr_object "|=" expr + case 94: // expr: expr_binary #line 517 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2554 "parser.cpp" + { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } +#line 2567 "parser.cpp" break; - case 97: // expr_assign: expr_object "&=" expr -#line 519 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2560 "parser.cpp" + case 95: // expr: expr_primitive +#line 518 "parser.ypp" + { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } +#line 2573 "parser.cpp" break; - case 98: // expr_assign: expr_object "^=" expr -#line 521 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2566 "parser.cpp" + case 96: // expr_or_empty: expr +#line 522 "parser.ypp" + { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } +#line 2579 "parser.cpp" break; - case 99: // expr_assign: expr_object "<<=" expr + case 97: // expr_or_empty: %empty #line 523 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location); } +#line 2585 "parser.cpp" + break; + + case 98: // expr_assign: expr_object "=" expr +#line 528 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2591 "parser.cpp" + break; + + case 99: // expr_assign: expr_object "|=" expr +#line 530 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2597 "parser.cpp" + break; + + case 100: // expr_assign: expr_object "&=" expr +#line 532 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2603 "parser.cpp" + break; + + case 101: // expr_assign: expr_object "^=" expr +#line 534 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2609 "parser.cpp" + break; + + case 102: // expr_assign: expr_object "<<=" expr +#line 536 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()),std::move( yystack_[0].value.as < ast::expr > ())); } -#line 2572 "parser.cpp" +#line 2615 "parser.cpp" break; - case 100: // expr_assign: expr_object ">>=" expr -#line 525 "parser.ypp" + case 103: // expr_assign: expr_object ">>=" expr +#line 538 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2578 "parser.cpp" +#line 2621 "parser.cpp" break; - case 101: // expr_assign: expr_object "+=" expr -#line 527 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2584 "parser.cpp" - break; - - case 102: // expr_assign: expr_object "-=" expr -#line 529 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2590 "parser.cpp" - break; - - case 103: // expr_assign: expr_object "*=" expr -#line 531 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2596 "parser.cpp" - break; - - case 104: // expr_assign: expr_object "/=" expr -#line 533 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2602 "parser.cpp" - break; - - case 105: // expr_assign: expr_object "%=" expr -#line 535 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2608 "parser.cpp" - break; - - case 106: // expr_increment: "++" expr_object + case 104: // expr_assign: expr_object "+=" expr #line 540 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ()), true); } -#line 2614 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2627 "parser.cpp" break; - case 107: // expr_increment: expr_object "++" + case 105: // expr_assign: expr_object "-=" expr #line 542 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2633 "parser.cpp" + break; + + case 106: // expr_assign: expr_object "*=" expr +#line 544 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2639 "parser.cpp" + break; + + case 107: // expr_assign: expr_object "/=" expr +#line 546 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2645 "parser.cpp" + break; + + case 108: // expr_assign: expr_object "%=" expr +#line 548 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2651 "parser.cpp" + break; + + case 109: // expr_increment: "++" expr_object +#line 553 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ()), true); } +#line 2657 "parser.cpp" + break; + + case 110: // expr_increment: expr_object "++" +#line 555 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ()), false); } -#line 2620 "parser.cpp" +#line 2663 "parser.cpp" break; - case 108: // expr_decrement: "--" expr_object -#line 547 "parser.ypp" + case 111: // expr_decrement: "--" expr_object +#line 560 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ()), true); } -#line 2626 "parser.cpp" +#line 2669 "parser.cpp" break; - case 109: // expr_decrement: expr_object "--" -#line 549 "parser.ypp" + case 112: // expr_decrement: expr_object "--" +#line 562 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ()), false); } -#line 2632 "parser.cpp" +#line 2675 "parser.cpp" break; - case 110: // expr_ternary: expr "?" expr ":" expr -#line 554 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2638 "parser.cpp" - break; - - case 111: // expr_binary: expr "||" expr -#line 559 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2644 "parser.cpp" - break; - - case 112: // expr_binary: expr "&&" expr -#line 561 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2650 "parser.cpp" - break; - - case 113: // expr_binary: expr "==" expr -#line 563 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2656 "parser.cpp" - break; - - case 114: // expr_binary: expr "!=" expr -#line 565 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2662 "parser.cpp" - break; - - case 115: // expr_binary: expr "<=" expr + case 113: // expr_ternary: expr "?" expr ":" expr #line 567 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2681 "parser.cpp" + break; + + case 114: // expr_binary: expr "||" expr +#line 572 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2687 "parser.cpp" + break; + + case 115: // expr_binary: expr "&&" expr +#line 574 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2693 "parser.cpp" + break; + + case 116: // expr_binary: expr "==" expr +#line 576 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2699 "parser.cpp" + break; + + case 117: // expr_binary: expr "!=" expr +#line 578 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2705 "parser.cpp" + break; + + case 118: // expr_binary: expr "<=" expr +#line 580 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2668 "parser.cpp" +#line 2711 "parser.cpp" break; - case 116: // expr_binary: expr ">=" expr -#line 569 "parser.ypp" + case 119: // expr_binary: expr ">=" expr +#line 582 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2674 "parser.cpp" +#line 2717 "parser.cpp" break; - case 117: // expr_binary: expr "<" expr -#line 571 "parser.ypp" + case 120: // expr_binary: expr "<" expr +#line 584 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2680 "parser.cpp" +#line 2723 "parser.cpp" break; - case 118: // expr_binary: expr ">" expr -#line 573 "parser.ypp" + case 121: // expr_binary: expr ">" expr +#line 586 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2686 "parser.cpp" +#line 2729 "parser.cpp" break; - case 119: // expr_binary: expr "|" expr -#line 575 "parser.ypp" + case 122: // expr_binary: expr "|" expr +#line 588 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2692 "parser.cpp" +#line 2735 "parser.cpp" break; - case 120: // expr_binary: expr "&" expr -#line 577 "parser.ypp" + case 123: // expr_binary: expr "&" expr +#line 590 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2698 "parser.cpp" +#line 2741 "parser.cpp" break; - case 121: // expr_binary: expr "^" expr -#line 579 "parser.ypp" + case 124: // expr_binary: expr "^" expr +#line 592 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2704 "parser.cpp" +#line 2747 "parser.cpp" break; - case 122: // expr_binary: expr "<<" expr -#line 581 "parser.ypp" + case 125: // expr_binary: expr "<<" expr +#line 594 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2710 "parser.cpp" +#line 2753 "parser.cpp" break; - case 123: // expr_binary: expr ">>" expr -#line 583 "parser.ypp" + case 126: // expr_binary: expr ">>" expr +#line 596 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2716 "parser.cpp" +#line 2759 "parser.cpp" break; - case 124: // expr_binary: expr "+" expr -#line 585 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2722 "parser.cpp" - break; - - case 125: // expr_binary: expr "-" expr -#line 587 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2728 "parser.cpp" - break; - - case 126: // expr_binary: expr "*" expr -#line 589 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2734 "parser.cpp" - break; - - case 127: // expr_binary: expr "/" expr -#line 591 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2740 "parser.cpp" - break; - - case 128: // expr_binary: expr "%" expr -#line 593 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2746 "parser.cpp" - break; - - case 129: // expr_primitive: expr_complement -#line 597 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_complement::ptr > ()); } -#line 2752 "parser.cpp" - break; - - case 130: // expr_primitive: expr_not + case 127: // expr_binary: expr "+" expr #line 598 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_not::ptr > ()); } -#line 2758 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2765 "parser.cpp" break; - case 131: // expr_primitive: expr_call -#line 599 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_call::ptr > ()); } -#line 2764 "parser.cpp" - break; - - case 132: // expr_primitive: expr_method + case 128: // expr_binary: expr "-" expr #line 600 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_method::ptr > ()); } -#line 2770 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2771 "parser.cpp" break; - case 133: // expr_primitive: expr_add_array -#line 601 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_add_array::ptr > ()); } -#line 2776 "parser.cpp" - break; - - case 134: // expr_primitive: expr_reference + case 129: // expr_binary: expr "*" expr #line 602 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_reference::ptr > ()); } -#line 2782 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2777 "parser.cpp" break; - case 135: // expr_primitive: expr_array -#line 603 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_array::ptr > ()); } -#line 2788 "parser.cpp" - break; - - case 136: // expr_primitive: expr_field + case 130: // expr_binary: expr "/" expr #line 604 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_field::ptr > ()); } -#line 2794 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2783 "parser.cpp" break; - case 137: // expr_primitive: expr_size -#line 605 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_size::ptr > ()); } -#line 2800 "parser.cpp" - break; - - case 138: // expr_primitive: expr_paren + case 131: // expr_binary: expr "%" expr #line 606 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_paren::ptr > ()); } -#line 2806 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2789 "parser.cpp" break; - case 139: // expr_primitive: expr_thisthread -#line 607 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_thisthread::ptr > ()); } -#line 2812 "parser.cpp" - break; - - case 140: // expr_primitive: expr_empty_array -#line 608 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_empty_array::ptr > ()); } -#line 2818 "parser.cpp" - break; - - case 141: // expr_primitive: expr_undefined -#line 609 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_undefined::ptr > ()); } -#line 2824 "parser.cpp" - break; - - case 142: // expr_primitive: expr_game + case 132: // expr_primitive: expr_complement #line 610 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_game::ptr > ()); } -#line 2830 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_complement::ptr > ()); } +#line 2795 "parser.cpp" break; - case 143: // expr_primitive: expr_self + case 133: // expr_primitive: expr_not #line 611 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_self::ptr > ()); } -#line 2836 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_not::ptr > ()); } +#line 2801 "parser.cpp" break; - case 144: // expr_primitive: expr_anim + case 134: // expr_primitive: expr_call #line 612 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_anim::ptr > ()); } -#line 2842 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_call::ptr > ()); } +#line 2807 "parser.cpp" break; - case 145: // expr_primitive: expr_level + case 135: // expr_primitive: expr_method #line 613 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_level::ptr > ()); } -#line 2848 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_method::ptr > ()); } +#line 2813 "parser.cpp" break; - case 146: // expr_primitive: expr_animation + case 136: // expr_primitive: expr_add_array #line 614 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_animation::ptr > ()); } -#line 2854 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_add_array::ptr > ()); } +#line 2819 "parser.cpp" break; - case 147: // expr_primitive: expr_animtree + case 137: // expr_primitive: expr_reference #line 615 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_animtree::ptr > ()); } -#line 2860 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_reference::ptr > ()); } +#line 2825 "parser.cpp" break; - case 148: // expr_primitive: expr_identifier + case 138: // expr_primitive: expr_array #line 616 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ()); } -#line 2866 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_array::ptr > ()); } +#line 2831 "parser.cpp" break; - case 149: // expr_primitive: expr_istring + case 139: // expr_primitive: expr_field #line 617 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_istring::ptr > ()); } -#line 2872 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_field::ptr > ()); } +#line 2837 "parser.cpp" break; - case 150: // expr_primitive: expr_string + case 140: // expr_primitive: expr_size #line 618 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_string::ptr > ()); } -#line 2878 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_size::ptr > ()); } +#line 2843 "parser.cpp" break; - case 151: // expr_primitive: expr_color + case 141: // expr_primitive: expr_paren #line 619 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_color::ptr > ()); } -#line 2884 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_paren::ptr > ()); } +#line 2849 "parser.cpp" break; - case 152: // expr_primitive: expr_vector + case 142: // expr_primitive: expr_thisthread #line 620 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_vector::ptr > ()); } -#line 2890 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_thisthread::ptr > ()); } +#line 2855 "parser.cpp" break; - case 153: // expr_primitive: expr_float + case 143: // expr_primitive: expr_empty_array #line 621 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_float::ptr > ()); } -#line 2896 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_empty_array::ptr > ()); } +#line 2861 "parser.cpp" break; - case 154: // expr_primitive: expr_integer + case 144: // expr_primitive: expr_undefined #line 622 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_integer::ptr > ()); } -#line 2902 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_undefined::ptr > ()); } +#line 2867 "parser.cpp" break; - case 155: // expr_primitive: expr_false + case 145: // expr_primitive: expr_game #line 623 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_false::ptr > ()); } -#line 2908 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_game::ptr > ()); } +#line 2873 "parser.cpp" break; - case 156: // expr_primitive: expr_true + case 146: // expr_primitive: expr_self #line 624 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_true::ptr > ()); } -#line 2914 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_self::ptr > ()); } +#line 2879 "parser.cpp" break; - case 157: // expr_complement: "~" expr + case 147: // expr_primitive: expr_anim +#line 625 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_anim::ptr > ()); } +#line 2885 "parser.cpp" + break; + + case 148: // expr_primitive: expr_level +#line 626 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_level::ptr > ()); } +#line 2891 "parser.cpp" + break; + + case 149: // expr_primitive: expr_animation +#line 627 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_animation::ptr > ()); } +#line 2897 "parser.cpp" + break; + + case 150: // expr_primitive: expr_animtree +#line 628 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_animtree::ptr > ()); } +#line 2903 "parser.cpp" + break; + + case 151: // expr_primitive: expr_identifier #line 629 "parser.ypp" - { yylhs.value.as < ast::expr_complement::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2920 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ()); } +#line 2909 "parser.cpp" break; - case 158: // expr_not: "!" expr + case 152: // expr_primitive: expr_istring +#line 630 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_istring::ptr > ()); } +#line 2915 "parser.cpp" + break; + + case 153: // expr_primitive: expr_string +#line 631 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_string::ptr > ()); } +#line 2921 "parser.cpp" + break; + + case 154: // expr_primitive: expr_color +#line 632 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_color::ptr > ()); } +#line 2927 "parser.cpp" + break; + + case 155: // expr_primitive: expr_vector +#line 633 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_vector::ptr > ()); } +#line 2933 "parser.cpp" + break; + + case 156: // expr_primitive: expr_float #line 634 "parser.ypp" - { yylhs.value.as < ast::expr_not::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2926 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_float::ptr > ()); } +#line 2939 "parser.cpp" break; - case 159: // expr_call: expr_function -#line 638 "parser.ypp" - { yylhs.value.as < ast::expr_call::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::call > ())); } -#line 2932 "parser.cpp" + case 157: // expr_primitive: expr_integer +#line 635 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_integer::ptr > ()); } +#line 2945 "parser.cpp" break; - case 160: // expr_call: expr_pointer -#line 639 "parser.ypp" - { yylhs.value.as < ast::expr_call::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::call > ())); } -#line 2938 "parser.cpp" + case 158: // expr_primitive: expr_false +#line 636 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_false::ptr > ()); } +#line 2951 "parser.cpp" break; - case 161: // expr_method: expr_object expr_function + case 159: // expr_primitive: expr_true +#line 637 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_true::ptr > ()); } +#line 2957 "parser.cpp" + break; + + case 160: // expr_complement: "~" expr #line 642 "parser.ypp" - { yylhs.value.as < ast::expr_method::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::call > ())); } -#line 2944 "parser.cpp" + { yylhs.value.as < ast::expr_complement::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2963 "parser.cpp" break; - case 162: // expr_method: expr_object expr_pointer -#line 643 "parser.ypp" - { yylhs.value.as < ast::expr_method::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::call > ())); } -#line 2950 "parser.cpp" + case 161: // expr_not: "!" expr +#line 647 "parser.ypp" + { yylhs.value.as < ast::expr_not::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2969 "parser.cpp" break; - case 163: // expr_function: expr_identifier "(" expr_arguments ")" -#line 648 "parser.ypp" - { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::normal); } -#line 2956 "parser.cpp" + case 162: // expr_call: expr_function +#line 651 "parser.ypp" + { yylhs.value.as < ast::expr_call::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::call > ())); } +#line 2975 "parser.cpp" break; - case 164: // expr_function: expr_path "::" expr_identifier "(" expr_arguments ")" -#line 650 "parser.ypp" - { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr_path::ptr > ()), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::normal); } -#line 2962 "parser.cpp" - break; - - case 165: // expr_function: "thread" expr_identifier "(" expr_arguments ")" + case 163: // expr_call: expr_pointer #line 652 "parser.ypp" - { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::thread); } -#line 2968 "parser.cpp" + { yylhs.value.as < ast::expr_call::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::call > ())); } +#line 2981 "parser.cpp" break; - case 166: // expr_function: "thread" expr_path "::" expr_identifier "(" expr_arguments ")" -#line 654 "parser.ypp" - { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr_path::ptr > ()), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::thread); } -#line 2974 "parser.cpp" + case 164: // expr_method: expr_object expr_function +#line 655 "parser.ypp" + { yylhs.value.as < ast::expr_method::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::call > ())); } +#line 2987 "parser.cpp" break; - case 167: // expr_function: "childthread" expr_identifier "(" expr_arguments ")" + case 165: // expr_method: expr_object expr_pointer #line 656 "parser.ypp" - { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::childthread); } -#line 2980 "parser.cpp" + { yylhs.value.as < ast::expr_method::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::call > ())); } +#line 2993 "parser.cpp" break; - case 168: // expr_function: "childthread" expr_path "::" expr_identifier "(" expr_arguments ")" -#line 658 "parser.ypp" - { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr_path::ptr > ()), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::childthread); } -#line 2986 "parser.cpp" + case 166: // expr_function: expr_identifier "(" expr_arguments ")" +#line 661 "parser.ypp" + { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::normal); } +#line 2999 "parser.cpp" break; - case 169: // expr_pointer: "[" "[" expr "]" "]" "(" expr_arguments ")" + case 167: // expr_function: expr_path "::" expr_identifier "(" expr_arguments ")" #line 663 "parser.ypp" - { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::normal); } -#line 2992 "parser.cpp" + { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr_path::ptr > ()), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::normal); } +#line 3005 "parser.cpp" break; - case 170: // expr_pointer: "thread" "[" "[" expr "]" "]" "(" expr_arguments ")" + case 168: // expr_function: "thread" expr_identifier "(" expr_arguments ")" #line 665 "parser.ypp" - { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::thread); } -#line 2998 "parser.cpp" + { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::thread); } +#line 3011 "parser.cpp" break; - case 171: // expr_pointer: "childthread" "[" "[" expr "]" "]" "(" expr_arguments ")" + case 169: // expr_function: "thread" expr_path "::" expr_identifier "(" expr_arguments ")" #line 667 "parser.ypp" - { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::childthread); } -#line 3004 "parser.cpp" + { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr_path::ptr > ()), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::thread); } +#line 3017 "parser.cpp" break; - case 172: // expr_pointer: "call" "[" "[" expr "]" "]" "(" expr_arguments ")" + case 170: // expr_function: "childthread" expr_identifier "(" expr_arguments ")" #line 669 "parser.ypp" + { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::childthread); } +#line 3023 "parser.cpp" + break; + + case 171: // expr_function: "childthread" expr_path "::" expr_identifier "(" expr_arguments ")" +#line 671 "parser.ypp" + { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr_path::ptr > ()), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::childthread); } +#line 3029 "parser.cpp" + break; + + case 172: // expr_pointer: "[" "[" expr "]" "]" "(" expr_arguments ")" +#line 676 "parser.ypp" + { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::normal); } +#line 3035 "parser.cpp" + break; + + case 173: // expr_pointer: "thread" "[" "[" expr "]" "]" "(" expr_arguments ")" +#line 678 "parser.ypp" + { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::thread); } +#line 3041 "parser.cpp" + break; + + case 174: // expr_pointer: "childthread" "[" "[" expr "]" "]" "(" expr_arguments ")" +#line 680 "parser.ypp" + { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::childthread); } +#line 3047 "parser.cpp" + break; + + case 175: // expr_pointer: "call" "[" "[" expr "]" "]" "(" expr_arguments ")" +#line 682 "parser.ypp" { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::builtin); } -#line 3010 "parser.cpp" +#line 3053 "parser.cpp" break; - case 173: // expr_add_array: "[" expr_arguments_no_empty "]" -#line 674 "parser.ypp" + case 176: // expr_add_array: "[" expr_arguments_no_empty "]" +#line 687 "parser.ypp" { yylhs.value.as < ast::expr_add_array::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ())); } -#line 3016 "parser.cpp" +#line 3059 "parser.cpp" break; - case 174: // expr_parameters: expr_parameters "," expr_identifier -#line 679 "parser.ypp" + case 177: // expr_parameters: expr_parameters "," expr_identifier +#line 692 "parser.ypp" { yylhs.value.as < ast::expr_parameters::ptr > () = std::move(yystack_[2].value.as < ast::expr_parameters::ptr > ()); yylhs.value.as < ast::expr_parameters::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ())); } -#line 3022 "parser.cpp" +#line 3065 "parser.cpp" break; - case 175: // expr_parameters: expr_identifier -#line 681 "parser.ypp" + case 178: // expr_parameters: expr_identifier +#line 694 "parser.ypp" { yylhs.value.as < ast::expr_parameters::ptr > () = std::make_unique(yylhs.location); yylhs.value.as < ast::expr_parameters::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ())); } -#line 3028 "parser.cpp" +#line 3071 "parser.cpp" break; - case 176: // expr_parameters: %empty -#line 683 "parser.ypp" + case 179: // expr_parameters: %empty +#line 696 "parser.ypp" { yylhs.value.as < ast::expr_parameters::ptr > () = std::make_unique(yylhs.location); } -#line 3034 "parser.cpp" +#line 3077 "parser.cpp" break; - case 177: // expr_arguments: expr_arguments_no_empty -#line 688 "parser.ypp" + case 180: // expr_arguments: expr_arguments_no_empty +#line 701 "parser.ypp" { yylhs.value.as < ast::expr_arguments::ptr > () = std::move(yystack_[0].value.as < ast::expr_arguments::ptr > ()); } -#line 3040 "parser.cpp" +#line 3083 "parser.cpp" break; - case 178: // expr_arguments: %empty -#line 690 "parser.ypp" + case 181: // expr_arguments: %empty +#line 703 "parser.ypp" { yylhs.value.as < ast::expr_arguments::ptr > () = std::make_unique(yylhs.location); } -#line 3046 "parser.cpp" +#line 3089 "parser.cpp" break; - case 179: // expr_arguments_no_empty: expr_arguments "," expr -#line 695 "parser.ypp" + case 182: // expr_arguments_no_empty: expr_arguments "," expr +#line 708 "parser.ypp" { yylhs.value.as < ast::expr_arguments::ptr > () = std::move(yystack_[2].value.as < ast::expr_arguments::ptr > ()); yylhs.value.as < ast::expr_arguments::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::expr > ())); } -#line 3052 "parser.cpp" +#line 3095 "parser.cpp" break; - case 180: // expr_arguments_no_empty: expr -#line 697 "parser.ypp" + case 183: // expr_arguments_no_empty: expr +#line 710 "parser.ypp" { yylhs.value.as < ast::expr_arguments::ptr > () = std::make_unique(yylhs.location); yylhs.value.as < ast::expr_arguments::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::expr > ())); } -#line 3058 "parser.cpp" +#line 3101 "parser.cpp" break; - case 181: // expr_reference: "::" expr_identifier -#line 702 "parser.ypp" + case 184: // expr_reference: "::" expr_identifier +#line 715 "parser.ypp" { yylhs.value.as < ast::expr_reference::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ())); } -#line 3064 "parser.cpp" +#line 3107 "parser.cpp" break; - case 182: // expr_reference: expr_path "::" expr_identifier -#line 704 "parser.ypp" + case 185: // expr_reference: expr_path "::" expr_identifier +#line 717 "parser.ypp" { yylhs.value.as < ast::expr_reference::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr_path::ptr > ()), std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ())); } -#line 3070 "parser.cpp" +#line 3113 "parser.cpp" break; - case 183: // expr_array: expr_object "[" expr "]" -#line 709 "parser.ypp" + case 186: // expr_array: expr_object "[" expr "]" +#line 722 "parser.ypp" { yylhs.value.as < ast::expr_array::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[3].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr > ())); } -#line 3076 "parser.cpp" +#line 3119 "parser.cpp" break; - case 184: // expr_field: expr_object "." expr_identifier -#line 714 "parser.ypp" + case 187: // expr_field: expr_object "." expr_identifier +#line 727 "parser.ypp" { yylhs.value.as < ast::expr_field::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ())); } -#line 3082 "parser.cpp" +#line 3125 "parser.cpp" break; - case 185: // expr_field: expr_object "field" -#line 716 "parser.ypp" + case 188: // expr_field: expr_object "field" +#line 729 "parser.ypp" { yylhs.value.as < ast::expr_field::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ()), std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ())); } -#line 3088 "parser.cpp" +#line 3131 "parser.cpp" break; - case 186: // expr_size: expr_object ".size" -#line 721 "parser.ypp" - { yylhs.value.as < ast::expr_size::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } -#line 3094 "parser.cpp" - break; - - case 187: // expr_paren: "(" expr ")" -#line 726 "parser.ypp" - { yylhs.value.as < ast::expr_paren::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } -#line 3100 "parser.cpp" - break; - - case 188: // expr_object: expr_call -#line 730 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_call::ptr > ()); } -#line 3106 "parser.cpp" - break; - - case 189: // expr_object: expr_method -#line 731 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_method::ptr > ()); } -#line 3112 "parser.cpp" - break; - - case 190: // expr_object: expr_array -#line 732 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_array::ptr > ()); } -#line 3118 "parser.cpp" - break; - - case 191: // expr_object: expr_field -#line 733 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_field::ptr > ()); } -#line 3124 "parser.cpp" - break; - - case 192: // expr_object: expr_game + case 189: // expr_size: expr_object ".size" #line 734 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_game::ptr > ()); } -#line 3130 "parser.cpp" + { yylhs.value.as < ast::expr_size::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } +#line 3137 "parser.cpp" break; - case 193: // expr_object: expr_self -#line 735 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_self::ptr > ()); } -#line 3136 "parser.cpp" + case 190: // expr_paren: "(" expr ")" +#line 739 "parser.ypp" + { yylhs.value.as < ast::expr_paren::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } +#line 3143 "parser.cpp" break; - case 194: // expr_object: expr_anim -#line 736 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_anim::ptr > ()); } -#line 3142 "parser.cpp" - break; - - case 195: // expr_object: expr_level -#line 737 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_level::ptr > ()); } -#line 3148 "parser.cpp" - break; - - case 196: // expr_object: expr_identifier -#line 738 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ()); } -#line 3154 "parser.cpp" - break; - - case 197: // expr_thisthread: "thisthread" + case 191: // expr_object: expr_call #line 743 "parser.ypp" - { yylhs.value.as < ast::expr_thisthread::ptr > () = std::make_unique(yylhs.location); } -#line 3160 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_call::ptr > ()); } +#line 3149 "parser.cpp" break; - case 198: // expr_empty_array: "[" "]" + case 192: // expr_object: expr_method +#line 744 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_method::ptr > ()); } +#line 3155 "parser.cpp" + break; + + case 193: // expr_object: expr_array +#line 745 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_array::ptr > ()); } +#line 3161 "parser.cpp" + break; + + case 194: // expr_object: expr_field +#line 746 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_field::ptr > ()); } +#line 3167 "parser.cpp" + break; + + case 195: // expr_object: expr_game +#line 747 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_game::ptr > ()); } +#line 3173 "parser.cpp" + break; + + case 196: // expr_object: expr_self #line 748 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_self::ptr > ()); } +#line 3179 "parser.cpp" + break; + + case 197: // expr_object: expr_anim +#line 749 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_anim::ptr > ()); } +#line 3185 "parser.cpp" + break; + + case 198: // expr_object: expr_level +#line 750 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_level::ptr > ()); } +#line 3191 "parser.cpp" + break; + + case 199: // expr_object: expr_identifier +#line 751 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ()); } +#line 3197 "parser.cpp" + break; + + case 200: // expr_thisthread: "thisthread" +#line 756 "parser.ypp" + { yylhs.value.as < ast::expr_thisthread::ptr > () = std::make_unique(yylhs.location); } +#line 3203 "parser.cpp" + break; + + case 201: // expr_empty_array: "[" "]" +#line 761 "parser.ypp" { yylhs.value.as < ast::expr_empty_array::ptr > () = std::make_unique(yylhs.location); } -#line 3166 "parser.cpp" +#line 3209 "parser.cpp" break; - case 199: // expr_undefined: "undefined" -#line 753 "parser.ypp" + case 202: // expr_undefined: "undefined" +#line 766 "parser.ypp" { yylhs.value.as < ast::expr_undefined::ptr > () = std::make_unique(yylhs.location); } -#line 3172 "parser.cpp" +#line 3215 "parser.cpp" break; - case 200: // expr_game: "game" -#line 758 "parser.ypp" + case 203: // expr_game: "game" +#line 771 "parser.ypp" { yylhs.value.as < ast::expr_game::ptr > () = std::make_unique(yylhs.location); } -#line 3178 "parser.cpp" +#line 3221 "parser.cpp" break; - case 201: // expr_self: "self" -#line 763 "parser.ypp" + case 204: // expr_self: "self" +#line 776 "parser.ypp" { yylhs.value.as < ast::expr_self::ptr > () = std::make_unique(yylhs.location); } -#line 3184 "parser.cpp" +#line 3227 "parser.cpp" break; - case 202: // expr_anim: "anim" -#line 768 "parser.ypp" + case 205: // expr_anim: "anim" +#line 781 "parser.ypp" { yylhs.value.as < ast::expr_anim::ptr > () = std::make_unique(yylhs.location); } -#line 3190 "parser.cpp" +#line 3233 "parser.cpp" break; - case 203: // expr_level: "level" -#line 773 "parser.ypp" + case 206: // expr_level: "level" +#line 786 "parser.ypp" { yylhs.value.as < ast::expr_level::ptr > () = std::make_unique(yylhs.location); } -#line 3196 "parser.cpp" +#line 3239 "parser.cpp" break; - case 204: // expr_animation: "%" "identifier" -#line 778 "parser.ypp" + case 207: // expr_animation: "%" "identifier" +#line 791 "parser.ypp" { yylhs.value.as < ast::expr_animation::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3202 "parser.cpp" +#line 3245 "parser.cpp" break; - case 205: // expr_animtree: "#animtree" -#line 783 "parser.ypp" + case 208: // expr_animtree: "#animtree" +#line 796 "parser.ypp" { yylhs.value.as < ast::expr_animtree::ptr > () = std::make_unique(yylhs.location); } -#line 3208 "parser.cpp" +#line 3251 "parser.cpp" break; - case 206: // expr_identifier: "identifier" -#line 788 "parser.ypp" + case 209: // expr_identifier: "identifier" +#line 801 "parser.ypp" { yylhs.value.as < ast::expr_identifier::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3214 "parser.cpp" +#line 3257 "parser.cpp" break; - case 207: // expr_path: "path" -#line 793 "parser.ypp" + case 210: // expr_path: "path" +#line 806 "parser.ypp" { yylhs.value.as < ast::expr_path::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3220 "parser.cpp" +#line 3263 "parser.cpp" break; - case 208: // expr_path: expr_identifier -#line 795 "parser.ypp" + case 211: // expr_path: expr_identifier +#line 808 "parser.ypp" { yylhs.value.as < ast::expr_path::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < ast::expr_identifier::ptr > ()->value); } -#line 3226 "parser.cpp" +#line 3269 "parser.cpp" break; - case 209: // expr_istring: "localized string" -#line 800 "parser.ypp" + case 212: // expr_istring: "localized string" +#line 813 "parser.ypp" { yylhs.value.as < ast::expr_istring::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3232 "parser.cpp" +#line 3275 "parser.cpp" break; - case 210: // expr_string: "string literal" -#line 805 "parser.ypp" + case 213: // expr_string: "string literal" +#line 818 "parser.ypp" { yylhs.value.as < ast::expr_string::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3238 "parser.cpp" +#line 3281 "parser.cpp" break; - case 211: // expr_color: "color" -#line 810 "parser.ypp" + case 214: // expr_color: "color" +#line 823 "parser.ypp" { yylhs.value.as < ast::expr_color::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3244 "parser.cpp" +#line 3287 "parser.cpp" break; - case 212: // expr_vector: "(" expr "," expr "," expr ")" -#line 815 "parser.ypp" + case 215: // expr_vector: "(" expr "," expr "," expr ")" +#line 828 "parser.ypp" { yylhs.value.as < ast::expr_vector::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[3].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr > ())); } -#line 3250 "parser.cpp" +#line 3293 "parser.cpp" break; - case 213: // expr_float: "-" "float" -#line 820 "parser.ypp" + case 216: // expr_float: "-" "float" +#line 833 "parser.ypp" { yylhs.value.as < ast::expr_float::ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } -#line 3256 "parser.cpp" +#line 3299 "parser.cpp" break; - case 214: // expr_float: "float" -#line 822 "parser.ypp" + case 217: // expr_float: "float" +#line 835 "parser.ypp" { yylhs.value.as < ast::expr_float::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3262 "parser.cpp" +#line 3305 "parser.cpp" break; - case 215: // expr_integer: "-" "integer" -#line 827 "parser.ypp" + case 218: // expr_integer: "-" "integer" +#line 840 "parser.ypp" { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } -#line 3268 "parser.cpp" +#line 3311 "parser.cpp" break; - case 216: // expr_integer: "integer" -#line 829 "parser.ypp" + case 219: // expr_integer: "integer" +#line 842 "parser.ypp" { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3274 "parser.cpp" +#line 3317 "parser.cpp" break; - case 217: // expr_false: "false" -#line 834 "parser.ypp" + case 220: // expr_false: "false" +#line 847 "parser.ypp" { yylhs.value.as < ast::expr_false::ptr > () = std::make_unique(yylhs.location); } -#line 3280 "parser.cpp" +#line 3323 "parser.cpp" break; - case 218: // expr_true: "true" -#line 839 "parser.ypp" + case 221: // expr_true: "true" +#line 852 "parser.ypp" { yylhs.value.as < ast::expr_true::ptr > () = std::make_unique(yylhs.location); } -#line 3286 "parser.cpp" +#line 3329 "parser.cpp" break; -#line 3290 "parser.cpp" +#line 3333 "parser.cpp" default: break; @@ -3485,24 +3528,25 @@ namespace xsk { namespace gsc { namespace h2 { "localized string", "color", "float", "integer", "ADD_ARRAY", "THEN", "TERN", "NEG", "ANIMREF", "PREINC", "PREDEC", "POSTINC", "POSTDEC", "$accept", "root", "program", "inline", "include", "declaration", - "decl_usingtree", "decl_constant", "decl_thread", "stmt", "stmt_dev", - "stmt_block", "stmt_list", "stmt_expr", "stmt_call", "stmt_assign", - "stmt_endon", "stmt_notify", "stmt_wait", "stmt_waittill", - "stmt_waittillmatch", "stmt_waittillframeend", "stmt_waitframe", - "stmt_if", "stmt_ifelse", "stmt_while", "stmt_dowhile", "stmt_for", - "stmt_foreach", "stmt_switch", "stmt_case", "stmt_default", "stmt_break", - "stmt_continue", "stmt_return", "stmt_breakpoint", "stmt_prof_begin", - "stmt_prof_end", "expr", "expr_or_empty", "expr_assign", - "expr_increment", "expr_decrement", "expr_ternary", "expr_binary", - "expr_primitive", "expr_complement", "expr_not", "expr_call", - "expr_method", "expr_function", "expr_pointer", "expr_add_array", - "expr_parameters", "expr_arguments", "expr_arguments_no_empty", - "expr_reference", "expr_array", "expr_field", "expr_size", "expr_paren", - "expr_object", "expr_thisthread", "expr_empty_array", "expr_undefined", - "expr_game", "expr_self", "expr_anim", "expr_level", "expr_animation", - "expr_animtree", "expr_identifier", "expr_path", "expr_istring", - "expr_string", "expr_color", "expr_vector", "expr_float", "expr_integer", - "expr_false", "expr_true", YY_NULLPTR + "decl_usingtree", "decl_constant", "decl_thread", "stmt", "stmt_or_dev", + "stmt_list", "stmt_or_dev_list", "stmt_dev", "stmt_block", "stmt_expr", + "stmt_call", "stmt_assign", "stmt_endon", "stmt_notify", "stmt_wait", + "stmt_waittill", "stmt_waittillmatch", "stmt_waittillframeend", + "stmt_waitframe", "stmt_if", "stmt_ifelse", "stmt_while", "stmt_dowhile", + "stmt_for", "stmt_foreach", "stmt_switch", "stmt_case", "stmt_default", + "stmt_break", "stmt_continue", "stmt_return", "stmt_breakpoint", + "stmt_prof_begin", "stmt_prof_end", "expr", "expr_or_empty", + "expr_assign", "expr_increment", "expr_decrement", "expr_ternary", + "expr_binary", "expr_primitive", "expr_complement", "expr_not", + "expr_call", "expr_method", "expr_function", "expr_pointer", + "expr_add_array", "expr_parameters", "expr_arguments", + "expr_arguments_no_empty", "expr_reference", "expr_array", "expr_field", + "expr_size", "expr_paren", "expr_object", "expr_thisthread", + "expr_empty_array", "expr_undefined", "expr_game", "expr_self", + "expr_anim", "expr_level", "expr_animation", "expr_animtree", + "expr_identifier", "expr_path", "expr_istring", "expr_string", + "expr_color", "expr_vector", "expr_float", "expr_integer", "expr_false", + "expr_true", YY_NULLPTR }; return yy_sname[yysymbol]; } @@ -3767,577 +3811,584 @@ namespace xsk { namespace gsc { namespace h2 { } - const short parser::yypact_ninf_ = -267; + const short parser::yypact_ninf_ = -270; - const short parser::yytable_ninf_ = -209; + const short parser::yytable_ninf_ = -212; const short parser::yypact_[] = { - 5, -267, -267, 49, 49, -28, -267, 26, 5, -267, - -267, -267, -267, -267, -267, -39, -267, -267, -34, -32, - -64, -267, -267, -267, -267, -61, 1195, -267, -267, -267, - 8, -26, -267, -267, -25, -13, -267, -3, -267, -267, - -267, -267, -267, -267, -267, 1195, 1065, -61, 1195, 1195, - -14, -55, -267, -267, -267, -267, 1999, -267, -267, -267, - -267, -267, 23, 346, -267, -267, -267, -267, 432, 805, - -267, -267, 935, -267, -267, -267, 1161, 1226, 1274, 1288, - -267, -267, 548, 17, -267, -267, -267, -267, -267, -267, - -267, -267, 3, 27, -61, 41, 31, 57, 42, 71, - 77, 45, 1325, 1065, -267, 2082, 83, 111, -267, -267, - -267, -267, -267, -267, -267, 1195, 1195, 1195, 1195, 1195, - 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, - 1195, 1195, 1195, 1195, -267, 1260, -61, -267, -267, -267, - 117, 110, 1195, -61, -267, 779, -267, -267, 1195, 1195, - -61, 1195, 1195, -61, 1195, -267, 1195, 1061, 1195, -267, - 1964, 134, 134, 2113, 2123, 609, 609, 36, 36, 36, - 36, 2154, 2195, 2164, 65, 65, -267, -267, -267, 1769, - -267, -61, -16, -267, 122, 857, 1195, 118, -29, 124, - 1039, 130, 131, 135, 136, -5, 128, 133, 139, 1130, - 140, 145, 151, -267, 152, 115, 115, -267, -267, -267, - 909, -267, -267, -267, -267, -267, -267, -267, -267, -267, - -267, -267, -267, -267, -267, -267, -267, -267, -267, -267, - -267, -267, -267, -267, -267, 147, 153, 157, 169, 170, - -267, -267, 28, -267, -267, -267, -267, -31, 1809, -2, - 155, 1849, -1, 182, 1889, 1928, 178, 2082, 1195, -267, - 122, -267, 1195, -267, 987, 2034, -267, 184, -267, 1195, - 211, 1195, 534, -61, 1195, 141, 185, 186, -267, -267, - -267, -267, 2069, -267, 1195, 1195, 1195, -267, -267, 177, - 177, -267, -267, -267, -267, -267, -267, -267, 197, 198, - 199, 201, -267, -267, 1195, 1195, 1195, 1195, 1195, 1195, - 1195, 1195, 1195, 1195, 1195, 200, -267, 1195, 202, -267, - 1195, 204, 1195, 203, 2082, 1, -267, -267, 192, 1491, - 210, 1525, 194, -267, -267, -267, 669, -8, 1559, -267, - -267, -267, 9, 38, 1061, 1195, 1195, 1195, 1195, 2082, - 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, - 213, 47, 215, 66, 216, 1593, 1195, -267, -267, 1039, - 1195, 1039, 1195, 1195, -61, 27, 217, 219, 1627, 1369, - 1413, 1457, 1195, -267, 1195, -267, 1195, -267, 82, 238, - 1661, -267, 2082, 223, 1695, 247, -267, -267, -267, 224, - 225, 1195, 226, 1195, 229, 1195, 91, 104, 114, -267, - 1039, 230, 534, 1039, 1195, -267, -267, 240, -267, 241, - -267, 248, -267, -267, -267, -267, -267, 249, -267, 1729, - 243, 244, 245, 1039, 1039, -267, -267, -267, -267, -267 + 3, -270, -270, -42, -42, -16, -270, 43, 3, -270, + -270, -270, -270, -270, -270, -25, -270, -270, 1, 7, + -50, -270, -270, -270, -270, -28, 934, -270, -270, -270, + 24, -14, -270, -270, -37, -33, -270, 59, -270, -270, + -270, -270, -270, -270, -270, 934, 627, -28, 934, 934, + 37, -11, -270, -270, -270, -270, 2024, -270, -270, -270, + -270, -270, 69, 293, -270, -270, -270, -270, 433, 532, + -270, -270, 542, -270, -270, -270, 665, 692, 965, 1179, + -270, -270, 8, 41, -270, -270, -270, -270, -270, -270, + -270, -270, 49, 73, -28, 62, 82, 78, 88, 95, + 89, 96, 1310, 627, -270, 2107, 98, 106, -270, -270, + -270, -270, -270, -270, -270, 934, 934, 934, 934, 934, + 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, + 934, 934, 934, 934, -270, 999, -28, -270, -270, -270, + 112, 114, 934, -28, -270, 791, -270, -270, 934, 934, + -28, 934, 934, -28, 934, -270, 934, 1754, 934, -270, + 1989, 65, 65, 2138, 2148, 860, 860, 152, 152, 152, + 152, 2179, 1013, 2189, 75, 75, -270, -270, -270, 1794, + -270, -28, 17, -270, 120, 1092, 934, 113, -10, 124, + 1268, 131, 134, 137, 140, -7, 141, 133, 136, 869, + 139, 155, 156, -270, 148, 33, 33, -270, -270, 843, + -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, + -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, + -270, -270, -270, -270, -270, -270, 151, 159, 161, 162, + 165, -270, -270, 1187, -270, -270, -270, -270, -32, 1834, + 32, 158, 1874, 34, 176, 1914, 1953, 157, 2107, 934, + -270, 120, -270, 934, -270, -270, 1146, 2059, -270, 164, + -270, 934, 202, 934, -19, -28, 934, 128, 172, 173, + -270, -270, -270, -270, 2094, -270, 934, 934, 934, -270, + -270, 592, 592, -270, -270, -270, -270, -270, -270, -270, + 184, 185, 188, 189, -270, -270, 934, 934, 934, 934, + 934, 934, 934, 934, 934, 934, 934, 193, -270, 934, + 194, -270, 934, 195, 934, 201, 2107, 38, -270, -270, + -270, 180, 1476, 203, 1510, 196, -270, -270, -270, 1272, + -4, 1544, -270, -270, -270, 42, 45, 1754, 934, 934, + 934, 934, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, + 2107, 2107, 2107, 204, 55, 205, 64, 207, 1578, 934, + -270, -270, 1268, 934, 1268, 934, 934, -28, 73, 208, + 209, 1612, 1354, 1398, 1442, 934, -270, 934, -270, 934, + -270, 68, 238, 1646, -270, 2107, 215, 1680, 235, -270, + -270, -270, 217, 219, 934, 220, 934, 221, 934, 71, + 77, 84, -270, 1268, 227, -19, 1268, 934, -270, -270, + 214, -270, 216, -270, 237, -270, -270, -270, -270, -270, + 241, -270, 1714, 233, 234, 239, 1268, 1268, -270, -270, + -270, -270, -270 }; const unsigned char parser::yydefact_[] = { - 3, 12, 13, 0, 0, 0, 206, 0, 2, 7, - 8, 9, 14, 15, 16, 0, 207, 208, 0, 0, - 0, 1, 4, 5, 6, 176, 0, 10, 11, 210, - 0, 0, 175, 205, 0, 0, 197, 0, 218, 217, - 199, 200, 201, 202, 203, 0, 178, 0, 0, 0, - 0, 0, 209, 211, 214, 216, 0, 90, 91, 92, - 129, 130, 131, 132, 159, 160, 133, 134, 135, 136, - 137, 138, 0, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 0, 149, 150, 151, 152, 153, 154, - 155, 156, 0, 0, 0, 0, 208, 0, 0, 208, - 0, 0, 0, 178, 198, 180, 0, 177, 181, 158, - 157, 213, 215, 204, 18, 0, 0, 0, 0, 0, + 3, 12, 13, 0, 0, 0, 209, 0, 2, 7, + 8, 9, 14, 15, 16, 0, 210, 211, 0, 0, + 0, 1, 4, 5, 6, 179, 0, 10, 11, 213, + 0, 0, 178, 208, 0, 0, 200, 0, 221, 220, + 202, 203, 204, 205, 206, 0, 181, 0, 0, 0, + 0, 0, 212, 214, 217, 219, 0, 93, 94, 95, + 132, 133, 134, 135, 162, 163, 136, 137, 138, 139, + 140, 141, 0, 142, 143, 144, 145, 146, 147, 148, + 149, 150, 151, 0, 152, 153, 154, 155, 156, 157, + 158, 159, 0, 0, 0, 0, 211, 0, 0, 211, + 0, 0, 0, 181, 201, 183, 0, 180, 184, 161, + 160, 216, 218, 207, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 186, 0, 0, 185, 161, 162, - 208, 0, 178, 0, 17, 0, 19, 174, 0, 178, - 0, 0, 178, 0, 0, 187, 0, 180, 0, 173, - 0, 122, 123, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 124, 125, 126, 127, 128, 0, - 184, 0, 0, 177, 182, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 189, 0, 0, 188, 164, 165, + 211, 0, 181, 0, 17, 0, 19, 177, 0, 181, + 0, 0, 181, 0, 0, 190, 0, 183, 0, 176, + 0, 125, 126, 114, 115, 116, 117, 118, 119, 120, + 121, 122, 123, 124, 127, 128, 129, 130, 131, 0, + 187, 0, 0, 180, 185, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 49, 0, 0, 0, 51, 20, 21, - 0, 22, 23, 24, 25, 26, 27, 28, 29, 30, - 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 0, 0, 0, 188, 189, - 190, 191, 0, 192, 193, 194, 195, 196, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 179, 0, 183, - 0, 163, 178, 47, 0, 0, 69, 0, 70, 0, - 0, 0, 55, 0, 0, 0, 0, 0, 82, 83, - 84, 86, 0, 87, 178, 178, 0, 188, 189, 106, - 108, 48, 50, 58, 59, 60, 56, 57, 0, 0, - 0, 0, 107, 109, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 165, 178, 0, 167, - 178, 0, 0, 0, 110, 0, 46, 64, 0, 0, - 0, 0, 0, 52, 53, 54, 0, 0, 0, 81, - 80, 85, 0, 0, 0, 0, 0, 0, 0, 95, - 101, 102, 103, 104, 105, 96, 97, 98, 100, 99, - 0, 0, 0, 0, 0, 0, 178, 164, 71, 0, - 0, 0, 94, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 178, 166, 178, 168, 178, 212, 0, 72, - 0, 74, 93, 0, 0, 0, 79, 88, 89, 0, - 0, 178, 0, 178, 0, 178, 0, 0, 0, 169, - 0, 0, 55, 0, 0, 61, 63, 177, 66, 177, - 68, 177, 170, 171, 172, 73, 75, 0, 77, 0, - 0, 0, 0, 0, 0, 62, 65, 67, 76, 78 + 0, 0, 0, 54, 0, 0, 0, 45, 50, 0, + 46, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 0, 0, 0, 191, + 192, 193, 194, 0, 195, 196, 197, 198, 199, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 182, 0, + 186, 0, 166, 181, 52, 48, 0, 0, 72, 0, + 73, 0, 0, 0, 58, 0, 0, 0, 0, 0, + 85, 86, 87, 89, 0, 90, 181, 181, 0, 191, + 192, 109, 111, 53, 49, 61, 62, 63, 59, 60, + 0, 0, 0, 0, 110, 112, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 168, 181, + 0, 170, 181, 0, 0, 0, 113, 0, 51, 47, + 67, 0, 0, 0, 0, 0, 55, 56, 57, 0, + 0, 0, 84, 83, 88, 0, 0, 0, 0, 0, + 0, 0, 98, 104, 105, 106, 107, 108, 99, 100, + 101, 103, 102, 0, 0, 0, 0, 0, 0, 181, + 167, 74, 0, 0, 0, 97, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 181, 169, 181, 171, 181, + 215, 0, 75, 0, 77, 96, 0, 0, 0, 82, + 91, 92, 0, 0, 181, 0, 181, 0, 181, 0, + 0, 0, 172, 0, 0, 58, 0, 0, 64, 66, + 180, 69, 180, 71, 180, 173, 174, 175, 76, 78, + 0, 80, 0, 0, 0, 0, 0, 0, 65, 68, + 70, 79, 81 }; const short parser::yypgoto_[] = { - -267, -267, -267, 292, 300, 301, -267, -267, -267, -72, - -267, -91, 144, -81, -267, -267, -267, -267, -267, -267, - -267, -267, -267, -267, -267, -267, -267, -267, -267, -267, - -267, -267, -267, -267, -267, -267, -267, -267, 195, -267, - -266, -260, -258, -267, -267, -267, -267, -267, -130, -12, - -67, -65, -267, -267, 340, -45, -267, -6, 246, -267, - -267, 252, -267, -267, -267, 280, 329, 348, 366, -267, - -267, 0, 6, -267, -9, -267, -267, -267, 137, -267, - -267 + -270, -270, -270, 294, 295, 296, -270, -270, -270, -152, + 117, -270, -270, -270, -91, -87, -270, -270, -270, -270, + -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, + -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, + 190, -270, -269, -267, -261, -270, -270, -270, -270, -270, + -86, -12, -66, -61, -270, -270, 13, -45, -270, -6, + 179, -270, -270, 249, -270, -270, -270, 282, 337, 362, + 372, -270, -270, 0, 6, -270, -8, -270, -270, -270, + 142, -270, -270 }; const short parser::yydefgoto_[] = { 0, 7, 8, 9, 10, 11, 12, 13, 14, 207, - 208, 209, 210, 332, 211, 212, 213, 214, 215, 216, - 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, - 227, 228, 229, 230, 231, 232, 233, 234, 105, 393, - 235, 236, 237, 57, 58, 59, 60, 61, 62, 63, - 64, 65, 66, 31, 106, 183, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91 + 208, 266, 209, 210, 211, 335, 212, 213, 214, 215, + 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, + 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, + 105, 396, 236, 237, 238, 57, 58, 59, 60, 61, + 62, 63, 64, 65, 66, 31, 106, 183, 67, 68, + 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, + 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, + 89, 90, 91 }; const short parser::yytable_[] = { - 15, 107, 146, 17, 17, 138, 333, 139, 15, 18, - 19, 30, 334, 25, 335, 238, 1, 2, 3, 4, - 5, 142, 373, 267, 20, 32, 21, 93, 27, -208, - 28, 95, 94, 268, 96, 99, 29, 261, 6, 26, - 97, 100, 158, 98, 113, 298, 299, 108, 300, 301, - 374, 316, 319, 101, 367, 238, 158, 158, 107, 158, - 238, 92, 376, -188, -188, 144, -188, 158, 34, 35, - -188, 37, 140, 16, 6, 287, 287, 143, 141, -188, - 238, 145, -188, 149, 135, 16, 6, 136, 275, 111, - 112, 377, 302, 303, 147, 29, 158, 148, 151, 55, - 383, 154, 116, 117, 6, 158, 304, 305, 306, 307, - 308, 309, 310, 311, 312, 313, 314, 150, 270, 385, - -188, -188, -188, 152, 158, 137, 16, 6, 129, 130, - 131, 132, 133, 239, 238, 409, 180, 153, 292, 240, - 158, 158, 287, 184, 422, 247, 333, 16, 6, 158, - 250, 141, 334, 253, 335, 34, 35, 423, 37, 131, - 132, 133, 158, 41, 42, 43, 44, 424, 159, 142, - 181, 204, 158, 239, 262, 138, 269, 139, 239, 240, - 266, 260, 271, 272, 240, 247, 276, 273, 274, 278, - 247, 141, 292, 288, 288, 279, 141, 284, 239, 240, - 240, 280, 283, 285, 240, 247, 247, 317, 286, 293, - 247, 141, 141, 16, 6, 294, 141, 34, 35, 295, - 37, 56, 138, 138, 139, 139, 129, 130, 131, 132, - 133, 296, 297, 135, 320, 323, 136, 328, 330, 238, - 102, 238, 140, 109, 110, 112, 339, 340, 141, 345, - 346, 347, 239, 348, 368, 366, 372, 360, 240, 362, - 288, 364, 370, 410, 247, 382, 240, 384, 386, 138, - 141, 139, 247, 337, 137, 16, 6, 414, 141, 397, - 238, 398, 287, 238, 396, 412, 415, 416, 418, 140, - 140, 420, 426, 430, 431, 141, 141, 389, 157, 391, - 22, 432, 433, 238, 238, 435, 436, 437, 23, 24, - 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 264, - 179, 427, 277, 0, 0, 0, 140, 0, 425, 0, - 0, 428, 141, 248, 0, 0, 251, 0, 0, 254, - 0, 255, 0, 257, 0, 0, 417, 239, 419, 239, - 421, 438, 439, 240, 0, 240, 0, 0, 0, 247, - 0, 247, 0, 0, 395, 141, 0, 141, 0, 0, - 0, 265, 0, 0, 0, 0, -189, -189, 0, -189, - 0, 241, 0, -189, 282, 0, 0, 242, 239, 0, - 288, 239, -189, 0, 240, -189, 240, 240, 0, 0, - 247, 0, 247, 247, 0, 0, 141, 0, 141, 141, - 0, 239, 239, 0, 0, 243, 0, 240, 240, 0, - 0, 241, 0, 247, 247, 0, 241, 242, 0, 141, - 141, 0, 242, -189, -189, -189, 0, 0, 0, 0, - 0, 241, 241, 324, 0, 0, 241, 289, 290, 0, - 0, 0, 242, 0, 329, 243, 331, 0, 0, 338, - 243, 0, -190, -190, 244, -190, 0, 0, 0, -190, - 0, 344, 182, 0, 0, 243, 243, 0, -190, 249, - 243, -190, 252, 245, 0, 0, 0, 0, 0, 349, - 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, - 241, 246, 0, 0, 244, 0, 242, 365, 241, 244, - 0, 0, 0, 0, 336, 0, 0, 0, 0, -190, - -190, -190, 0, 245, 244, 244, 0, 0, 245, 244, - 378, 379, 380, 381, 243, 0, 0, 0, 0, 0, - 0, 246, 243, 245, 245, 0, 246, 0, 245, 0, - 0, 0, 0, 0, 0, 390, 0, 392, 394, 0, - 0, 246, 246, 0, 34, 35, 246, 37, 0, 0, - 0, 0, 41, 42, 43, 44, 0, 0, -196, -196, - 204, -196, 0, 244, 0, -196, 0, 0, 205, 206, - 142, 244, 325, 0, -196, 0, 0, -196, -208, 429, - 0, 0, 245, 0, 0, 241, 0, 241, 0, 0, - 245, 242, 0, 242, 342, 343, 0, 0, 0, 0, - 246, 0, 16, 6, 0, 0, 0, 0, 246, 0, - 0, 0, 0, 0, 0, -196, -196, -196, 0, 243, - 0, 243, 0, 0, 0, 0, 241, 361, 241, 241, - 363, 0, 242, 0, 336, 242, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 116, 117, 0, 0, 241, - 241, 122, 123, 124, 125, 242, 242, 0, 0, 0, - 243, 0, 243, 243, 0, 0, 0, 0, 244, 0, - 244, 129, 130, 131, 132, 133, 388, 0, 0, 34, - 35, 0, 37, 243, 243, 0, 0, 245, 0, 245, - 0, 0, 406, 0, 407, 135, 408, 0, 136, 0, - 0, 0, 0, 302, 303, 246, 0, 246, 0, 244, - 0, 244, 244, 0, 0, 0, 0, 304, 305, 306, - 307, 308, 309, 310, 311, 312, 313, 314, 245, 0, - 245, 245, 244, 244, 0, 0, 137, 16, 6, 0, - 0, 0, 0, 0, 0, 0, 246, 0, 246, 246, - 0, 245, 245, 0, 0, 0, 0, 0, 0, 0, - 185, 0, 0, 0, 0, 0, 0, 0, 186, 246, - 246, 187, 188, 189, 0, 190, 191, 192, 193, 0, - 194, 195, 196, 197, 198, 199, 200, 201, 202, 34, - 35, 0, 37, 0, 0, 0, 0, 41, 42, 43, - 44, 0, 0, 145, 203, 204, 0, 0, 0, 0, - 0, 0, 0, 205, 206, -191, -191, 0, -191, 0, - 0, 0, -191, 0, 0, 0, 0, 0, 0, 0, - 0, -191, 0, 0, -191, 0, 0, 0, 185, 263, - 0, 0, 0, 0, 0, 0, 186, 16, 6, 187, - 188, 189, 0, 190, 191, 192, 193, 0, 194, 195, - 196, 197, 198, 199, 200, 201, 202, 34, 35, 0, - 37, 0, -191, -191, -191, 41, 42, 43, 44, 0, - 0, 145, 0, 204, 0, 0, 0, 0, 0, 0, - 185, 205, 206, 0, 0, 0, 0, 0, 186, 0, - 0, 187, 188, 189, 0, 190, 191, 192, 193, 0, - 194, 195, 196, 197, 198, 199, 200, 201, 202, 34, - 35, 0, 37, 0, 0, 16, 6, 41, 42, 43, - 44, 0, 0, 145, 291, 204, 0, 0, 0, 0, - 0, 0, 0, 205, 206, 34, 35, 0, 37, 0, - 0, 0, 134, 0, 0, 0, 0, 0, 0, 0, - 0, 135, 0, 0, 136, 0, 0, 0, 185, 326, - 0, 0, 0, 0, 0, 0, 186, 16, 6, 187, - 188, 189, 0, 190, 191, 192, 193, 0, 194, 195, - 196, 197, 198, 199, 200, 201, 202, 34, 35, 0, - 37, 0, 137, 16, 6, 41, 42, 43, 44, 0, - 0, 145, 0, 204, 0, 0, 0, 0, 0, 0, - 185, 205, 206, 0, 0, 0, 0, 0, 186, 0, - 0, 187, 188, 189, 0, 190, 191, 192, 193, 0, - 194, 195, 196, 197, 198, 199, 200, 201, 202, 34, - 35, 33, 37, 0, 0, 16, 6, 41, 42, 43, - 44, 0, 0, 145, 0, 204, 0, 0, 0, 0, - 0, 0, 0, 205, 206, 34, 35, 36, 37, 38, - 39, 40, 0, 41, 42, 43, 44, 45, 256, 0, - 0, 103, 104, 0, 115, 47, 0, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 16, 6, 0, - 0, 48, 49, 0, 0, 0, 33, 0, 0, 0, - 126, 127, 128, 129, 130, 131, 132, 133, 50, 0, - 0, 51, 0, 16, 6, 29, 52, 53, 54, 55, - 34, 35, 36, 37, 38, 39, 40, 0, 41, 42, - 43, 44, 45, 0, 0, 0, 46, 0, 0, 0, - 47, 0, 281, 0, 0, 0, 0, 0, 0, 0, - 0, -192, -192, 0, -192, 0, 48, 49, -192, 0, - 0, 33, 0, 0, 0, 0, 0, -192, 0, 0, - -192, 0, 0, 50, 0, 0, 51, 0, 16, 6, - 29, 52, 53, 54, 55, 34, 35, 36, 37, 38, - 39, 40, 0, 41, 42, 43, 44, 45, 0, 0, - 0, 46, 0, 0, 0, 47, 0, 0, -192, -192, - -192, 0, 0, 0, 0, 0, -193, -193, 0, -193, - 0, 48, 49, -193, 0, 0, 33, 0, 0, 0, - 0, 0, -193, 0, 0, -193, 0, 0, 50, 0, - 0, 51, 0, 16, 6, 29, 52, 53, 54, 55, - 34, 35, 36, 37, 38, 39, 40, 0, 41, 42, - 43, 44, 45, 0, -194, -194, 103, -194, 0, 0, - 47, -194, 0, -193, -193, -193, 0, 0, -195, -195, - -194, -195, 0, -194, 0, -195, 48, 49, 0, 0, - 0, 0, 0, 0, -195, 0, 0, -195, 0, 0, - 0, 0, 0, 50, 0, 0, 51, 0, 16, 6, - 29, 52, 53, 54, 55, 0, 0, 0, 0, 0, - 0, -194, -194, -194, 0, 0, 0, 0, 155, 0, - 0, 0, 0, 156, 0, -195, -195, -195, 115, 0, - 0, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 126, 127, 128, 129, 130, 131, - 132, 133, 400, 0, 0, 0, 0, 401, 0, 0, - 0, 0, 115, 0, 0, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 126, 127, - 128, 129, 130, 131, 132, 133, 402, 0, 0, 0, - 0, 403, 0, 0, 0, 0, 115, 0, 0, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 0, + 15, 107, 146, 17, 17, 336, 138, 337, 15, 18, + 19, 139, 30, 338, 1, 2, 3, 4, 5, 95, + 142, 34, 35, 98, 37, 32, 376, 25, -211, 41, + 42, 43, 44, 265, 96, 99, 20, 204, 272, 93, + 97, 100, 269, 21, 94, 205, 206, 108, -199, -199, + 29, -199, 270, 26, 377, -199, 16, 6, 107, 239, + 142, 16, 6, 27, -199, 16, 6, -199, -211, 28, + 262, 6, 140, 34, 35, 158, 37, 92, 141, 16, + 6, 41, 42, 43, 44, 318, 277, 321, 113, 204, + 158, 370, 158, 29, 147, 379, 158, 55, 380, 239, + 158, 143, 6, 158, 239, -199, -199, -199, 386, -191, + -191, 144, -191, 158, 329, 101, -191, 388, 148, 289, + 289, 412, 158, 239, 425, -191, 158, 145, -191, 158, + 426, 16, 6, 240, 149, 158, 180, 427, 150, 241, + 111, 112, 158, 184, 151, 248, 336, 152, 337, 153, + 251, 141, 154, 254, 338, 182, 158, 129, 130, 131, + 132, 133, 250, 159, 142, 253, -191, -191, -191, 131, + 132, 133, 263, 240, 181, 268, 271, 138, 240, 241, + 239, 261, 139, 273, 241, 248, 274, 278, 289, 275, + 248, 141, 276, 290, 290, 281, 141, 240, 282, 241, + 241, 285, 280, 241, 288, 248, 248, 286, 287, 248, + 319, 141, 141, 295, 325, 141, 56, 331, 116, 117, + 392, 296, 394, 297, 298, 138, 138, 299, 322, 333, + 139, 139, 112, 342, 343, 102, 348, 349, 109, 110, + 350, 351, 371, 140, 129, 130, 131, 132, 133, 141, + 363, 365, 367, 369, 240, 373, 385, 387, 375, 389, + 241, 428, 290, 413, 431, 417, 248, 433, 241, 434, + 400, 401, 141, 138, 248, 340, 327, 415, 139, 418, + 141, 419, 421, 423, 441, 442, 239, 399, 239, 429, + 435, 140, 140, 157, 436, 438, 439, 141, 141, 345, + 346, 440, 22, 23, 24, 160, 161, 162, 163, 164, + 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, + 175, 176, 177, 178, 242, 179, 294, 239, 430, 289, + 239, 0, 364, -192, -192, 366, -192, 279, 249, 140, + -192, 252, 0, 0, 255, 141, 256, 0, 258, -192, + 239, 239, -192, 0, 0, 0, 0, 0, 0, 420, + 240, 422, 240, 424, 242, 0, 241, 0, 241, 242, + 0, 0, 248, 0, 248, 0, 267, 398, 141, 0, + 141, 0, 391, 0, 242, 242, 0, 0, 242, 284, + -192, -192, -192, 0, 243, 0, 0, 0, 409, 0, + 410, 240, 411, 290, 240, 0, 0, 241, 0, 241, + 241, 0, 0, 248, 0, 248, 248, 0, 0, 141, + 0, 141, 141, 0, 240, 240, 0, 244, 0, 0, + 241, 241, 0, 0, 243, 0, 248, 248, 0, 243, + 0, 0, 141, 141, 0, 242, 0, 0, 0, 326, + 0, 0, 0, 242, 291, 292, 0, 0, 243, 0, + 0, 332, 0, 334, 0, 0, 341, 244, 0, 0, + 0, 0, 244, -193, -193, 0, -193, 0, 347, 0, + -193, 0, 245, 0, 0, 0, 0, 244, 244, -193, + 0, 244, -193, 0, 0, 0, 352, 353, 354, 355, + 356, 357, 358, 359, 360, 361, 362, 246, 0, 0, + 0, 0, 0, 0, 368, 243, 0, 247, 0, 0, + 0, 0, 245, 339, 0, 0, 0, 245, 0, 0, + -193, -193, -193, 0, 0, 0, 0, 0, 381, 382, + 383, 384, 245, 245, 0, 0, 245, 246, 244, 0, + 0, 242, 246, 242, 0, 0, 244, 247, 0, 0, + 0, 0, 247, 393, 0, 395, 397, 246, 246, 0, + 0, 246, -194, -194, 0, -194, 0, 247, 247, -194, + 0, 247, 34, 35, 0, 37, 0, 0, -194, 134, + 0, -194, 242, 0, 242, 242, 0, 0, 135, 0, + 0, 136, 0, 245, 0, 0, 0, 432, 0, 0, + 0, 245, 0, 0, 0, 242, 242, 0, 0, 0, + 0, 243, 0, 243, 0, 0, 0, 0, 246, -194, + -194, -194, 34, 35, 0, 37, 246, 0, 247, 137, + 16, 6, 0, 33, 0, 0, 247, 0, 135, 0, + 0, 136, 0, 0, 244, 0, 244, 0, 0, 0, + 0, 0, 243, 0, 339, 243, 0, 34, 35, 36, + 37, 38, 39, 40, 0, 41, 42, 43, 44, 45, + 0, 0, 0, 103, 104, 243, 243, 47, 0, 137, + 16, 6, 0, 0, 0, 244, 0, 244, 244, 0, + 0, 0, 0, 48, 49, -195, -195, 0, -195, 245, + 0, 245, -195, 0, 0, 0, 0, 0, 244, 244, + 50, -195, 0, 51, -195, 16, 6, 29, 52, 53, + 54, 55, -196, -196, 246, -196, 246, 0, 0, -196, + 0, 0, 0, 0, 247, 0, 247, 0, -196, 0, + 245, -196, 245, 245, 0, 0, 0, 0, 0, 0, + 0, 0, -195, -195, -195, 0, 0, 0, 0, 0, + 0, 0, 0, 245, 245, 246, 0, 246, 246, 0, + 0, 0, 0, 0, 0, 247, 0, 247, 247, -196, + -196, -196, 0, 0, 0, 0, 0, 0, 246, 246, + 0, 0, 185, 0, 0, 0, 0, 0, 247, 247, + 186, 0, 0, 187, 188, 189, 0, 190, 191, 192, + 193, 0, 194, 195, 196, 197, 198, 199, 200, 201, + 202, 34, 35, 0, 37, 0, 0, 0, 0, 41, + 42, 43, 44, 0, 0, 145, 203, 204, 0, 0, + 0, 0, 0, 0, 185, 205, 206, 0, 0, 0, + 0, 0, 186, 0, 0, 187, 188, 189, 0, 190, + 191, 192, 193, 0, 194, 195, 196, 197, 198, 199, + 200, 201, 202, 34, 35, 33, 37, 0, 0, 16, + 6, 41, 42, 43, 44, 0, 0, 145, 293, 204, + 0, 0, 0, 0, 0, 0, 0, 205, 206, 34, + 35, 36, 37, 38, 39, 40, 0, 41, 42, 43, + 44, 45, 0, 0, 0, 46, 116, 117, 0, 47, + 0, 283, 122, 123, 124, 125, 0, 0, 0, 0, + 0, 16, 6, 0, 0, 48, 49, 0, 0, 0, + 33, 0, 129, 130, 131, 132, 133, 0, 0, 0, + 0, 0, 50, 0, 0, 51, 0, 16, 6, 29, + 52, 53, 54, 55, 34, 35, 36, 37, 38, 39, + 40, 0, 41, 42, 43, 44, 45, 0, 0, 0, + 46, 0, 0, 0, 47, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, -197, -197, 0, -197, 0, + 48, 49, -197, 0, 0, 33, 0, 0, 0, 0, + 0, -197, 0, 0, -197, 0, 0, 50, 0, 0, + 51, 0, 16, 6, 29, 52, 53, 54, 55, 34, + 35, 36, 37, 38, 39, 40, 0, 41, 42, 43, + 44, 45, 0, 0, 0, 103, 0, 0, 0, 47, + 0, 0, -197, -197, -197, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 48, 49, 0, 0, 116, + 117, 0, 0, 120, 121, 122, 123, 124, 125, 0, + 0, 0, 50, 0, 0, 51, 0, 16, 6, 29, + 52, 53, 54, 55, 264, 129, 130, 131, 132, 133, + 0, 186, 0, 0, 187, 188, 189, 0, 190, 191, + 192, 193, 0, 194, 195, 196, 197, 198, 199, 200, + 201, 202, 34, 35, 0, 37, 0, 0, 0, 0, + 41, 42, 43, 44, 0, 0, 145, 0, 204, 0, + 0, 0, 0, 0, 0, 0, 205, 206, 328, 0, + 0, 0, 0, 0, 0, 186, 0, 0, 187, 188, + 189, 0, 190, 191, 192, 193, 0, 194, 195, 196, + 197, 198, 199, 200, 201, 202, 34, 35, 0, 37, + 16, 6, 0, 0, 41, 42, 43, 44, 0, 0, + 145, 0, 204, 0, 300, 301, 0, 302, 303, 0, + 205, 206, 0, 0, 0, 0, 0, 0, 0, -198, + -198, 0, -198, 0, 0, 0, -198, 34, 35, 0, + 37, 0, 0, 0, 0, -198, 0, 0, -198, 0, + 0, 0, 0, 135, 16, 6, 136, 0, 0, 0, + 0, 304, 305, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 306, 307, 308, 309, 310, + 311, 312, 313, 314, 315, 316, -198, -198, -198, 0, + 0, 0, 0, 0, 137, 16, 6, 186, 0, 0, + 187, 188, 189, 0, 190, 191, 192, 193, 0, 194, + 195, 196, 197, 198, 199, 200, 201, 202, 34, 35, + 0, 37, 34, 35, 0, 37, 41, 42, 43, 44, + 0, 0, 145, 0, 204, 0, 0, 0, 135, 0, + 0, 136, 205, 206, 0, 0, 304, 305, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 126, 127, 128, 129, 130, 131, 132, 133, - 404, 0, 0, 0, 0, 405, 0, 0, 0, 0, - 115, 0, 0, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 369, 0, 126, 127, 128, 129, - 130, 131, 132, 133, 115, 0, 0, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 371, 0, - 126, 127, 128, 129, 130, 131, 132, 133, 115, 0, - 0, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 375, 0, 126, 127, 128, 129, 130, 131, - 132, 133, 115, 0, 0, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 387, 0, 126, 127, - 128, 129, 130, 131, 132, 133, 115, 0, 0, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 0, + 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, + 316, 0, 0, 155, 0, 0, 16, 6, 156, 137, + 16, 6, 0, 115, 0, 0, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 126, + 127, 128, 129, 130, 131, 132, 133, 403, 0, 0, + 0, 0, 404, 0, 0, 0, 0, 115, 0, 0, + 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 399, 0, 126, 127, 128, 129, 130, 131, 132, 133, - 115, 0, 0, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 411, 0, 126, 127, 128, 129, - 130, 131, 132, 133, 115, 0, 0, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 413, 0, - 126, 127, 128, 129, 130, 131, 132, 133, 115, 0, - 0, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 434, 0, 126, 127, 128, 129, 130, 131, - 132, 133, 115, 0, 0, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 126, 127, - 128, 129, 130, 131, 132, 133, 259, 0, 0, 0, - 0, 0, 115, 0, 0, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 126, 127, - 128, 129, 130, 131, 132, 133, 315, 0, 0, 0, - 0, 0, 115, 0, 0, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 126, 127, - 128, 129, 130, 131, 132, 133, 318, 0, 0, 0, - 0, 0, 115, 0, 0, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 126, 127, - 128, 129, 130, 131, 132, 133, 321, 0, 0, 0, - 0, 0, 115, 0, 0, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 126, 127, - 128, 129, 130, 131, 132, 133, 322, 0, 0, 0, + 0, 0, 0, 126, 127, 128, 129, 130, 131, 132, + 133, 405, 0, 0, 0, 0, 406, 0, 0, 0, 0, 115, 0, 0, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 126, 127, 128, - 129, 130, 131, 132, 133, 258, 0, 115, 0, 0, + 129, 130, 131, 132, 133, 407, 0, 0, 0, 0, + 408, 0, 0, 0, 0, 115, 0, 0, 116, 117, + 118, 119, 120, 121, 122, 123, 124, 125, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 372, + 0, 126, 127, 128, 129, 130, 131, 132, 133, 115, + 0, 0, 116, 117, 118, 119, 120, 121, 122, 123, + 124, 125, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 374, 0, 126, 127, 128, 129, 130, + 131, 132, 133, 115, 0, 0, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 378, 0, 126, + 127, 128, 129, 130, 131, 132, 133, 115, 0, 0, + 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 390, 0, 126, 127, 128, 129, 130, 131, 132, + 133, 115, 0, 0, 116, 117, 118, 119, 120, 121, + 122, 123, 124, 125, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 402, 0, 126, 127, 128, + 129, 130, 131, 132, 133, 115, 0, 0, 116, 117, + 118, 119, 120, 121, 122, 123, 124, 125, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 414, + 0, 126, 127, 128, 129, 130, 131, 132, 133, 115, + 0, 0, 116, 117, 118, 119, 120, 121, 122, 123, + 124, 125, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 416, 0, 126, 127, 128, 129, 130, + 131, 132, 133, 115, 0, 0, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 437, 0, 126, + 127, 128, 129, 130, 131, 132, 133, 115, 0, 0, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 126, 127, 128, 129, 130, 131, 132, - 133, 114, 115, 0, 0, 116, 117, 118, 119, 120, + 133, 257, 0, 0, 0, 0, 0, 115, 0, 0, + 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 126, 127, 128, 129, 130, 131, 132, + 133, 260, 0, 0, 0, 0, 0, 115, 0, 0, + 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 126, 127, 128, 129, 130, 131, 132, + 133, 317, 0, 0, 0, 0, 0, 115, 0, 0, + 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 126, 127, 128, 129, 130, 131, 132, + 133, 320, 0, 0, 0, 0, 0, 115, 0, 0, + 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 126, 127, 128, 129, 130, 131, 132, + 133, 323, 0, 0, 0, 0, 0, 115, 0, 0, + 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 126, 127, 128, 129, 130, 131, 132, + 133, 324, 0, 0, 0, 0, 115, 0, 0, 116, + 117, 118, 119, 120, 121, 122, 123, 124, 125, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 126, 127, 128, 129, 130, 131, 132, 133, + 259, 0, 115, 0, 0, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 126, 127, - 128, 129, 130, 131, 132, 133, 327, 115, 0, 0, + 128, 129, 130, 131, 132, 133, 114, 115, 0, 0, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 126, 127, 128, 129, 130, 131, 132, - 133, 341, 115, 0, 0, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 115, 0, 0, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 0, 0, 0, 0, - 0, 126, 127, 128, 129, 130, 131, 132, 133, 116, - 117, 0, 119, 120, 121, 122, 123, 124, 125, 116, - 117, 0, 0, 120, 121, 122, 123, 124, 125, 0, - 0, 0, 126, 127, 128, 129, 130, 131, 132, 133, - 0, 0, 126, 127, 128, 129, 130, 131, 132, 133, - 116, 117, 0, 0, 120, 121, 122, 123, 124, 125, - 116, 117, 0, 0, 120, 121, 122, 123, 124, 125, - 0, 0, 0, 0, 127, 128, 129, 130, 131, 132, - 133, 0, 0, 0, 127, 0, 129, 130, 131, 132, - 133, 116, 117, 0, 0, 120, 121, 122, 123, 124, - 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 129, 130, 131, - 132, 133 + 133, 330, 115, 0, 0, 116, 117, 118, 119, 120, + 121, 122, 123, 124, 125, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 126, 127, + 128, 129, 130, 131, 132, 133, 344, 115, 0, 0, + 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, + 115, 0, 0, 116, 117, 118, 119, 120, 121, 122, + 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, + 133, 0, 0, 0, 0, 0, 126, 127, 128, 129, + 130, 131, 132, 133, 116, 117, 0, 119, 120, 121, + 122, 123, 124, 125, 116, 117, 0, 0, 120, 121, + 122, 123, 124, 125, 0, 0, 0, 126, 127, 128, + 129, 130, 131, 132, 133, 0, 0, 126, 127, 128, + 129, 130, 131, 132, 133, 116, 117, 0, 0, 120, + 121, 122, 123, 124, 125, 116, 117, 0, 0, 120, + 121, 122, 123, 124, 125, 0, 0, 0, 0, 127, + 128, 129, 130, 131, 132, 133, 0, 0, 0, 127, + 0, 129, 130, 131, 132, 133 }; const short parser::yycheck_[] = { - 0, 46, 93, 3, 4, 72, 272, 72, 8, 3, - 4, 20, 272, 52, 272, 145, 11, 12, 13, 14, - 15, 52, 30, 52, 52, 25, 0, 53, 62, 60, - 62, 56, 58, 62, 34, 35, 100, 53, 99, 78, - 34, 35, 58, 56, 99, 17, 18, 47, 20, 21, - 58, 53, 53, 56, 53, 185, 58, 58, 103, 58, - 190, 53, 53, 40, 41, 62, 43, 58, 40, 41, - 47, 43, 72, 98, 99, 205, 206, 60, 72, 56, - 210, 54, 59, 52, 56, 98, 99, 59, 93, 103, - 104, 53, 64, 65, 94, 100, 58, 56, 56, 104, - 53, 56, 66, 67, 99, 58, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 60, 190, 53, - 97, 98, 99, 52, 58, 97, 98, 99, 92, 93, - 94, 95, 96, 145, 264, 53, 136, 60, 210, 145, - 58, 58, 272, 143, 53, 145, 412, 98, 99, 58, - 150, 145, 412, 153, 412, 40, 41, 53, 43, 94, - 95, 96, 58, 48, 49, 50, 51, 53, 57, 52, - 60, 56, 58, 185, 52, 242, 52, 242, 190, 185, - 62, 181, 52, 52, 190, 185, 195, 52, 52, 61, - 190, 185, 264, 205, 206, 62, 190, 52, 210, 205, - 206, 62, 62, 52, 210, 205, 206, 52, 56, 62, - 210, 205, 206, 98, 99, 62, 210, 40, 41, 62, - 43, 26, 289, 290, 289, 290, 92, 93, 94, 95, - 96, 62, 62, 56, 52, 57, 59, 53, 27, 369, - 45, 371, 242, 48, 49, 104, 61, 61, 242, 52, - 52, 52, 264, 52, 62, 52, 62, 57, 264, 57, - 272, 57, 52, 25, 264, 52, 272, 52, 52, 336, - 264, 336, 272, 273, 97, 98, 99, 30, 272, 62, - 410, 62, 412, 413, 375, 62, 62, 62, 62, 289, - 290, 62, 62, 53, 53, 289, 290, 369, 103, 371, - 8, 53, 53, 433, 434, 62, 62, 62, 8, 8, - 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 185, - 135, 412, 195, -1, -1, -1, 336, -1, 410, -1, - -1, 413, 336, 148, -1, -1, 151, -1, -1, 154, - -1, 156, -1, 158, -1, -1, 401, 369, 403, 371, - 405, 433, 434, 369, -1, 371, -1, -1, -1, 369, - -1, 371, -1, -1, 374, 369, -1, 371, -1, -1, - -1, 186, -1, -1, -1, -1, 40, 41, -1, 43, - -1, 145, -1, 47, 199, -1, -1, 145, 410, -1, - 412, 413, 56, -1, 410, 59, 412, 413, -1, -1, - 410, -1, 412, 413, -1, -1, 410, -1, 412, 413, - -1, 433, 434, -1, -1, 145, -1, 433, 434, -1, - -1, 185, -1, 433, 434, -1, 190, 185, -1, 433, - 434, -1, 190, 97, 98, 99, -1, -1, -1, -1, - -1, 205, 206, 258, -1, -1, 210, 205, 206, -1, - -1, -1, 210, -1, 269, 185, 271, -1, -1, 274, - 190, -1, 40, 41, 145, 43, -1, -1, -1, 47, - -1, 286, 142, -1, -1, 205, 206, -1, 56, 149, - 210, 59, 152, 145, -1, -1, -1, -1, -1, 304, - 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 264, 145, -1, -1, 185, -1, 264, 322, 272, 190, - -1, -1, -1, -1, 272, -1, -1, -1, -1, 97, - 98, 99, -1, 185, 205, 206, -1, -1, 190, 210, - 345, 346, 347, 348, 264, -1, -1, -1, -1, -1, - -1, 185, 272, 205, 206, -1, 190, -1, 210, -1, - -1, -1, -1, -1, -1, 370, -1, 372, 373, -1, - -1, 205, 206, -1, 40, 41, 210, 43, -1, -1, - -1, -1, 48, 49, 50, 51, -1, -1, 40, 41, - 56, 43, -1, 264, -1, 47, -1, -1, 64, 65, - 52, 272, 262, -1, 56, -1, -1, 59, 60, 414, - -1, -1, 264, -1, -1, 369, -1, 371, -1, -1, - 272, 369, -1, 371, 284, 285, -1, -1, -1, -1, - 264, -1, 98, 99, -1, -1, -1, -1, 272, -1, - -1, -1, -1, -1, -1, 97, 98, 99, -1, 369, - -1, 371, -1, -1, -1, -1, 410, 317, 412, 413, - 320, -1, 410, -1, 412, 413, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 66, 67, -1, -1, 433, - 434, 72, 73, 74, 75, 433, 434, -1, -1, -1, - 410, -1, 412, 413, -1, -1, -1, -1, 369, -1, - 371, 92, 93, 94, 95, 96, 366, -1, -1, 40, - 41, -1, 43, 433, 434, -1, -1, 369, -1, 371, - -1, -1, 382, -1, 384, 56, 386, -1, 59, -1, - -1, -1, -1, 64, 65, 369, -1, 371, -1, 410, - -1, 412, 413, -1, -1, -1, -1, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 410, -1, - 412, 413, 433, 434, -1, -1, 97, 98, 99, -1, - -1, -1, -1, -1, -1, -1, 410, -1, 412, 413, - -1, 433, 434, -1, -1, -1, -1, -1, -1, -1, - 11, -1, -1, -1, -1, -1, -1, -1, 19, 433, - 434, 22, 23, 24, -1, 26, 27, 28, 29, -1, - 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, -1, 43, -1, -1, -1, -1, 48, 49, 50, - 51, -1, -1, 54, 55, 56, -1, -1, -1, -1, - -1, -1, -1, 64, 65, 40, 41, -1, 43, -1, - -1, -1, 47, -1, -1, -1, -1, -1, -1, -1, - -1, 56, -1, -1, 59, -1, -1, -1, 11, 12, - -1, -1, -1, -1, -1, -1, 19, 98, 99, 22, - 23, 24, -1, 26, 27, 28, 29, -1, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, -1, - 43, -1, 97, 98, 99, 48, 49, 50, 51, -1, - -1, 54, -1, 56, -1, -1, -1, -1, -1, -1, - 11, 64, 65, -1, -1, -1, -1, -1, 19, -1, - -1, 22, 23, 24, -1, 26, 27, 28, 29, -1, - 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, -1, 43, -1, -1, 98, 99, 48, 49, 50, - 51, -1, -1, 54, 55, 56, -1, -1, -1, -1, - -1, -1, -1, 64, 65, 40, 41, -1, 43, -1, - -1, -1, 47, -1, -1, -1, -1, -1, -1, -1, - -1, 56, -1, -1, 59, -1, -1, -1, 11, 12, - -1, -1, -1, -1, -1, -1, 19, 98, 99, 22, - 23, 24, -1, 26, 27, 28, 29, -1, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, -1, - 43, -1, 97, 98, 99, 48, 49, 50, 51, -1, - -1, 54, -1, 56, -1, -1, -1, -1, -1, -1, - 11, 64, 65, -1, -1, -1, -1, -1, 19, -1, - -1, 22, 23, 24, -1, 26, 27, 28, 29, -1, - 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 16, 43, -1, -1, 98, 99, 48, 49, 50, - 51, -1, -1, 54, -1, 56, -1, -1, -1, -1, - -1, -1, -1, 64, 65, 40, 41, 42, 43, 44, - 45, 46, -1, 48, 49, 50, 51, 52, 57, -1, - -1, 56, 57, -1, 63, 60, -1, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 98, 99, -1, - -1, 76, 77, -1, -1, -1, 16, -1, -1, -1, - 89, 90, 91, 92, 93, 94, 95, 96, 93, -1, - -1, 96, -1, 98, 99, 100, 101, 102, 103, 104, - 40, 41, 42, 43, 44, 45, 46, -1, 48, 49, - 50, 51, 52, -1, -1, -1, 56, -1, -1, -1, - 60, -1, 62, -1, -1, -1, -1, -1, -1, -1, - -1, 40, 41, -1, 43, -1, 76, 77, 47, -1, - -1, 16, -1, -1, -1, -1, -1, 56, -1, -1, - 59, -1, -1, 93, -1, -1, 96, -1, 98, 99, - 100, 101, 102, 103, 104, 40, 41, 42, 43, 44, - 45, 46, -1, 48, 49, 50, 51, 52, -1, -1, - -1, 56, -1, -1, -1, 60, -1, -1, 97, 98, - 99, -1, -1, -1, -1, -1, 40, 41, -1, 43, - -1, 76, 77, 47, -1, -1, 16, -1, -1, -1, - -1, -1, 56, -1, -1, 59, -1, -1, 93, -1, - -1, 96, -1, 98, 99, 100, 101, 102, 103, 104, - 40, 41, 42, 43, 44, 45, 46, -1, 48, 49, - 50, 51, 52, -1, 40, 41, 56, 43, -1, -1, - 60, 47, -1, 97, 98, 99, -1, -1, 40, 41, - 56, 43, -1, 59, -1, 47, 76, 77, -1, -1, - -1, -1, -1, -1, 56, -1, -1, 59, -1, -1, - -1, -1, -1, 93, -1, -1, 96, -1, 98, 99, - 100, 101, 102, 103, 104, -1, -1, -1, -1, -1, - -1, 97, 98, 99, -1, -1, -1, -1, 53, -1, - -1, -1, -1, 58, -1, 97, 98, 99, 63, -1, - -1, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 89, 90, 91, 92, 93, 94, - 95, 96, 53, -1, -1, -1, -1, 58, -1, -1, - -1, -1, 63, -1, -1, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 89, 90, - 91, 92, 93, 94, 95, 96, 53, -1, -1, -1, - -1, 58, -1, -1, -1, -1, 63, -1, -1, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, -1, + 0, 46, 93, 3, 4, 274, 72, 274, 8, 3, + 4, 72, 20, 274, 11, 12, 13, 14, 15, 56, + 52, 40, 41, 56, 43, 25, 30, 52, 60, 48, + 49, 50, 51, 185, 34, 35, 52, 56, 190, 53, + 34, 35, 52, 0, 58, 64, 65, 47, 40, 41, + 100, 43, 62, 78, 58, 47, 98, 99, 103, 145, + 52, 98, 99, 62, 56, 98, 99, 59, 60, 62, + 53, 99, 72, 40, 41, 58, 43, 53, 72, 98, + 99, 48, 49, 50, 51, 53, 93, 53, 99, 56, + 58, 53, 58, 100, 94, 53, 58, 104, 53, 185, + 58, 60, 99, 58, 190, 97, 98, 99, 53, 40, + 41, 62, 43, 58, 266, 56, 47, 53, 56, 205, + 206, 53, 58, 209, 53, 56, 58, 54, 59, 58, + 53, 98, 99, 145, 52, 58, 136, 53, 60, 145, + 103, 104, 58, 143, 56, 145, 415, 52, 415, 60, + 150, 145, 56, 153, 415, 142, 58, 92, 93, 94, + 95, 96, 149, 57, 52, 152, 97, 98, 99, 94, + 95, 96, 52, 185, 60, 62, 52, 243, 190, 185, + 266, 181, 243, 52, 190, 185, 52, 195, 274, 52, + 190, 185, 52, 205, 206, 62, 190, 209, 62, 205, + 206, 62, 61, 209, 56, 205, 206, 52, 52, 209, + 52, 205, 206, 62, 57, 209, 26, 53, 66, 67, + 372, 62, 374, 62, 62, 291, 292, 62, 52, 27, + 291, 292, 104, 61, 61, 45, 52, 52, 48, 49, + 52, 52, 62, 243, 92, 93, 94, 95, 96, 243, + 57, 57, 57, 52, 266, 52, 52, 52, 62, 52, + 266, 413, 274, 25, 416, 30, 266, 53, 274, 53, + 62, 62, 266, 339, 274, 275, 263, 62, 339, 62, + 274, 62, 62, 62, 436, 437, 372, 378, 374, 62, + 53, 291, 292, 103, 53, 62, 62, 291, 292, 286, + 287, 62, 8, 8, 8, 115, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, + 130, 131, 132, 133, 145, 135, 209, 413, 415, 415, + 416, -1, 319, 40, 41, 322, 43, 195, 148, 339, + 47, 151, -1, -1, 154, 339, 156, -1, 158, 56, + 436, 437, 59, -1, -1, -1, -1, -1, -1, 404, + 372, 406, 374, 408, 185, -1, 372, -1, 374, 190, + -1, -1, 372, -1, 374, -1, 186, 377, 372, -1, + 374, -1, 369, -1, 205, 206, -1, -1, 209, 199, + 97, 98, 99, -1, 145, -1, -1, -1, 385, -1, + 387, 413, 389, 415, 416, -1, -1, 413, -1, 415, + 416, -1, -1, 413, -1, 415, 416, -1, -1, 413, + -1, 415, 416, -1, 436, 437, -1, 145, -1, -1, + 436, 437, -1, -1, 185, -1, 436, 437, -1, 190, + -1, -1, 436, 437, -1, 266, -1, -1, -1, 259, + -1, -1, -1, 274, 205, 206, -1, -1, 209, -1, + -1, 271, -1, 273, -1, -1, 276, 185, -1, -1, + -1, -1, 190, 40, 41, -1, 43, -1, 288, -1, + 47, -1, 145, -1, -1, -1, -1, 205, 206, 56, + -1, 209, 59, -1, -1, -1, 306, 307, 308, 309, + 310, 311, 312, 313, 314, 315, 316, 145, -1, -1, + -1, -1, -1, -1, 324, 266, -1, 145, -1, -1, + -1, -1, 185, 274, -1, -1, -1, 190, -1, -1, + 97, 98, 99, -1, -1, -1, -1, -1, 348, 349, + 350, 351, 205, 206, -1, -1, 209, 185, 266, -1, + -1, 372, 190, 374, -1, -1, 274, 185, -1, -1, + -1, -1, 190, 373, -1, 375, 376, 205, 206, -1, + -1, 209, 40, 41, -1, 43, -1, 205, 206, 47, + -1, 209, 40, 41, -1, 43, -1, -1, 56, 47, + -1, 59, 413, -1, 415, 416, -1, -1, 56, -1, + -1, 59, -1, 266, -1, -1, -1, 417, -1, -1, + -1, 274, -1, -1, -1, 436, 437, -1, -1, -1, + -1, 372, -1, 374, -1, -1, -1, -1, 266, 97, + 98, 99, 40, 41, -1, 43, 274, -1, 266, 97, + 98, 99, -1, 16, -1, -1, 274, -1, 56, -1, + -1, 59, -1, -1, 372, -1, 374, -1, -1, -1, + -1, -1, 413, -1, 415, 416, -1, 40, 41, 42, + 43, 44, 45, 46, -1, 48, 49, 50, 51, 52, + -1, -1, -1, 56, 57, 436, 437, 60, -1, 97, + 98, 99, -1, -1, -1, 413, -1, 415, 416, -1, + -1, -1, -1, 76, 77, 40, 41, -1, 43, 372, + -1, 374, 47, -1, -1, -1, -1, -1, 436, 437, + 93, 56, -1, 96, 59, 98, 99, 100, 101, 102, + 103, 104, 40, 41, 372, 43, 374, -1, -1, 47, + -1, -1, -1, -1, 372, -1, 374, -1, 56, -1, + 413, 59, 415, 416, -1, -1, -1, -1, -1, -1, + -1, -1, 97, 98, 99, -1, -1, -1, -1, -1, + -1, -1, -1, 436, 437, 413, -1, 415, 416, -1, + -1, -1, -1, -1, -1, 413, -1, 415, 416, 97, + 98, 99, -1, -1, -1, -1, -1, -1, 436, 437, + -1, -1, 11, -1, -1, -1, -1, -1, 436, 437, + 19, -1, -1, 22, 23, 24, -1, 26, 27, 28, + 29, -1, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, -1, 43, -1, -1, -1, -1, 48, + 49, 50, 51, -1, -1, 54, 55, 56, -1, -1, + -1, -1, -1, -1, 11, 64, 65, -1, -1, -1, + -1, -1, 19, -1, -1, 22, 23, 24, -1, 26, + 27, 28, 29, -1, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 41, 16, 43, -1, -1, 98, + 99, 48, 49, 50, 51, -1, -1, 54, 55, 56, + -1, -1, -1, -1, -1, -1, -1, 64, 65, 40, + 41, 42, 43, 44, 45, 46, -1, 48, 49, 50, + 51, 52, -1, -1, -1, 56, 66, 67, -1, 60, + -1, 62, 72, 73, 74, 75, -1, -1, -1, -1, + -1, 98, 99, -1, -1, 76, 77, -1, -1, -1, + 16, -1, 92, 93, 94, 95, 96, -1, -1, -1, + -1, -1, 93, -1, -1, 96, -1, 98, 99, 100, + 101, 102, 103, 104, 40, 41, 42, 43, 44, 45, + 46, -1, 48, 49, 50, 51, 52, -1, -1, -1, + 56, -1, -1, -1, 60, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 40, 41, -1, 43, -1, + 76, 77, 47, -1, -1, 16, -1, -1, -1, -1, + -1, 56, -1, -1, 59, -1, -1, 93, -1, -1, + 96, -1, 98, 99, 100, 101, 102, 103, 104, 40, + 41, 42, 43, 44, 45, 46, -1, 48, 49, 50, + 51, 52, -1, -1, -1, 56, -1, -1, -1, 60, + -1, -1, 97, 98, 99, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 76, 77, -1, -1, 66, + 67, -1, -1, 70, 71, 72, 73, 74, 75, -1, + -1, -1, 93, -1, -1, 96, -1, 98, 99, 100, + 101, 102, 103, 104, 12, 92, 93, 94, 95, 96, + -1, 19, -1, -1, 22, 23, 24, -1, 26, 27, + 28, 29, -1, 31, 32, 33, 34, 35, 36, 37, + 38, 39, 40, 41, -1, 43, -1, -1, -1, -1, + 48, 49, 50, 51, -1, -1, 54, -1, 56, -1, + -1, -1, -1, -1, -1, -1, 64, 65, 12, -1, + -1, -1, -1, -1, -1, 19, -1, -1, 22, 23, + 24, -1, 26, 27, 28, 29, -1, 31, 32, 33, + 34, 35, 36, 37, 38, 39, 40, 41, -1, 43, + 98, 99, -1, -1, 48, 49, 50, 51, -1, -1, + 54, -1, 56, -1, 17, 18, -1, 20, 21, -1, + 64, 65, -1, -1, -1, -1, -1, -1, -1, 40, + 41, -1, 43, -1, -1, -1, 47, 40, 41, -1, + 43, -1, -1, -1, -1, 56, -1, -1, 59, -1, + -1, -1, -1, 56, 98, 99, 59, -1, -1, -1, + -1, 64, 65, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 78, 79, 80, 81, 82, + 83, 84, 85, 86, 87, 88, 97, 98, 99, -1, + -1, -1, -1, -1, 97, 98, 99, 19, -1, -1, + 22, 23, 24, -1, 26, 27, 28, 29, -1, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, + -1, 43, 40, 41, -1, 43, 48, 49, 50, 51, + -1, -1, 54, -1, 56, -1, -1, -1, 56, -1, + -1, 59, 64, 65, -1, -1, 64, 65, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 89, 90, 91, 92, 93, 94, 95, 96, - 53, -1, -1, -1, -1, 58, -1, -1, -1, -1, - 63, -1, -1, 66, 67, 68, 69, 70, 71, 72, - 73, 74, 75, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 53, -1, 89, 90, 91, 92, - 93, 94, 95, 96, 63, -1, -1, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 53, -1, - 89, 90, 91, 92, 93, 94, 95, 96, 63, -1, - -1, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 53, -1, 89, 90, 91, 92, 93, 94, - 95, 96, 63, -1, -1, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 53, -1, 89, 90, - 91, 92, 93, 94, 95, 96, 63, -1, -1, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, -1, + 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, + 88, -1, -1, 53, -1, -1, 98, 99, 58, 97, + 98, 99, -1, 63, -1, -1, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 75, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 89, + 90, 91, 92, 93, 94, 95, 96, 53, -1, -1, + -1, -1, 58, -1, -1, -1, -1, 63, -1, -1, + 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 53, -1, 89, 90, 91, 92, 93, 94, 95, 96, - 63, -1, -1, 66, 67, 68, 69, 70, 71, 72, - 73, 74, 75, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 53, -1, 89, 90, 91, 92, - 93, 94, 95, 96, 63, -1, -1, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 53, -1, - 89, 90, 91, 92, 93, 94, 95, 96, 63, -1, - -1, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 53, -1, 89, 90, 91, 92, 93, 94, - 95, 96, 63, -1, -1, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 89, 90, - 91, 92, 93, 94, 95, 96, 57, -1, -1, -1, - -1, -1, 63, -1, -1, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 89, 90, - 91, 92, 93, 94, 95, 96, 57, -1, -1, -1, - -1, -1, 63, -1, -1, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 89, 90, - 91, 92, 93, 94, 95, 96, 57, -1, -1, -1, - -1, -1, 63, -1, -1, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 89, 90, - 91, 92, 93, 94, 95, 96, 57, -1, -1, -1, - -1, -1, 63, -1, -1, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 89, 90, - 91, 92, 93, 94, 95, 96, 58, -1, -1, -1, + -1, -1, -1, 89, 90, 91, 92, 93, 94, 95, + 96, 53, -1, -1, -1, -1, 58, -1, -1, -1, -1, 63, -1, -1, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 89, 90, 91, - 92, 93, 94, 95, 96, 61, -1, 63, -1, -1, + 92, 93, 94, 95, 96, 53, -1, -1, -1, -1, + 58, -1, -1, -1, -1, 63, -1, -1, 66, 67, + 68, 69, 70, 71, 72, 73, 74, 75, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 53, + -1, 89, 90, 91, 92, 93, 94, 95, 96, 63, + -1, -1, 66, 67, 68, 69, 70, 71, 72, 73, + 74, 75, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 53, -1, 89, 90, 91, 92, 93, + 94, 95, 96, 63, -1, -1, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 75, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 53, -1, 89, + 90, 91, 92, 93, 94, 95, 96, 63, -1, -1, + 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 53, -1, 89, 90, 91, 92, 93, 94, 95, + 96, 63, -1, -1, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 53, -1, 89, 90, 91, + 92, 93, 94, 95, 96, 63, -1, -1, 66, 67, + 68, 69, 70, 71, 72, 73, 74, 75, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 53, + -1, 89, 90, 91, 92, 93, 94, 95, 96, 63, + -1, -1, 66, 67, 68, 69, 70, 71, 72, 73, + 74, 75, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 53, -1, 89, 90, 91, 92, 93, + 94, 95, 96, 63, -1, -1, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 75, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 53, -1, 89, + 90, 91, 92, 93, 94, 95, 96, 63, -1, -1, + 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 89, 90, 91, 92, 93, 94, 95, + 96, 57, -1, -1, -1, -1, -1, 63, -1, -1, + 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 89, 90, 91, 92, 93, 94, 95, + 96, 57, -1, -1, -1, -1, -1, 63, -1, -1, + 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 89, 90, 91, 92, 93, 94, 95, + 96, 57, -1, -1, -1, -1, -1, 63, -1, -1, + 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 89, 90, 91, 92, 93, 94, 95, + 96, 57, -1, -1, -1, -1, -1, 63, -1, -1, + 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 89, 90, 91, 92, 93, 94, 95, + 96, 57, -1, -1, -1, -1, -1, 63, -1, -1, + 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 89, 90, 91, 92, 93, 94, 95, + 96, 58, -1, -1, -1, -1, 63, -1, -1, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 89, 90, 91, 92, 93, 94, 95, 96, + 61, -1, 63, -1, -1, 66, 67, 68, 69, 70, + 71, 72, 73, 74, 75, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 89, 90, + 91, 92, 93, 94, 95, 96, 62, 63, -1, -1, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 89, 90, 91, 92, 93, 94, 95, @@ -4346,74 +4397,68 @@ namespace xsk { namespace gsc { namespace h2 { -1, -1, -1, -1, -1, -1, -1, -1, 89, 90, 91, 92, 93, 94, 95, 96, 62, 63, -1, -1, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 89, 90, 91, 92, 93, 94, 95, - 96, 62, 63, -1, -1, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 63, -1, -1, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 89, 90, - 91, 92, 93, 94, 95, 96, -1, -1, -1, -1, - -1, 89, 90, 91, 92, 93, 94, 95, 96, 66, - 67, -1, 69, 70, 71, 72, 73, 74, 75, 66, - 67, -1, -1, 70, 71, 72, 73, 74, 75, -1, - -1, -1, 89, 90, 91, 92, 93, 94, 95, 96, - -1, -1, 89, 90, 91, 92, 93, 94, 95, 96, - 66, 67, -1, -1, 70, 71, 72, 73, 74, 75, - 66, 67, -1, -1, 70, 71, 72, 73, 74, 75, - -1, -1, -1, -1, 90, 91, 92, 93, 94, 95, - 96, -1, -1, -1, 90, -1, 92, 93, 94, 95, - 96, 66, 67, -1, -1, 70, 71, 72, 73, 74, - 75, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 92, 93, 94, - 95, 96 + 63, -1, -1, 66, 67, 68, 69, 70, 71, 72, + 73, 74, 75, 89, 90, 91, 92, 93, 94, 95, + 96, -1, -1, -1, -1, -1, 89, 90, 91, 92, + 93, 94, 95, 96, 66, 67, -1, 69, 70, 71, + 72, 73, 74, 75, 66, 67, -1, -1, 70, 71, + 72, 73, 74, 75, -1, -1, -1, 89, 90, 91, + 92, 93, 94, 95, 96, -1, -1, 89, 90, 91, + 92, 93, 94, 95, 96, 66, 67, -1, -1, 70, + 71, 72, 73, 74, 75, 66, 67, -1, -1, 70, + 71, 72, 73, 74, 75, -1, -1, -1, -1, 90, + 91, 92, 93, 94, 95, 96, -1, -1, -1, 90, + -1, 92, 93, 94, 95, 96 }; const unsigned char parser::yystos_[] = { 0, 11, 12, 13, 14, 15, 99, 115, 116, 117, - 118, 119, 120, 121, 122, 185, 98, 185, 186, 186, + 118, 119, 120, 121, 122, 187, 98, 187, 188, 188, 52, 0, 117, 118, 119, 52, 78, 62, 62, 100, - 188, 167, 185, 16, 40, 41, 42, 43, 44, 45, + 190, 169, 187, 16, 40, 41, 42, 43, 44, 45, 46, 48, 49, 50, 51, 52, 56, 60, 76, 77, - 93, 96, 101, 102, 103, 104, 152, 157, 158, 159, - 160, 161, 162, 163, 164, 165, 166, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, - 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, - 193, 194, 53, 53, 58, 56, 185, 186, 56, 185, - 186, 56, 152, 56, 57, 152, 168, 169, 185, 152, - 152, 103, 104, 99, 62, 63, 66, 67, 68, 69, + 93, 96, 101, 102, 103, 104, 154, 159, 160, 161, + 162, 163, 164, 165, 166, 167, 168, 172, 173, 174, + 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, + 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, + 195, 196, 53, 53, 58, 56, 187, 188, 56, 187, + 188, 56, 154, 56, 57, 154, 170, 171, 187, 154, + 154, 103, 104, 99, 62, 63, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 89, 90, 91, 92, - 93, 94, 95, 96, 47, 56, 59, 97, 164, 165, - 185, 186, 52, 60, 62, 54, 125, 185, 56, 52, - 60, 56, 52, 60, 56, 53, 58, 152, 58, 57, - 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, - 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, - 185, 60, 168, 169, 185, 11, 19, 22, 23, 24, + 93, 94, 95, 96, 47, 56, 59, 97, 166, 167, + 187, 188, 52, 60, 62, 54, 128, 187, 56, 52, + 60, 56, 52, 60, 56, 53, 58, 154, 58, 57, + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 187, 60, 170, 171, 187, 11, 19, 22, 23, 24, 26, 27, 28, 29, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 55, 56, 64, 65, 123, 124, 125, - 126, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 150, 151, 154, 155, 156, 162, 163, - 171, 172, 175, 179, 180, 181, 182, 185, 152, 168, - 185, 152, 168, 185, 152, 152, 57, 152, 61, 57, - 185, 53, 52, 12, 126, 152, 62, 52, 62, 52, - 123, 52, 52, 52, 52, 93, 188, 192, 61, 62, - 62, 62, 152, 62, 52, 52, 56, 162, 163, 175, - 175, 55, 123, 62, 62, 62, 62, 62, 17, 18, - 20, 21, 64, 65, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 57, 53, 52, 57, 53, - 52, 57, 58, 57, 152, 168, 12, 62, 53, 152, - 27, 152, 127, 154, 155, 156, 175, 185, 152, 61, - 61, 62, 168, 168, 152, 52, 52, 52, 52, 152, - 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, - 57, 168, 57, 168, 57, 152, 52, 53, 62, 53, - 52, 53, 62, 30, 58, 53, 53, 53, 152, 152, - 152, 152, 52, 53, 52, 53, 52, 53, 168, 123, - 152, 123, 152, 153, 152, 185, 125, 62, 62, 53, - 53, 58, 53, 58, 53, 58, 168, 168, 168, 53, - 25, 53, 62, 53, 30, 62, 62, 169, 62, 169, - 62, 169, 53, 53, 53, 123, 62, 127, 123, 152, - 53, 53, 53, 53, 53, 62, 62, 62, 123, 123 + 37, 38, 39, 55, 56, 64, 65, 123, 124, 126, + 127, 128, 130, 131, 132, 133, 134, 135, 136, 137, + 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, + 148, 149, 150, 151, 152, 153, 156, 157, 158, 164, + 165, 173, 174, 177, 181, 182, 183, 184, 187, 154, + 170, 187, 154, 170, 187, 154, 154, 57, 154, 61, + 57, 187, 53, 52, 12, 123, 125, 154, 62, 52, + 62, 52, 123, 52, 52, 52, 52, 93, 190, 194, + 61, 62, 62, 62, 154, 62, 52, 52, 56, 164, + 165, 177, 177, 55, 124, 62, 62, 62, 62, 62, + 17, 18, 20, 21, 64, 65, 78, 79, 80, 81, + 82, 83, 84, 85, 86, 87, 88, 57, 53, 52, + 57, 53, 52, 57, 58, 57, 154, 170, 12, 123, + 62, 53, 154, 27, 154, 129, 156, 157, 158, 177, + 187, 154, 61, 61, 62, 170, 170, 154, 52, 52, + 52, 52, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 57, 170, 57, 170, 57, 154, 52, + 53, 62, 53, 52, 53, 62, 30, 58, 53, 53, + 53, 154, 154, 154, 154, 52, 53, 52, 53, 52, + 53, 170, 123, 154, 123, 154, 155, 154, 187, 128, + 62, 62, 53, 53, 58, 53, 58, 53, 58, 170, + 170, 170, 53, 25, 53, 62, 53, 30, 62, 62, + 171, 62, 171, 62, 171, 53, 53, 53, 123, 62, + 129, 123, 154, 53, 53, 53, 53, 53, 62, 62, + 62, 123, 123 }; const unsigned char @@ -4423,24 +4468,25 @@ namespace xsk { namespace gsc { namespace h2 { 117, 118, 119, 119, 119, 119, 119, 120, 121, 122, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, - 123, 123, 123, 123, 123, 123, 124, 124, 125, 125, - 126, 126, 127, 127, 127, 127, 128, 128, 129, 129, - 129, 130, 131, 131, 132, 133, 133, 134, 134, 135, - 136, 136, 137, 138, 139, 140, 141, 142, 142, 143, - 144, 144, 145, 146, 147, 148, 148, 149, 150, 151, - 152, 152, 152, 153, 153, 154, 154, 154, 154, 154, - 154, 154, 154, 154, 154, 154, 155, 155, 156, 156, - 157, 158, 158, 158, 158, 158, 158, 158, 158, 158, - 158, 158, 158, 158, 158, 158, 158, 158, 158, 159, - 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, - 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, - 159, 159, 159, 159, 159, 159, 159, 160, 161, 162, - 162, 163, 163, 164, 164, 164, 164, 164, 164, 165, - 165, 165, 165, 166, 167, 167, 167, 168, 168, 169, - 169, 170, 170, 171, 172, 172, 173, 174, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 186, 187, - 188, 189, 190, 191, 191, 192, 192, 193, 194 + 123, 123, 123, 123, 123, 124, 124, 125, 125, 126, + 126, 127, 127, 128, 128, 129, 129, 129, 129, 130, + 130, 131, 131, 131, 132, 133, 133, 134, 135, 135, + 136, 136, 137, 138, 138, 139, 140, 141, 142, 143, + 144, 144, 145, 146, 146, 147, 148, 149, 150, 150, + 151, 152, 153, 154, 154, 154, 155, 155, 156, 156, + 156, 156, 156, 156, 156, 156, 156, 156, 156, 157, + 157, 158, 158, 159, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 162, 163, 164, 164, 165, 165, 166, 166, 166, 166, + 166, 166, 167, 167, 167, 167, 168, 169, 169, 169, + 170, 170, 171, 171, 172, 172, 173, 174, 174, 175, + 176, 177, 177, 177, 177, 177, 177, 177, 177, 177, + 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, + 188, 188, 189, 190, 191, 192, 193, 193, 194, 194, + 195, 196 }; const signed char @@ -4450,24 +4496,25 @@ namespace xsk { namespace gsc { namespace h2 { 3, 3, 1, 1, 1, 1, 1, 5, 4, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 3, 2, 3, 2, - 2, 1, 1, 1, 1, 0, 2, 2, 2, 2, - 2, 6, 8, 6, 3, 8, 6, 8, 6, 2, - 2, 4, 5, 7, 5, 7, 9, 7, 9, 5, - 3, 3, 2, 2, 2, 3, 2, 2, 5, 5, - 1, 1, 1, 1, 0, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, - 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, + 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, + 1, 3, 2, 3, 2, 1, 1, 1, 0, 2, + 2, 2, 2, 2, 6, 8, 6, 3, 8, 6, + 8, 6, 2, 2, 4, 5, 7, 5, 7, 9, + 7, 9, 5, 3, 3, 2, 2, 2, 3, 2, + 2, 5, 5, 1, 1, 1, 1, 0, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, + 2, 2, 2, 5, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, - 1, 2, 2, 4, 6, 5, 7, 5, 7, 8, - 9, 9, 9, 3, 3, 1, 0, 1, 0, 3, - 1, 2, 3, 4, 3, 2, 2, 3, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, - 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, - 1, 1, 7, 2, 1, 2, 1, 1, 1 + 2, 2, 1, 1, 2, 2, 4, 6, 5, 7, + 5, 7, 8, 9, 9, 9, 3, 3, 1, 0, + 1, 0, 3, 1, 2, 3, 4, 3, 2, 2, + 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 2, 1, 1, 1, 1, 1, 2, 1, 1, + 1, 1, 1, 1, 1, 7, 2, 1, 2, 1, + 1, 1 }; @@ -4477,28 +4524,29 @@ namespace xsk { namespace gsc { namespace h2 { const short parser::yyrline_[] = { - 0, 254, 254, 255, 259, 261, 263, 265, 267, 269, - 274, 278, 283, 284, 285, 286, 287, 291, 296, 301, - 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, - 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, - 326, 327, 328, 329, 330, 331, 335, 336, 340, 341, - 345, 347, 352, 354, 356, 359, 363, 365, 370, 372, - 374, 379, 384, 386, 391, 396, 398, 403, 405, 410, - 415, 417, 422, 427, 432, 437, 442, 447, 449, 454, - 459, 461, 466, 471, 476, 481, 483, 488, 493, 498, - 503, 504, 505, 509, 510, 514, 516, 518, 520, 522, - 524, 526, 528, 530, 532, 534, 539, 541, 546, 548, - 553, 558, 560, 562, 564, 566, 568, 570, 572, 574, - 576, 578, 580, 582, 584, 586, 588, 590, 592, 597, - 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, - 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, - 618, 619, 620, 621, 622, 623, 624, 628, 633, 638, - 639, 642, 643, 647, 649, 651, 653, 655, 657, 662, - 664, 666, 668, 673, 678, 680, 683, 687, 690, 694, - 696, 701, 703, 708, 713, 715, 720, 725, 730, 731, - 732, 733, 734, 735, 736, 737, 738, 742, 747, 752, - 757, 762, 767, 772, 777, 782, 787, 792, 794, 799, - 804, 809, 814, 819, 821, 826, 828, 833, 838 + 0, 256, 256, 257, 261, 263, 265, 267, 269, 271, + 276, 280, 285, 286, 287, 288, 289, 293, 298, 303, + 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, + 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, + 328, 329, 330, 331, 332, 336, 337, 341, 343, 348, + 350, 355, 356, 360, 361, 365, 367, 369, 372, 376, + 378, 383, 385, 387, 392, 397, 399, 404, 409, 411, + 416, 418, 423, 428, 430, 435, 440, 445, 450, 455, + 460, 462, 467, 472, 474, 479, 484, 489, 494, 496, + 501, 506, 511, 516, 517, 518, 522, 523, 527, 529, + 531, 533, 535, 537, 539, 541, 543, 545, 547, 552, + 554, 559, 561, 566, 571, 573, 575, 577, 579, 581, + 583, 585, 587, 589, 591, 593, 595, 597, 599, 601, + 603, 605, 610, 611, 612, 613, 614, 615, 616, 617, + 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, + 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, + 641, 646, 651, 652, 655, 656, 660, 662, 664, 666, + 668, 670, 675, 677, 679, 681, 686, 691, 693, 696, + 700, 703, 707, 709, 714, 716, 721, 726, 728, 733, + 738, 743, 744, 745, 746, 747, 748, 749, 750, 751, + 755, 760, 765, 770, 775, 780, 785, 790, 795, 800, + 805, 807, 812, 817, 822, 827, 832, 834, 839, 841, + 846, 851 }; void @@ -4531,9 +4579,9 @@ namespace xsk { namespace gsc { namespace h2 { #line 13 "parser.ypp" } } } // xsk::gsc::h2 -#line 4535 "parser.cpp" +#line 4583 "parser.cpp" -#line 842 "parser.ypp" +#line 855 "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 aa8e2f1e..94ca79b8 100644 --- a/src/h2/xsk/parser.hpp +++ b/src/h2/xsk/parser.hpp @@ -535,6 +535,7 @@ namespace xsk { namespace gsc { namespace h2 { char dummy39[sizeof (ast::program::ptr)]; // stmt + // stmt_or_dev char dummy40[sizeof (ast::stmt)]; // stmt_assign @@ -558,64 +559,67 @@ namespace xsk { namespace gsc { namespace h2 { // stmt_default char dummy47[sizeof (ast::stmt_default::ptr)]; + // stmt_dev + char dummy48[sizeof (ast::stmt_dev::ptr)]; + // stmt_dowhile - char dummy48[sizeof (ast::stmt_dowhile::ptr)]; + char dummy49[sizeof (ast::stmt_dowhile::ptr)]; // stmt_endon - char dummy49[sizeof (ast::stmt_endon::ptr)]; + char dummy50[sizeof (ast::stmt_endon::ptr)]; // stmt_expr - char dummy50[sizeof (ast::stmt_expr::ptr)]; + char dummy51[sizeof (ast::stmt_expr::ptr)]; // stmt_for - char dummy51[sizeof (ast::stmt_for::ptr)]; + char dummy52[sizeof (ast::stmt_for::ptr)]; // stmt_foreach - char dummy52[sizeof (ast::stmt_foreach::ptr)]; + char dummy53[sizeof (ast::stmt_foreach::ptr)]; // stmt_if - char dummy53[sizeof (ast::stmt_if::ptr)]; + char dummy54[sizeof (ast::stmt_if::ptr)]; // stmt_ifelse - char dummy54[sizeof (ast::stmt_ifelse::ptr)]; + char dummy55[sizeof (ast::stmt_ifelse::ptr)]; - // stmt_dev - // stmt_block // stmt_list - char dummy55[sizeof (ast::stmt_list::ptr)]; + // stmt_or_dev_list + // stmt_block + char dummy56[sizeof (ast::stmt_list::ptr)]; // stmt_notify - char dummy56[sizeof (ast::stmt_notify::ptr)]; + char dummy57[sizeof (ast::stmt_notify::ptr)]; // stmt_prof_begin - char dummy57[sizeof (ast::stmt_prof_begin::ptr)]; + char dummy58[sizeof (ast::stmt_prof_begin::ptr)]; // stmt_prof_end - char dummy58[sizeof (ast::stmt_prof_end::ptr)]; + char dummy59[sizeof (ast::stmt_prof_end::ptr)]; // stmt_return - char dummy59[sizeof (ast::stmt_return::ptr)]; + char dummy60[sizeof (ast::stmt_return::ptr)]; // stmt_switch - char dummy60[sizeof (ast::stmt_switch::ptr)]; + char dummy61[sizeof (ast::stmt_switch::ptr)]; // stmt_wait - char dummy61[sizeof (ast::stmt_wait::ptr)]; + char dummy62[sizeof (ast::stmt_wait::ptr)]; // stmt_waitframe - char dummy62[sizeof (ast::stmt_waitframe::ptr)]; + char dummy63[sizeof (ast::stmt_waitframe::ptr)]; // stmt_waittill - char dummy63[sizeof (ast::stmt_waittill::ptr)]; + char dummy64[sizeof (ast::stmt_waittill::ptr)]; // stmt_waittillframeend - char dummy64[sizeof (ast::stmt_waittillframeend::ptr)]; + char dummy65[sizeof (ast::stmt_waittillframeend::ptr)]; // stmt_waittillmatch - char dummy65[sizeof (ast::stmt_waittillmatch::ptr)]; + char dummy66[sizeof (ast::stmt_waittillmatch::ptr)]; // stmt_while - char dummy66[sizeof (ast::stmt_while::ptr)]; + char dummy67[sizeof (ast::stmt_while::ptr)]; // "field" // "path" @@ -625,7 +629,7 @@ namespace xsk { namespace gsc { namespace h2 { // "color" // "float" // "integer" - char dummy67[sizeof (std::string)]; + char dummy68[sizeof (std::string)]; }; /// The size of the largest semantic type. @@ -930,77 +934,79 @@ namespace xsk { namespace gsc { namespace h2 { S_decl_constant = 121, // decl_constant S_decl_thread = 122, // decl_thread S_stmt = 123, // stmt - S_stmt_dev = 124, // stmt_dev - S_stmt_block = 125, // stmt_block - S_stmt_list = 126, // stmt_list - S_stmt_expr = 127, // stmt_expr - S_stmt_call = 128, // stmt_call - S_stmt_assign = 129, // stmt_assign - S_stmt_endon = 130, // stmt_endon - S_stmt_notify = 131, // stmt_notify - S_stmt_wait = 132, // stmt_wait - S_stmt_waittill = 133, // stmt_waittill - S_stmt_waittillmatch = 134, // stmt_waittillmatch - S_stmt_waittillframeend = 135, // stmt_waittillframeend - S_stmt_waitframe = 136, // stmt_waitframe - S_stmt_if = 137, // stmt_if - S_stmt_ifelse = 138, // stmt_ifelse - S_stmt_while = 139, // stmt_while - S_stmt_dowhile = 140, // stmt_dowhile - S_stmt_for = 141, // stmt_for - S_stmt_foreach = 142, // stmt_foreach - S_stmt_switch = 143, // stmt_switch - S_stmt_case = 144, // stmt_case - S_stmt_default = 145, // stmt_default - S_stmt_break = 146, // stmt_break - S_stmt_continue = 147, // stmt_continue - S_stmt_return = 148, // stmt_return - S_stmt_breakpoint = 149, // stmt_breakpoint - S_stmt_prof_begin = 150, // stmt_prof_begin - S_stmt_prof_end = 151, // stmt_prof_end - S_expr = 152, // expr - S_expr_or_empty = 153, // expr_or_empty - S_expr_assign = 154, // expr_assign - S_expr_increment = 155, // expr_increment - S_expr_decrement = 156, // expr_decrement - S_expr_ternary = 157, // expr_ternary - S_expr_binary = 158, // expr_binary - S_expr_primitive = 159, // expr_primitive - S_expr_complement = 160, // expr_complement - S_expr_not = 161, // expr_not - S_expr_call = 162, // expr_call - S_expr_method = 163, // expr_method - S_expr_function = 164, // expr_function - S_expr_pointer = 165, // expr_pointer - S_expr_add_array = 166, // expr_add_array - S_expr_parameters = 167, // expr_parameters - S_expr_arguments = 168, // expr_arguments - S_expr_arguments_no_empty = 169, // expr_arguments_no_empty - S_expr_reference = 170, // expr_reference - S_expr_array = 171, // expr_array - S_expr_field = 172, // expr_field - S_expr_size = 173, // expr_size - S_expr_paren = 174, // expr_paren - S_expr_object = 175, // expr_object - S_expr_thisthread = 176, // expr_thisthread - S_expr_empty_array = 177, // expr_empty_array - S_expr_undefined = 178, // expr_undefined - S_expr_game = 179, // expr_game - S_expr_self = 180, // expr_self - S_expr_anim = 181, // expr_anim - S_expr_level = 182, // expr_level - S_expr_animation = 183, // expr_animation - S_expr_animtree = 184, // expr_animtree - S_expr_identifier = 185, // expr_identifier - S_expr_path = 186, // expr_path - S_expr_istring = 187, // expr_istring - S_expr_string = 188, // expr_string - S_expr_color = 189, // expr_color - S_expr_vector = 190, // expr_vector - S_expr_float = 191, // expr_float - S_expr_integer = 192, // expr_integer - S_expr_false = 193, // expr_false - S_expr_true = 194 // expr_true + S_stmt_or_dev = 124, // stmt_or_dev + S_stmt_list = 125, // stmt_list + S_stmt_or_dev_list = 126, // stmt_or_dev_list + S_stmt_dev = 127, // stmt_dev + S_stmt_block = 128, // stmt_block + S_stmt_expr = 129, // stmt_expr + S_stmt_call = 130, // stmt_call + S_stmt_assign = 131, // stmt_assign + S_stmt_endon = 132, // stmt_endon + S_stmt_notify = 133, // stmt_notify + S_stmt_wait = 134, // stmt_wait + S_stmt_waittill = 135, // stmt_waittill + S_stmt_waittillmatch = 136, // stmt_waittillmatch + S_stmt_waittillframeend = 137, // stmt_waittillframeend + S_stmt_waitframe = 138, // stmt_waitframe + S_stmt_if = 139, // stmt_if + S_stmt_ifelse = 140, // stmt_ifelse + S_stmt_while = 141, // stmt_while + S_stmt_dowhile = 142, // stmt_dowhile + S_stmt_for = 143, // stmt_for + S_stmt_foreach = 144, // stmt_foreach + S_stmt_switch = 145, // stmt_switch + S_stmt_case = 146, // stmt_case + S_stmt_default = 147, // stmt_default + S_stmt_break = 148, // stmt_break + S_stmt_continue = 149, // stmt_continue + S_stmt_return = 150, // stmt_return + S_stmt_breakpoint = 151, // stmt_breakpoint + S_stmt_prof_begin = 152, // stmt_prof_begin + S_stmt_prof_end = 153, // stmt_prof_end + S_expr = 154, // expr + S_expr_or_empty = 155, // expr_or_empty + S_expr_assign = 156, // expr_assign + S_expr_increment = 157, // expr_increment + S_expr_decrement = 158, // expr_decrement + S_expr_ternary = 159, // expr_ternary + S_expr_binary = 160, // expr_binary + S_expr_primitive = 161, // expr_primitive + S_expr_complement = 162, // expr_complement + S_expr_not = 163, // expr_not + S_expr_call = 164, // expr_call + S_expr_method = 165, // expr_method + S_expr_function = 166, // expr_function + S_expr_pointer = 167, // expr_pointer + S_expr_add_array = 168, // expr_add_array + S_expr_parameters = 169, // expr_parameters + S_expr_arguments = 170, // expr_arguments + S_expr_arguments_no_empty = 171, // expr_arguments_no_empty + S_expr_reference = 172, // expr_reference + S_expr_array = 173, // expr_array + S_expr_field = 174, // expr_field + S_expr_size = 175, // expr_size + S_expr_paren = 176, // expr_paren + S_expr_object = 177, // expr_object + S_expr_thisthread = 178, // expr_thisthread + S_expr_empty_array = 179, // expr_empty_array + S_expr_undefined = 180, // expr_undefined + S_expr_game = 181, // expr_game + S_expr_self = 182, // expr_self + S_expr_anim = 183, // expr_anim + S_expr_level = 184, // expr_level + S_expr_animation = 185, // expr_animation + S_expr_animtree = 186, // expr_animtree + S_expr_identifier = 187, // expr_identifier + S_expr_path = 188, // expr_path + S_expr_istring = 189, // expr_istring + S_expr_string = 190, // expr_string + S_expr_color = 191, // expr_color + S_expr_vector = 192, // expr_vector + S_expr_float = 193, // expr_float + S_expr_integer = 194, // expr_integer + S_expr_false = 195, // expr_false + S_expr_true = 196 // expr_true }; }; @@ -1204,6 +1210,7 @@ namespace xsk { namespace gsc { namespace h2 { break; case symbol_kind::S_stmt: // stmt + case symbol_kind::S_stmt_or_dev: // stmt_or_dev value.move< ast::stmt > (std::move (that.value)); break; @@ -1235,6 +1242,10 @@ namespace xsk { namespace gsc { namespace h2 { value.move< ast::stmt_default::ptr > (std::move (that.value)); break; + case symbol_kind::S_stmt_dev: // stmt_dev + value.move< ast::stmt_dev::ptr > (std::move (that.value)); + break; + case symbol_kind::S_stmt_dowhile: // stmt_dowhile value.move< ast::stmt_dowhile::ptr > (std::move (that.value)); break; @@ -1263,9 +1274,9 @@ namespace xsk { namespace gsc { namespace h2 { value.move< ast::stmt_ifelse::ptr > (std::move (that.value)); break; - case symbol_kind::S_stmt_dev: // stmt_dev - case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list + case symbol_kind::S_stmt_or_dev_list: // stmt_or_dev_list + case symbol_kind::S_stmt_block: // stmt_block value.move< ast::stmt_list::ptr > (std::move (that.value)); break; @@ -2005,6 +2016,20 @@ namespace xsk { namespace gsc { namespace h2 { {} #endif +#if 201103L <= YY_CPLUSPLUS + basic_symbol (typename Base::kind_type t, ast::stmt_dev::ptr&& v, location_type&& l) + : Base (t) + , value (std::move (v)) + , location (std::move (l)) + {} +#else + basic_symbol (typename Base::kind_type t, const ast::stmt_dev::ptr& v, const location_type& l) + : Base (t) + , value (v) + , location (l) + {} +#endif + #if 201103L <= YY_CPLUSPLUS basic_symbol (typename Base::kind_type t, ast::stmt_dowhile::ptr&& v, location_type&& l) : Base (t) @@ -2474,6 +2499,7 @@ switch (yykind) break; case symbol_kind::S_stmt: // stmt + case symbol_kind::S_stmt_or_dev: // stmt_or_dev value.template destroy< ast::stmt > (); break; @@ -2505,6 +2531,10 @@ switch (yykind) value.template destroy< ast::stmt_default::ptr > (); break; + case symbol_kind::S_stmt_dev: // stmt_dev + value.template destroy< ast::stmt_dev::ptr > (); + break; + case symbol_kind::S_stmt_dowhile: // stmt_dowhile value.template destroy< ast::stmt_dowhile::ptr > (); break; @@ -2533,9 +2563,9 @@ switch (yykind) value.template destroy< ast::stmt_ifelse::ptr > (); break; - case symbol_kind::S_stmt_dev: // stmt_dev - case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list + case symbol_kind::S_stmt_or_dev_list: // stmt_or_dev_list + case symbol_kind::S_stmt_block: // stmt_block value.template destroy< ast::stmt_list::ptr > (); break; @@ -4804,8 +4834,8 @@ switch (yykind) /// Constants. enum { - yylast_ = 2291, ///< Last index in yytable_. - yynnts_ = 81, ///< Number of nonterminal symbols. + yylast_ = 2285, ///< Last index in yytable_. + yynnts_ = 83, ///< Number of nonterminal symbols. yyfinal_ = 21 ///< Termination state number. }; @@ -4999,6 +5029,7 @@ switch (yykind) break; case symbol_kind::S_stmt: // stmt + case symbol_kind::S_stmt_or_dev: // stmt_or_dev value.copy< ast::stmt > (YY_MOVE (that.value)); break; @@ -5030,6 +5061,10 @@ switch (yykind) value.copy< ast::stmt_default::ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_stmt_dev: // stmt_dev + value.copy< ast::stmt_dev::ptr > (YY_MOVE (that.value)); + break; + case symbol_kind::S_stmt_dowhile: // stmt_dowhile value.copy< ast::stmt_dowhile::ptr > (YY_MOVE (that.value)); break; @@ -5058,9 +5093,9 @@ switch (yykind) value.copy< ast::stmt_ifelse::ptr > (YY_MOVE (that.value)); break; - case symbol_kind::S_stmt_dev: // stmt_dev - case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list + case symbol_kind::S_stmt_or_dev_list: // stmt_or_dev_list + case symbol_kind::S_stmt_block: // stmt_block value.copy< ast::stmt_list::ptr > (YY_MOVE (that.value)); break; @@ -5315,6 +5350,7 @@ switch (yykind) break; case symbol_kind::S_stmt: // stmt + case symbol_kind::S_stmt_or_dev: // stmt_or_dev value.move< ast::stmt > (YY_MOVE (s.value)); break; @@ -5346,6 +5382,10 @@ switch (yykind) value.move< ast::stmt_default::ptr > (YY_MOVE (s.value)); break; + case symbol_kind::S_stmt_dev: // stmt_dev + value.move< ast::stmt_dev::ptr > (YY_MOVE (s.value)); + break; + case symbol_kind::S_stmt_dowhile: // stmt_dowhile value.move< ast::stmt_dowhile::ptr > (YY_MOVE (s.value)); break; @@ -5374,9 +5414,9 @@ switch (yykind) value.move< ast::stmt_ifelse::ptr > (YY_MOVE (s.value)); break; - case symbol_kind::S_stmt_dev: // stmt_dev - case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list + case symbol_kind::S_stmt_or_dev_list: // stmt_or_dev_list + case symbol_kind::S_stmt_block: // stmt_block value.move< ast::stmt_list::ptr > (YY_MOVE (s.value)); break; @@ -5498,7 +5538,7 @@ switch (yykind) #line 13 "parser.ypp" } } } // xsk::gsc::h2 -#line 5502 "parser.hpp" +#line 5542 "parser.hpp" diff --git a/src/h2/xsk/resolver.cpp b/src/h2/xsk/resolver.cpp index c7fd0540..2f696b86 100644 --- a/src/h2/xsk/resolver.cpp +++ b/src/h2/xsk/resolver.cpp @@ -46,7 +46,7 @@ auto resolver::opcode_name(std::uint8_t id) -> std::string auto resolver::function_id(const std::string& name) -> std::uint16_t { - if(name.starts_with("_func_")) + if (name.starts_with("_func_")) { return std::stoul(name.substr(6), nullptr, 16); } @@ -75,7 +75,7 @@ auto resolver::function_name(std::uint16_t id) -> std::string auto resolver::method_id(const std::string& name) -> std::uint16_t { - if(name.starts_with("_meth_")) + if (name.starts_with("_meth_")) { return std::stoul(name.substr(6), nullptr, 16); } @@ -104,7 +104,7 @@ auto resolver::method_name(std::uint16_t id) -> std::string auto resolver::file_id(const std::string& name) -> std::uint16_t { - if(name.starts_with("_id_")) + if (name.starts_with("_id_")) { return std::stoul(name.substr(4), nullptr, 16); } @@ -133,7 +133,7 @@ auto resolver::file_name(std::uint16_t id) -> std::string auto resolver::token_id(const std::string& name) -> std::uint16_t { - if(name.starts_with("_id_")) + if (name.starts_with("_id_")) { return std::stoul(name.substr(4), nullptr, 16); } @@ -162,7 +162,7 @@ auto resolver::token_name(std::uint16_t id) -> std::string auto resolver::find_function(const std::string& name) -> bool { - if(name.starts_with("_func_")) return true; + if (name.starts_with("_func_")) return true; const auto itr = function_map_rev.find(name); @@ -176,7 +176,7 @@ auto resolver::find_function(const std::string& name) -> bool auto resolver::find_method(const std::string& name) -> bool { - if(name.starts_with("_meth_")) return true; + if (name.starts_with("_meth_")) return true; const auto itr = method_map_rev.find(name); @@ -190,7 +190,7 @@ auto resolver::find_method(const std::string& name) -> bool auto resolver::make_token(std::string_view str) -> std::string { - if(str.starts_with("_id_") || str.starts_with("_func_") || str.starts_with("_meth_")) + if (str.starts_with("_id_") || str.starts_with("_func_") || str.starts_with("_meth_")) { return std::string(str); } @@ -213,7 +213,7 @@ auto resolver::file_data(const std::string& name) -> std::tuplefirst ,reinterpret_cast(itr->second.data()), itr->second.size() }; } @@ -222,7 +222,7 @@ auto resolver::file_data(const std::string& name) -> std::tuplefirst, reinterpret_cast(res.first->second.data()), res.first->second.size() }; } @@ -2711,7 +2711,7 @@ struct __init__ __init__() { static bool init = false; - if(init) return; + if (init) return; init = true; opcode_map.reserve(opcode_list.size()); @@ -2725,31 +2725,31 @@ struct __init__ token_map.reserve(token_list.size()); token_map_rev.reserve(token_list.size()); - for(const auto& entry : opcode_list) + for (const auto& entry : opcode_list) { opcode_map.insert({ entry.first, entry.second }); opcode_map_rev.insert({ entry.second, entry.first }); } - for(const auto& entry : function_list) + for (const auto& entry : function_list) { function_map.insert({ entry.first, entry.second }); function_map_rev.insert({ entry.second, entry.first }); } - for(const auto& entry : method_list) + for (const auto& entry : method_list) { method_map.insert({ entry.first, entry.second }); method_map_rev.insert({ entry.second, entry.first }); } - for(const auto& entry : file_list) + for (const auto& entry : file_list) { file_map.insert({ entry.first, entry.second }); file_map_rev.insert({ entry.second, entry.first }); } - for(const auto& entry : token_list) + for (const auto& entry : token_list) { token_map.insert({ entry.first, entry.second }); token_map_rev.insert({ entry.second, entry.first }); diff --git a/src/iw5/xsk/assembler.cpp b/src/iw5/xsk/assembler.cpp index 6d3a23e1..6add84b9 100644 --- a/src/iw5/xsk/assembler.cpp +++ b/src/iw5/xsk/assembler.cpp @@ -570,4 +570,4 @@ auto assembler::resolve_label(const std::string& name) -> std::int32_t throw asm_error("Couldn't resolve label address of '" + name + "'!"); } -} // namespace xsk::gsc::iw5 +} // namespace xsk::gsc::iw5 diff --git a/src/iw5/xsk/compiler.cpp b/src/iw5/xsk/compiler.cpp index 83b717ae..e73fe4f1 100644 --- a/src/iw5/xsk/compiler.cpp +++ b/src/iw5/xsk/compiler.cpp @@ -152,7 +152,7 @@ void compiler::emit_declaration(const ast::decl& decl) void compiler::emit_decl_usingtree(const ast::decl_usingtree::ptr& animtree) { - if(developer_thread_) + if (developer_thread_) throw comp_error(animtree->loc(), "cannot put #using_animtree inside /# ... #/ comment"); animtrees_.push_back({ animtree->name->value, false }); @@ -195,6 +195,9 @@ void compiler::emit_stmt(const ast::stmt& stmt, const block::ptr& blk, bool last case ast::kind::stmt_list: emit_stmt_list(stmt.as_list, blk, last); break; + case ast::kind::stmt_dev: + emit_stmt_dev(stmt.as_dev, blk, last); + break; case ast::kind::stmt_expr: emit_stmt_expr(stmt.as_expr, blk); break; @@ -281,6 +284,11 @@ void compiler::emit_stmt_list(const ast::stmt_list::ptr& stmt, const block::ptr& } } +void compiler::emit_stmt_dev(const ast::stmt_dev::ptr& stmt, const block::ptr& blk, bool last) +{ + emit_stmt_list(stmt->list, blk, last); +} + void compiler::emit_stmt_expr(const ast::stmt_expr::ptr& stmt, const block::ptr& blk) { switch (stmt->expr.kind()) @@ -572,6 +580,8 @@ void compiler::emit_stmt_dowhile(const ast::stmt_dowhile::ptr& stmt, const block emit_stmt(stmt->stmt, stmt->blk, false); + insert_label(continue_loc); + bool const_cond = is_constant_condition(stmt->test); if (!const_cond) @@ -580,7 +590,6 @@ void compiler::emit_stmt_dowhile(const ast::stmt_dowhile::ptr& stmt, const block emit_opcode(opcode::OP_JumpOnFalse, break_loc); } - insert_label(continue_loc); emit_opcode(opcode::OP_jumpback, begin_loc); insert_label(break_loc); @@ -1001,9 +1010,6 @@ void compiler::emit_expr(const ast::expr& expr, const block::ptr& blk) case ast::kind::expr_string: emit_expr_string(expr.as_string); break; - case ast::kind::expr_color: - emit_expr_color(expr.as_color); - break; case ast::kind::expr_vector: emit_expr_vector(expr.as_vector, blk); break; @@ -1953,30 +1959,6 @@ void compiler::emit_expr_string(const ast::expr_string::ptr& expr) emit_opcode(opcode::OP_GetString, expr->value); } -void compiler::emit_expr_color(const ast::expr_color::ptr& expr) -{ - std::vector data; - std::string x, y, z; - - if (expr->value.size() == 3) - { - x = "0x" + expr->value.substr(0, 1) + expr->value.substr(0, 1); - y = "0x" + expr->value.substr(1, 1) + expr->value.substr(1, 1); - z = "0x" + expr->value.substr(2, 1) + expr->value.substr(2, 1); - } - else - { - x = "0x" + expr->value.substr(0, 2); - y = "0x" + expr->value.substr(2, 2); - z = "0x" + expr->value.substr(4, 2); - } - - data.push_back(utils::string::hex_to_dec(x.data())); - data.push_back(utils::string::hex_to_dec(y.data())); - data.push_back(utils::string::hex_to_dec(z.data())); - emit_opcode(opcode::OP_GetVector, data); -} - void compiler::emit_expr_float(const ast::expr_float::ptr& expr) { emit_opcode(opcode::OP_GetFloat, expr->value); @@ -2101,6 +2083,9 @@ void compiler::process_stmt(const ast::stmt& stmt, const block::ptr& blk) case ast::kind::stmt_list: process_stmt_list(stmt.as_list, blk); break; + case ast::kind::stmt_dev: + process_stmt_dev(stmt.as_dev, blk); + break; case ast::kind::stmt_expr: process_stmt_expr(stmt.as_expr, blk); break; @@ -2165,6 +2150,11 @@ void compiler::process_stmt_list(const ast::stmt_list::ptr& stmt, const block::p } } +void compiler::process_stmt_dev(const ast::stmt_dev::ptr& stmt, const block::ptr& blk) +{ + process_stmt_list(stmt->list, blk); +} + void compiler::process_stmt_expr(const ast::stmt_expr::ptr& stmt, const block::ptr& blk) { switch (stmt->expr.kind()) diff --git a/src/iw5/xsk/compiler.hpp b/src/iw5/xsk/compiler.hpp index bec2244f..67f833f8 100644 --- a/src/iw5/xsk/compiler.hpp +++ b/src/iw5/xsk/compiler.hpp @@ -48,6 +48,7 @@ private: void emit_decl_thread(const ast::decl_thread::ptr& thread); void emit_stmt(const ast::stmt& stmt, const block::ptr& blk, bool last); void emit_stmt_list(const ast::stmt_list::ptr& stmt, const block::ptr& blk, bool last); + void emit_stmt_dev(const ast::stmt_dev::ptr& stmt, const block::ptr& blk, bool last); void emit_stmt_expr(const ast::stmt_expr::ptr& stmt, const block::ptr& blk); void emit_stmt_call(const ast::stmt_call::ptr& stmt, const block::ptr& blk); void emit_stmt_assign(const ast::stmt_assign::ptr& stmt, const block::ptr& blk); @@ -109,7 +110,6 @@ private: void emit_expr_animtree(const ast::expr_animtree::ptr& expr); void emit_expr_istring(const ast::expr_istring::ptr& expr); void emit_expr_string(const ast::expr_string::ptr& expr); - void emit_expr_color(const ast::expr_color::ptr& expr); void emit_expr_float(const ast::expr_float::ptr& expr); void emit_expr_integer(const ast::expr_integer::ptr& expr); void emit_expr_false(const ast::expr_false::ptr& expr); @@ -122,6 +122,7 @@ private: void process_thread(const ast::decl_thread::ptr& decl, const block::ptr& blk); void process_stmt(const ast::stmt& stmt, const block::ptr& blk); void process_stmt_list(const ast::stmt_list::ptr& stmt, const block::ptr& blk); + void process_stmt_dev(const ast::stmt_dev::ptr& stmt, const block::ptr& blk); void process_stmt_expr(const ast::stmt_expr::ptr& stmt, const block::ptr& blk); void process_stmt_assign(const ast::stmt_assign::ptr& stmt, const block::ptr& blk); void process_stmt_waittill(const ast::stmt_waittill::ptr& stmt, const block::ptr& blk); diff --git a/src/iw5/xsk/decompiler.cpp b/src/iw5/xsk/decompiler.cpp index c7112a43..0030c212 100644 --- a/src/iw5/xsk/decompiler.cpp +++ b/src/iw5/xsk/decompiler.cpp @@ -75,7 +75,7 @@ void decompiler::decompile_function(const function::ptr& func) // hotfix empty else block at func end if (stmt->list.size() > 0 && stmt->list.back() == ast::kind::asm_jump) { - if(stmt->list.back().as_jump->value == blk.loc_end) + if (stmt->list.back().as_jump->value == blk.loc_end) stmt->list.pop_back(); } @@ -255,7 +255,7 @@ void decompiler::decompile_instruction(const instruction::ptr& inst) auto name = std::make_unique(loc, inst->data[1]); auto node = std::make_unique(loc, std::move(path), std::move(name)); stack_.push(std::move(node)); - }; + } break; case opcode::OP_CreateLocalVariable: { @@ -1651,7 +1651,7 @@ void decompiler::decompile_instruction(const instruction::ptr& inst) { auto expr = std::make_unique(loc, inst->data[0]); func_->stmt->list.push_back(ast::stmt(std::move(expr))); - if(stack_.size() != 0) tern_labels_.push_back(inst->data[0]); + if (stack_.size() != 0) tern_labels_.push_back(inst->data[0]); } break; case opcode::OP_jumpback: @@ -1850,7 +1850,7 @@ void decompiler::decompile_ifelses(const ast::stmt_list::ptr& stmt) { auto& entry = stmt->list.at(i); - if(entry == ast::kind::asm_jump_cond) + if (entry == ast::kind::asm_jump_cond) { auto j = (entry.as_cond->value == blocks_.back().loc_end) ? (stmt->list.size() - 1) : (find_location_index(stmt, entry.as_cond->value) - 1); auto last_loc = blocks_.back().loc_end; @@ -2129,7 +2129,7 @@ void decompiler::decompile_loop(const ast::stmt_list::ptr& block, std::uint32_t { auto ref = block->list.at(start).loc().label(); - if(!find_location_reference(block, 0, start, ref)) + if (!find_location_reference(block, 0, start, ref)) { decompile_foreach(block, start, end); return; @@ -2138,29 +2138,29 @@ void decompiler::decompile_loop(const ast::stmt_list::ptr& block, std::uint32_t } } - if(start > 0) // while at func start + if (start > 0) // while at func start { auto index = 1; - while(block->list.at(start - index) == ast::kind::asm_create) + while (block->list.at(start - index) == ast::kind::asm_create) { - if(start - index > 0) + if (start - index > 0) index++; else break; } - if(block->list.at(start - index) == ast::kind::stmt_assign) + if (block->list.at(start - index) == ast::kind::stmt_assign) { auto ref = block->list.at(end).loc().label(); auto ref2 = block->list.at(start).loc().label(); - if(find_location_reference(block, start, end, ref)) + if (find_location_reference(block, start, end, ref)) { // continue is at jumpback, not post-expr decompile_while(block, start, end); return; } - else if(find_location_reference(block, 0, start, ref2)) + else if (find_location_reference(block, 0, start, ref2)) { // begin is at condition, not pre-expr decompile_while(block, start, end); @@ -2400,7 +2400,7 @@ void decompiler::decompile_switch(const ast::stmt_list::ptr& stmt, std::uint32_t auto list = std::make_unique(loc); list->is_case = true; auto def_stmt = ast::stmt(std::make_unique(loc_pos, std::move(list))); - while(stmt->list.at(loc_idx) == ast::kind::stmt_case) + while (stmt->list.at(loc_idx) == ast::kind::stmt_case) loc_idx++; stmt->list.insert(stmt->list.begin() + loc_idx, std::move(def_stmt)); idx += 2; @@ -2501,7 +2501,7 @@ auto decompiler::find_location_index(const ast::stmt_list::ptr& stmt, const std: for (auto& entry : stmt->list) { - if(entry.loc().label() == location) + if (entry.loc().label() == location) return index; index++; @@ -2767,7 +2767,7 @@ void decompiler::process_stmt_ifelse(const ast::stmt_ifelse::ptr& stmt, const bl { abort = stmt->blk_if->abort; - if(abort == abort_t::abort_none) + if (abort == abort_t::abort_none) childs.push_back(stmt->blk_if.get()); } diff --git a/src/iw5/xsk/lexer.cpp b/src/iw5/xsk/lexer.cpp index 51bde4b0..5a55c5e9 100644 --- a/src/iw5/xsk/lexer.cpp +++ b/src/iw5/xsk/lexer.cpp @@ -72,12 +72,12 @@ buffer::buffer() : length(0) buffer::~buffer() { - if(data) std::free(data); + if (data) std::free(data); } bool buffer::push(char c) { - if(length >= max_buf_size) + if (length >= max_buf_size) return false; data[length++] = c; @@ -89,7 +89,7 @@ reader::reader() : state(reader::end), buffer_pos(0), bytes_remaining(0), void reader::init(const char* data, size_t size) { - if(data && size) + if (data && size) { state = reader::ok; buffer_pos = data; @@ -111,7 +111,7 @@ void reader::advance() { ++buffer_pos; - if(bytes_remaining-- == 1) + if (bytes_remaining-- == 1) { state = reader::end; bytes_remaining = 0; @@ -561,7 +561,7 @@ lex_name: advance(); } - if(state_ == state::field) + if (state_ == state::field) { if (path) throw comp_error(loc_, "invalid field token '\\'"); diff --git a/src/iw5/xsk/parser.cpp b/src/iw5/xsk/parser.cpp index 7a2dfdcf..c8d0f774 100644 --- a/src/iw5/xsk/parser.cpp +++ b/src/iw5/xsk/parser.cpp @@ -382,6 +382,7 @@ namespace xsk { namespace gsc { namespace iw5 { break; case symbol_kind::S_stmt: // stmt + case symbol_kind::S_stmt_or_dev: // stmt_or_dev value.YY_MOVE_OR_COPY< ast::stmt > (YY_MOVE (that.value)); break; @@ -413,6 +414,10 @@ namespace xsk { namespace gsc { namespace iw5 { value.YY_MOVE_OR_COPY< ast::stmt_default::ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_stmt_dev: // stmt_dev + value.YY_MOVE_OR_COPY< ast::stmt_dev::ptr > (YY_MOVE (that.value)); + break; + case symbol_kind::S_stmt_dowhile: // stmt_dowhile value.YY_MOVE_OR_COPY< ast::stmt_dowhile::ptr > (YY_MOVE (that.value)); break; @@ -441,9 +446,9 @@ namespace xsk { namespace gsc { namespace iw5 { value.YY_MOVE_OR_COPY< ast::stmt_ifelse::ptr > (YY_MOVE (that.value)); break; - case symbol_kind::S_stmt_dev: // stmt_dev - case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list + case symbol_kind::S_stmt_or_dev_list: // stmt_or_dev_list + case symbol_kind::S_stmt_block: // stmt_block value.YY_MOVE_OR_COPY< ast::stmt_list::ptr > (YY_MOVE (that.value)); break; @@ -680,6 +685,7 @@ namespace xsk { namespace gsc { namespace iw5 { break; case symbol_kind::S_stmt: // stmt + case symbol_kind::S_stmt_or_dev: // stmt_or_dev value.move< ast::stmt > (YY_MOVE (that.value)); break; @@ -711,6 +717,10 @@ namespace xsk { namespace gsc { namespace iw5 { value.move< ast::stmt_default::ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_stmt_dev: // stmt_dev + value.move< ast::stmt_dev::ptr > (YY_MOVE (that.value)); + break; + case symbol_kind::S_stmt_dowhile: // stmt_dowhile value.move< ast::stmt_dowhile::ptr > (YY_MOVE (that.value)); break; @@ -739,9 +749,9 @@ namespace xsk { namespace gsc { namespace iw5 { value.move< ast::stmt_ifelse::ptr > (YY_MOVE (that.value)); break; - case symbol_kind::S_stmt_dev: // stmt_dev - case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list + case symbol_kind::S_stmt_or_dev_list: // stmt_or_dev_list + case symbol_kind::S_stmt_block: // stmt_block value.move< ast::stmt_list::ptr > (YY_MOVE (that.value)); break; @@ -978,6 +988,7 @@ namespace xsk { namespace gsc { namespace iw5 { break; case symbol_kind::S_stmt: // stmt + case symbol_kind::S_stmt_or_dev: // stmt_or_dev value.copy< ast::stmt > (that.value); break; @@ -1009,6 +1020,10 @@ namespace xsk { namespace gsc { namespace iw5 { value.copy< ast::stmt_default::ptr > (that.value); break; + case symbol_kind::S_stmt_dev: // stmt_dev + value.copy< ast::stmt_dev::ptr > (that.value); + break; + case symbol_kind::S_stmt_dowhile: // stmt_dowhile value.copy< ast::stmt_dowhile::ptr > (that.value); break; @@ -1037,9 +1052,9 @@ namespace xsk { namespace gsc { namespace iw5 { value.copy< ast::stmt_ifelse::ptr > (that.value); break; - case symbol_kind::S_stmt_dev: // stmt_dev - case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list + case symbol_kind::S_stmt_or_dev_list: // stmt_or_dev_list + case symbol_kind::S_stmt_block: // stmt_block value.copy< ast::stmt_list::ptr > (that.value); break; @@ -1275,6 +1290,7 @@ namespace xsk { namespace gsc { namespace iw5 { break; case symbol_kind::S_stmt: // stmt + case symbol_kind::S_stmt_or_dev: // stmt_or_dev value.move< ast::stmt > (that.value); break; @@ -1306,6 +1322,10 @@ namespace xsk { namespace gsc { namespace iw5 { value.move< ast::stmt_default::ptr > (that.value); break; + case symbol_kind::S_stmt_dev: // stmt_dev + value.move< ast::stmt_dev::ptr > (that.value); + break; + case symbol_kind::S_stmt_dowhile: // stmt_dowhile value.move< ast::stmt_dowhile::ptr > (that.value); break; @@ -1334,9 +1354,9 @@ namespace xsk { namespace gsc { namespace iw5 { value.move< ast::stmt_ifelse::ptr > (that.value); break; - case symbol_kind::S_stmt_dev: // stmt_dev - case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list + case symbol_kind::S_stmt_or_dev_list: // stmt_or_dev_list + case symbol_kind::S_stmt_block: // stmt_block value.move< ast::stmt_list::ptr > (that.value); break; @@ -1827,6 +1847,7 @@ namespace xsk { namespace gsc { namespace iw5 { break; case symbol_kind::S_stmt: // stmt + case symbol_kind::S_stmt_or_dev: // stmt_or_dev yylhs.value.emplace< ast::stmt > (); break; @@ -1858,6 +1879,10 @@ namespace xsk { namespace gsc { namespace iw5 { yylhs.value.emplace< ast::stmt_default::ptr > (); break; + case symbol_kind::S_stmt_dev: // stmt_dev + yylhs.value.emplace< ast::stmt_dev::ptr > (); + break; + case symbol_kind::S_stmt_dowhile: // stmt_dowhile yylhs.value.emplace< ast::stmt_dowhile::ptr > (); break; @@ -1886,9 +1911,9 @@ namespace xsk { namespace gsc { namespace iw5 { yylhs.value.emplace< ast::stmt_ifelse::ptr > (); break; - case symbol_kind::S_stmt_dev: // stmt_dev - case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list + case symbol_kind::S_stmt_or_dev_list: // stmt_or_dev_list + case symbol_kind::S_stmt_block: // stmt_block yylhs.value.emplace< ast::stmt_list::ptr > (); break; @@ -1964,1291 +1989,1309 @@ namespace xsk { namespace gsc { namespace iw5 { switch (yyn) { case 2: // root: program -#line 252 "parser.ypp" +#line 254 "parser.ypp" { ast = std::move(yystack_[0].value.as < ast::program::ptr > ()); } -#line 1970 "parser.cpp" +#line 1995 "parser.cpp" break; case 3: // root: %empty -#line 253 "parser.ypp" +#line 255 "parser.ypp" { ast = std::make_unique(yylhs.location); } -#line 1976 "parser.cpp" +#line 2001 "parser.cpp" break; case 4: // program: program inline -#line 258 "parser.ypp" +#line 260 "parser.ypp" { yylhs.value.as < ast::program::ptr > () = std::move(yystack_[1].value.as < ast::program::ptr > ()); } -#line 1982 "parser.cpp" +#line 2007 "parser.cpp" break; case 5: // program: program include -#line 260 "parser.ypp" +#line 262 "parser.ypp" { yylhs.value.as < ast::program::ptr > () = std::move(yystack_[1].value.as < ast::program::ptr > ()); yylhs.value.as < ast::program::ptr > ()->includes.push_back(std::move(yystack_[0].value.as < ast::include::ptr > ())); } -#line 1988 "parser.cpp" +#line 2013 "parser.cpp" break; case 6: // program: program declaration -#line 262 "parser.ypp" +#line 264 "parser.ypp" { yylhs.value.as < ast::program::ptr > () = std::move(yystack_[1].value.as < ast::program::ptr > ()); yylhs.value.as < ast::program::ptr > ()->declarations.push_back(std::move(yystack_[0].value.as < ast::decl > ())); } -#line 1994 "parser.cpp" +#line 2019 "parser.cpp" break; case 7: // program: inline -#line 264 "parser.ypp" +#line 266 "parser.ypp" { yylhs.value.as < ast::program::ptr > () = std::make_unique(yylhs.location); } -#line 2000 "parser.cpp" +#line 2025 "parser.cpp" break; case 8: // program: include -#line 266 "parser.ypp" +#line 268 "parser.ypp" { yylhs.value.as < ast::program::ptr > () = std::make_unique(yylhs.location); yylhs.value.as < ast::program::ptr > ()->includes.push_back(std::move(yystack_[0].value.as < ast::include::ptr > ())); } -#line 2006 "parser.cpp" +#line 2031 "parser.cpp" break; case 9: // program: declaration -#line 268 "parser.ypp" +#line 270 "parser.ypp" { yylhs.value.as < ast::program::ptr > () = std::make_unique(yylhs.location); yylhs.value.as < ast::program::ptr > ()->declarations.push_back(std::move(yystack_[0].value.as < ast::decl > ())); } -#line 2012 "parser.cpp" +#line 2037 "parser.cpp" break; case 10: // inline: "#inline" expr_path ";" -#line 272 "parser.ypp" +#line 274 "parser.ypp" { lexer.push_header(yystack_[1].value.as < ast::expr_path::ptr > ()->value); } -#line 2018 "parser.cpp" +#line 2043 "parser.cpp" break; case 11: // include: "#include" expr_path ";" -#line 277 "parser.ypp" +#line 279 "parser.ypp" { yylhs.value.as < ast::include::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr_path::ptr > ())); } -#line 2024 "parser.cpp" +#line 2049 "parser.cpp" break; case 12: // declaration: "/#" -#line 281 "parser.ypp" +#line 283 "parser.ypp" { yylhs.value.as < ast::decl > ().as_dev_begin = std::make_unique(yylhs.location); } -#line 2030 "parser.cpp" +#line 2055 "parser.cpp" break; case 13: // declaration: "#/" -#line 282 "parser.ypp" +#line 284 "parser.ypp" { yylhs.value.as < ast::decl > ().as_dev_end = std::make_unique(yylhs.location); } -#line 2036 "parser.cpp" +#line 2061 "parser.cpp" break; case 14: // declaration: decl_usingtree -#line 283 "parser.ypp" +#line 285 "parser.ypp" { yylhs.value.as < ast::decl > ().as_usingtree = std::move(yystack_[0].value.as < ast::decl_usingtree::ptr > ()); } -#line 2042 "parser.cpp" +#line 2067 "parser.cpp" break; case 15: // declaration: decl_constant -#line 284 "parser.ypp" +#line 286 "parser.ypp" { yylhs.value.as < ast::decl > ().as_constant = std::move(yystack_[0].value.as < ast::decl_constant::ptr > ()); } -#line 2048 "parser.cpp" +#line 2073 "parser.cpp" break; case 16: // declaration: decl_thread -#line 285 "parser.ypp" +#line 287 "parser.ypp" { yylhs.value.as < ast::decl > ().as_thread = std::move(yystack_[0].value.as < ast::decl_thread::ptr > ()); } -#line 2054 "parser.cpp" +#line 2079 "parser.cpp" break; case 17: // decl_usingtree: "#using_animtree" "(" expr_string ")" ";" -#line 290 "parser.ypp" +#line 292 "parser.ypp" { lexer.ban_header(yylhs.location); yylhs.value.as < ast::decl_usingtree::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr_string::ptr > ())); } -#line 2060 "parser.cpp" +#line 2085 "parser.cpp" break; case 18: // decl_constant: expr_identifier "=" expr ";" -#line 295 "parser.ypp" +#line 297 "parser.ypp" { yylhs.value.as < ast::decl_constant::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr > ())); } -#line 2066 "parser.cpp" +#line 2091 "parser.cpp" break; case 19: // decl_thread: expr_identifier "(" expr_parameters ")" stmt_block -#line 300 "parser.ypp" +#line 302 "parser.ypp" { lexer.ban_header(yylhs.location); yylhs.value.as < ast::decl_thread::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[2].value.as < ast::expr_parameters::ptr > ()), std::move(yystack_[0].value.as < ast::stmt_list::ptr > ())); } -#line 2072 "parser.cpp" +#line 2097 "parser.cpp" break; - case 20: // stmt: stmt_dev -#line 304 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_list = std::move(yystack_[0].value.as < ast::stmt_list::ptr > ()); } -#line 2078 "parser.cpp" - break; - - case 21: // stmt: stmt_block -#line 305 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_list = std::move(yystack_[0].value.as < ast::stmt_list::ptr > ()); } -#line 2084 "parser.cpp" - break; - - case 22: // stmt: stmt_call + case 20: // stmt: stmt_block #line 306 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_call = std::move(yystack_[0].value.as < ast::stmt_call::ptr > ()); } -#line 2090 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_list = std::move(yystack_[0].value.as < ast::stmt_list::ptr > ()); } +#line 2103 "parser.cpp" break; - case 23: // stmt: stmt_assign + case 21: // stmt: stmt_call #line 307 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_assign = std::move(yystack_[0].value.as < ast::stmt_assign::ptr > ()); } -#line 2096 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_call = std::move(yystack_[0].value.as < ast::stmt_call::ptr > ()); } +#line 2109 "parser.cpp" break; - case 24: // stmt: stmt_endon + case 22: // stmt: stmt_assign #line 308 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_endon = std::move(yystack_[0].value.as < ast::stmt_endon::ptr > ()); } -#line 2102 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_assign = std::move(yystack_[0].value.as < ast::stmt_assign::ptr > ()); } +#line 2115 "parser.cpp" break; - case 25: // stmt: stmt_notify + case 23: // stmt: stmt_endon #line 309 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_notify = std::move(yystack_[0].value.as < ast::stmt_notify::ptr > ()); } -#line 2108 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_endon = std::move(yystack_[0].value.as < ast::stmt_endon::ptr > ()); } +#line 2121 "parser.cpp" break; - case 26: // stmt: stmt_wait + case 24: // stmt: stmt_notify #line 310 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_wait = std::move(yystack_[0].value.as < ast::stmt_wait::ptr > ()); } -#line 2114 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_notify = std::move(yystack_[0].value.as < ast::stmt_notify::ptr > ()); } +#line 2127 "parser.cpp" break; - case 27: // stmt: stmt_waittill + case 25: // stmt: stmt_wait #line 311 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_waittill = std::move(yystack_[0].value.as < ast::stmt_waittill::ptr > ()); } -#line 2120 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_wait = std::move(yystack_[0].value.as < ast::stmt_wait::ptr > ()); } +#line 2133 "parser.cpp" break; - case 28: // stmt: stmt_waittillmatch + case 26: // stmt: stmt_waittill #line 312 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_waittillmatch = std::move(yystack_[0].value.as < ast::stmt_waittillmatch::ptr > ()); } -#line 2126 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_waittill = std::move(yystack_[0].value.as < ast::stmt_waittill::ptr > ()); } +#line 2139 "parser.cpp" break; - case 29: // stmt: stmt_waittillframeend + case 27: // stmt: stmt_waittillmatch #line 313 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_waittillframeend = std::move(yystack_[0].value.as < ast::stmt_waittillframeend::ptr > ()); } -#line 2132 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_waittillmatch = std::move(yystack_[0].value.as < ast::stmt_waittillmatch::ptr > ()); } +#line 2145 "parser.cpp" break; - case 30: // stmt: stmt_if + case 28: // stmt: stmt_waittillframeend #line 314 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_if = std::move(yystack_[0].value.as < ast::stmt_if::ptr > ()); } -#line 2138 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_waittillframeend = std::move(yystack_[0].value.as < ast::stmt_waittillframeend::ptr > ()); } +#line 2151 "parser.cpp" break; - case 31: // stmt: stmt_ifelse + case 29: // stmt: stmt_if #line 315 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_ifelse = std::move(yystack_[0].value.as < ast::stmt_ifelse::ptr > ()); } -#line 2144 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_if = std::move(yystack_[0].value.as < ast::stmt_if::ptr > ()); } +#line 2157 "parser.cpp" break; - case 32: // stmt: stmt_while + case 30: // stmt: stmt_ifelse #line 316 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_while = std::move(yystack_[0].value.as < ast::stmt_while::ptr > ()); } -#line 2150 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_ifelse = std::move(yystack_[0].value.as < ast::stmt_ifelse::ptr > ()); } +#line 2163 "parser.cpp" break; - case 33: // stmt: stmt_dowhile + case 31: // stmt: stmt_while #line 317 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_dowhile = std::move(yystack_[0].value.as < ast::stmt_dowhile::ptr > ()); } -#line 2156 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_while = std::move(yystack_[0].value.as < ast::stmt_while::ptr > ()); } +#line 2169 "parser.cpp" break; - case 34: // stmt: stmt_for + case 32: // stmt: stmt_dowhile #line 318 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_for = std::move(yystack_[0].value.as < ast::stmt_for::ptr > ()); } -#line 2162 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_dowhile = std::move(yystack_[0].value.as < ast::stmt_dowhile::ptr > ()); } +#line 2175 "parser.cpp" break; - case 35: // stmt: stmt_foreach + case 33: // stmt: stmt_for #line 319 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_foreach = std::move(yystack_[0].value.as < ast::stmt_foreach::ptr > ()); } -#line 2168 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_for = std::move(yystack_[0].value.as < ast::stmt_for::ptr > ()); } +#line 2181 "parser.cpp" break; - case 36: // stmt: stmt_switch + case 34: // stmt: stmt_foreach #line 320 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_switch = std::move(yystack_[0].value.as < ast::stmt_switch::ptr > ()); } -#line 2174 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_foreach = std::move(yystack_[0].value.as < ast::stmt_foreach::ptr > ()); } +#line 2187 "parser.cpp" break; - case 37: // stmt: stmt_case + case 35: // stmt: stmt_switch #line 321 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_case = std::move(yystack_[0].value.as < ast::stmt_case::ptr > ()); } -#line 2180 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_switch = std::move(yystack_[0].value.as < ast::stmt_switch::ptr > ()); } +#line 2193 "parser.cpp" break; - case 38: // stmt: stmt_default + case 36: // stmt: stmt_case #line 322 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_default = std::move(yystack_[0].value.as < ast::stmt_default::ptr > ()); } -#line 2186 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_case = std::move(yystack_[0].value.as < ast::stmt_case::ptr > ()); } +#line 2199 "parser.cpp" break; - case 39: // stmt: stmt_break + case 37: // stmt: stmt_default #line 323 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_break = std::move(yystack_[0].value.as < ast::stmt_break::ptr > ()); } -#line 2192 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_default = std::move(yystack_[0].value.as < ast::stmt_default::ptr > ()); } +#line 2205 "parser.cpp" break; - case 40: // stmt: stmt_continue + case 38: // stmt: stmt_break #line 324 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_continue = std::move(yystack_[0].value.as < ast::stmt_continue::ptr > ()); } -#line 2198 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_break = std::move(yystack_[0].value.as < ast::stmt_break::ptr > ()); } +#line 2211 "parser.cpp" break; - case 41: // stmt: stmt_return + case 39: // stmt: stmt_continue #line 325 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_return = std::move(yystack_[0].value.as < ast::stmt_return::ptr > ()); } -#line 2204 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_continue = std::move(yystack_[0].value.as < ast::stmt_continue::ptr > ()); } +#line 2217 "parser.cpp" break; - case 42: // stmt: stmt_breakpoint + case 40: // stmt: stmt_return #line 326 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_breakpoint = std::move(yystack_[0].value.as < ast::stmt_breakpoint::ptr > ()); } -#line 2210 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_return = std::move(yystack_[0].value.as < ast::stmt_return::ptr > ()); } +#line 2223 "parser.cpp" break; - case 43: // stmt: stmt_prof_begin + case 41: // stmt: stmt_breakpoint #line 327 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_prof_begin = std::move(yystack_[0].value.as < ast::stmt_prof_begin::ptr > ()); } -#line 2216 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_breakpoint = std::move(yystack_[0].value.as < ast::stmt_breakpoint::ptr > ()); } +#line 2229 "parser.cpp" break; - case 44: // stmt: stmt_prof_end + case 42: // stmt: stmt_prof_begin #line 328 "parser.ypp" + { yylhs.value.as < ast::stmt > ().as_prof_begin = std::move(yystack_[0].value.as < ast::stmt_prof_begin::ptr > ()); } +#line 2235 "parser.cpp" + break; + + case 43: // stmt: stmt_prof_end +#line 329 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_prof_end = std::move(yystack_[0].value.as < ast::stmt_prof_end::ptr > ()); } -#line 2222 "parser.cpp" +#line 2241 "parser.cpp" break; - case 45: // stmt_dev: "/#" stmt_list "#/" -#line 332 "parser.ypp" - { yylhs.value.as < ast::stmt_list::ptr > () = std::move(yystack_[1].value.as < ast::stmt_list::ptr > ()); } -#line 2228 "parser.cpp" - break; - - case 46: // stmt_dev: "/#" "#/" + case 44: // stmt_or_dev: stmt #line 333 "parser.ypp" - { yylhs.value.as < ast::stmt_list::ptr > () = std::make_unique(yylhs.location); } -#line 2234 "parser.cpp" + { yylhs.value.as < ast::stmt > () = std::move(yystack_[0].value.as < ast::stmt > ()); } +#line 2247 "parser.cpp" break; - case 47: // stmt_block: "{" stmt_list "}" -#line 337 "parser.ypp" - { yylhs.value.as < ast::stmt_list::ptr > () = std::move(yystack_[1].value.as < ast::stmt_list::ptr > ()); } -#line 2240 "parser.cpp" + case 45: // stmt_or_dev: stmt_dev +#line 334 "parser.ypp" + { yylhs.value.as < ast::stmt > ().as_dev = std::move(yystack_[0].value.as < ast::stmt_dev::ptr > ()); } +#line 2253 "parser.cpp" break; - case 48: // stmt_block: "{" "}" -#line 338 "parser.ypp" - { yylhs.value.as < ast::stmt_list::ptr > () = std::make_unique(yylhs.location); } -#line 2246 "parser.cpp" - break; - - case 49: // stmt_list: stmt_list stmt -#line 343 "parser.ypp" + case 46: // stmt_list: stmt_list stmt +#line 339 "parser.ypp" { yylhs.value.as < ast::stmt_list::ptr > () = std::move(yystack_[1].value.as < ast::stmt_list::ptr > ()); yylhs.value.as < ast::stmt_list::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2252 "parser.cpp" +#line 2259 "parser.cpp" break; - case 50: // stmt_list: stmt -#line 345 "parser.ypp" + case 47: // stmt_list: stmt +#line 341 "parser.ypp" { yylhs.value.as < ast::stmt_list::ptr > () = std::make_unique(yylhs.location); yylhs.value.as < ast::stmt_list::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2258 "parser.cpp" +#line 2265 "parser.cpp" break; - case 51: // stmt_expr: expr_assign -#line 350 "parser.ypp" - { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2264 "parser.cpp" + case 48: // stmt_or_dev_list: stmt_or_dev_list stmt_or_dev +#line 346 "parser.ypp" + { yylhs.value.as < ast::stmt_list::ptr > () = std::move(yystack_[1].value.as < ast::stmt_list::ptr > ()); yylhs.value.as < ast::stmt_list::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::stmt > ())); } +#line 2271 "parser.cpp" break; - case 52: // stmt_expr: expr_increment + case 49: // stmt_or_dev_list: stmt_or_dev +#line 348 "parser.ypp" + { yylhs.value.as < ast::stmt_list::ptr > () = std::make_unique(yylhs.location); yylhs.value.as < ast::stmt_list::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::stmt > ())); } +#line 2277 "parser.cpp" + break; + + case 50: // stmt_dev: "/#" stmt_list "#/" #line 352 "parser.ypp" - { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2270 "parser.cpp" + { yylhs.value.as < ast::stmt_dev::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::stmt_list::ptr > ())); } +#line 2283 "parser.cpp" break; - case 53: // stmt_expr: expr_decrement -#line 354 "parser.ypp" - { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2276 "parser.cpp" + case 51: // stmt_dev: "/#" "#/" +#line 353 "parser.ypp" + { yylhs.value.as < ast::stmt_dev::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } +#line 2289 "parser.cpp" break; - case 54: // stmt_expr: %empty -#line 356 "parser.ypp" - { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } -#line 2282 "parser.cpp" + case 52: // stmt_block: "{" stmt_or_dev_list "}" +#line 357 "parser.ypp" + { yylhs.value.as < ast::stmt_list::ptr > () = std::move(yystack_[1].value.as < ast::stmt_list::ptr > ()); } +#line 2295 "parser.cpp" break; - case 55: // stmt_call: expr_call ";" -#line 361 "parser.ypp" - { yylhs.value.as < ast::stmt_call::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[1].value.as < ast::expr_call::ptr > ()))); } -#line 2288 "parser.cpp" + case 53: // stmt_block: "{" "}" +#line 358 "parser.ypp" + { yylhs.value.as < ast::stmt_list::ptr > () = std::make_unique(yylhs.location); } +#line 2301 "parser.cpp" break; - case 56: // stmt_call: expr_method ";" + case 54: // stmt_expr: expr_assign #line 363 "parser.ypp" + { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2307 "parser.cpp" + break; + + case 55: // stmt_expr: expr_increment +#line 365 "parser.ypp" + { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2313 "parser.cpp" + break; + + case 56: // stmt_expr: expr_decrement +#line 367 "parser.ypp" + { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2319 "parser.cpp" + break; + + case 57: // stmt_expr: %empty +#line 369 "parser.ypp" + { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } +#line 2325 "parser.cpp" + break; + + case 58: // stmt_call: expr_call ";" +#line 374 "parser.ypp" + { yylhs.value.as < ast::stmt_call::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[1].value.as < ast::expr_call::ptr > ()))); } +#line 2331 "parser.cpp" + break; + + case 59: // stmt_call: expr_method ";" +#line 376 "parser.ypp" { yylhs.value.as < ast::stmt_call::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[1].value.as < ast::expr_method::ptr > ()))); } -#line 2294 "parser.cpp" +#line 2337 "parser.cpp" break; - case 57: // stmt_assign: expr_assign ";" -#line 368 "parser.ypp" + case 60: // stmt_assign: expr_assign ";" +#line 381 "parser.ypp" { yylhs.value.as < ast::stmt_assign::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } -#line 2300 "parser.cpp" +#line 2343 "parser.cpp" break; - case 58: // stmt_assign: expr_increment ";" -#line 370 "parser.ypp" + case 61: // stmt_assign: expr_increment ";" +#line 383 "parser.ypp" { yylhs.value.as < ast::stmt_assign::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } -#line 2306 "parser.cpp" +#line 2349 "parser.cpp" break; - case 59: // stmt_assign: expr_decrement ";" -#line 372 "parser.ypp" + case 62: // stmt_assign: expr_decrement ";" +#line 385 "parser.ypp" { yylhs.value.as < ast::stmt_assign::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } -#line 2312 "parser.cpp" +#line 2355 "parser.cpp" break; - case 60: // stmt_endon: expr_object "endon" "(" expr ")" ";" -#line 377 "parser.ypp" + case 63: // stmt_endon: expr_object "endon" "(" expr ")" ";" +#line 390 "parser.ypp" { yylhs.value.as < ast::stmt_endon::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr > ())); } -#line 2318 "parser.cpp" +#line 2361 "parser.cpp" break; - case 61: // stmt_notify: expr_object "notify" "(" expr "," expr_arguments_no_empty ")" ";" -#line 382 "parser.ypp" + case 64: // stmt_notify: expr_object "notify" "(" expr "," expr_arguments_no_empty ")" ";" +#line 395 "parser.ypp" { yylhs.value.as < ast::stmt_notify::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < ast::expr > ()), std::move(yystack_[4].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr_arguments::ptr > ())); } -#line 2324 "parser.cpp" +#line 2367 "parser.cpp" break; - case 62: // stmt_notify: expr_object "notify" "(" expr ")" ";" -#line 384 "parser.ypp" + case 65: // stmt_notify: expr_object "notify" "(" expr ")" ";" +#line 397 "parser.ypp" { yylhs.value.as < ast::stmt_notify::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr > ()), std::make_unique(yylhs.location)); } -#line 2330 "parser.cpp" +#line 2373 "parser.cpp" break; - case 63: // stmt_wait: "wait" expr ";" -#line 389 "parser.ypp" + case 66: // stmt_wait: "wait" expr ";" +#line 402 "parser.ypp" { yylhs.value.as < ast::stmt_wait::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } -#line 2336 "parser.cpp" +#line 2379 "parser.cpp" break; - case 64: // stmt_waittill: expr_object "waittill" "(" expr "," expr_arguments_no_empty ")" ";" -#line 394 "parser.ypp" + case 67: // stmt_waittill: expr_object "waittill" "(" expr "," expr_arguments_no_empty ")" ";" +#line 407 "parser.ypp" { yylhs.value.as < ast::stmt_waittill::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < ast::expr > ()), std::move(yystack_[4].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr_arguments::ptr > ())); } -#line 2342 "parser.cpp" +#line 2385 "parser.cpp" break; - case 65: // stmt_waittill: expr_object "waittill" "(" expr ")" ";" -#line 396 "parser.ypp" + case 68: // stmt_waittill: expr_object "waittill" "(" expr ")" ";" +#line 409 "parser.ypp" { yylhs.value.as < ast::stmt_waittill::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr > ()), std::make_unique(yylhs.location)); } -#line 2348 "parser.cpp" +#line 2391 "parser.cpp" break; - case 66: // stmt_waittillmatch: expr_object "waittillmatch" "(" expr "," expr_arguments_no_empty ")" ";" -#line 401 "parser.ypp" + case 69: // stmt_waittillmatch: expr_object "waittillmatch" "(" expr "," expr_arguments_no_empty ")" ";" +#line 414 "parser.ypp" { yylhs.value.as < ast::stmt_waittillmatch::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < ast::expr > ()), std::move(yystack_[4].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr_arguments::ptr > ())); } -#line 2354 "parser.cpp" +#line 2397 "parser.cpp" break; - case 67: // stmt_waittillmatch: expr_object "waittillmatch" "(" expr ")" ";" -#line 403 "parser.ypp" + case 70: // stmt_waittillmatch: expr_object "waittillmatch" "(" expr ")" ";" +#line 416 "parser.ypp" { yylhs.value.as < ast::stmt_waittillmatch::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr > ()), std::make_unique(yylhs.location)); } -#line 2360 "parser.cpp" +#line 2403 "parser.cpp" break; - case 68: // stmt_waittillframeend: "waittillframeend" ";" -#line 408 "parser.ypp" + case 71: // stmt_waittillframeend: "waittillframeend" ";" +#line 421 "parser.ypp" { yylhs.value.as < ast::stmt_waittillframeend::ptr > () = std::make_unique(yylhs.location); } -#line 2366 "parser.cpp" +#line 2409 "parser.cpp" break; - case 69: // stmt_if: "if" "(" expr ")" stmt -#line 413 "parser.ypp" + case 72: // stmt_if: "if" "(" expr ")" stmt +#line 426 "parser.ypp" { yylhs.value.as < ast::stmt_if::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2372 "parser.cpp" +#line 2415 "parser.cpp" break; - case 70: // stmt_ifelse: "if" "(" expr ")" stmt "else" stmt -#line 418 "parser.ypp" + case 73: // stmt_ifelse: "if" "(" expr ")" stmt "else" stmt +#line 431 "parser.ypp" { yylhs.value.as < ast::stmt_ifelse::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::stmt > ()), std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2378 "parser.cpp" +#line 2421 "parser.cpp" break; - case 71: // stmt_while: "while" "(" expr ")" stmt -#line 423 "parser.ypp" + case 74: // stmt_while: "while" "(" expr ")" stmt +#line 436 "parser.ypp" { yylhs.value.as < ast::stmt_while::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2384 "parser.cpp" +#line 2427 "parser.cpp" break; - case 72: // stmt_dowhile: "do" stmt "while" "(" expr ")" ";" -#line 428 "parser.ypp" + case 75: // stmt_dowhile: "do" stmt "while" "(" expr ")" ";" +#line 441 "parser.ypp" { yylhs.value.as < ast::stmt_dowhile::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[5].value.as < ast::stmt > ())); } -#line 2390 "parser.cpp" +#line 2433 "parser.cpp" break; - case 73: // stmt_for: "for" "(" stmt_expr ";" expr_or_empty ";" stmt_expr ")" stmt -#line 433 "parser.ypp" + case 76: // stmt_for: "for" "(" stmt_expr ";" expr_or_empty ";" stmt_expr ")" stmt +#line 446 "parser.ypp" { yylhs.value.as < ast::stmt_for::ptr > () = std::make_unique(yylhs.location, ast::stmt(std::move(yystack_[6].value.as < ast::stmt_expr::ptr > ())), std::move(yystack_[4].value.as < ast::expr > ()), ast::stmt(std::move(yystack_[2].value.as < ast::stmt_expr::ptr > ())), std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2396 "parser.cpp" +#line 2439 "parser.cpp" break; - case 74: // stmt_foreach: "foreach" "(" expr_identifier "in" expr ")" stmt -#line 438 "parser.ypp" + case 77: // stmt_foreach: "foreach" "(" expr_identifier "in" expr ")" stmt +#line 451 "parser.ypp" { yylhs.value.as < ast::stmt_foreach::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[4].value.as < ast::expr_identifier::ptr > ())), std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2402 "parser.cpp" +#line 2445 "parser.cpp" break; - case 75: // stmt_foreach: "foreach" "(" expr_identifier "," expr_identifier "in" expr ")" stmt -#line 440 "parser.ypp" + case 78: // stmt_foreach: "foreach" "(" expr_identifier "," expr_identifier "in" expr ")" stmt +#line 453 "parser.ypp" { yylhs.value.as < ast::stmt_foreach::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[6].value.as < ast::expr_identifier::ptr > ())), ast::expr(std::move(yystack_[4].value.as < ast::expr_identifier::ptr > ())), std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2408 "parser.cpp" +#line 2451 "parser.cpp" break; - case 76: // stmt_switch: "switch" "(" expr ")" stmt_block -#line 445 "parser.ypp" + case 79: // stmt_switch: "switch" "(" expr ")" stmt_block +#line 458 "parser.ypp" { yylhs.value.as < ast::stmt_switch::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::stmt_list::ptr > ())); } -#line 2414 "parser.cpp" +#line 2457 "parser.cpp" break; - case 77: // stmt_case: "case" expr_integer ":" -#line 450 "parser.ypp" + case 80: // stmt_case: "case" expr_integer ":" +#line 463 "parser.ypp" { yylhs.value.as < ast::stmt_case::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[1].value.as < ast::expr_integer::ptr > ())), std::make_unique(yylhs.location)); } -#line 2420 "parser.cpp" +#line 2463 "parser.cpp" break; - case 78: // stmt_case: "case" expr_string ":" -#line 452 "parser.ypp" + case 81: // stmt_case: "case" expr_string ":" +#line 465 "parser.ypp" { yylhs.value.as < ast::stmt_case::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[1].value.as < ast::expr_string::ptr > ())), std::make_unique(yylhs.location)); } -#line 2426 "parser.cpp" +#line 2469 "parser.cpp" break; - case 79: // stmt_default: "default" ":" -#line 457 "parser.ypp" + case 82: // stmt_default: "default" ":" +#line 470 "parser.ypp" { yylhs.value.as < ast::stmt_default::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } -#line 2432 "parser.cpp" +#line 2475 "parser.cpp" break; - case 80: // stmt_break: "break" ";" -#line 462 "parser.ypp" + case 83: // stmt_break: "break" ";" +#line 475 "parser.ypp" { yylhs.value.as < ast::stmt_break::ptr > () = std::make_unique(yylhs.location); } -#line 2438 "parser.cpp" +#line 2481 "parser.cpp" break; - case 81: // stmt_continue: "continue" ";" -#line 467 "parser.ypp" + case 84: // stmt_continue: "continue" ";" +#line 480 "parser.ypp" { yylhs.value.as < ast::stmt_continue::ptr > () = std::make_unique(yylhs.location); } -#line 2444 "parser.cpp" +#line 2487 "parser.cpp" break; - case 82: // stmt_return: "return" expr ";" -#line 472 "parser.ypp" + case 85: // stmt_return: "return" expr ";" +#line 485 "parser.ypp" { yylhs.value.as < ast::stmt_return::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } -#line 2450 "parser.cpp" +#line 2493 "parser.cpp" break; - case 83: // stmt_return: "return" ";" -#line 474 "parser.ypp" + case 86: // stmt_return: "return" ";" +#line 487 "parser.ypp" { yylhs.value.as < ast::stmt_return::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } -#line 2456 "parser.cpp" +#line 2499 "parser.cpp" break; - case 84: // stmt_breakpoint: "breakpoint" ";" -#line 479 "parser.ypp" + case 87: // stmt_breakpoint: "breakpoint" ";" +#line 492 "parser.ypp" { yylhs.value.as < ast::stmt_breakpoint::ptr > () = std::make_unique(yylhs.location); } -#line 2462 "parser.cpp" +#line 2505 "parser.cpp" break; - case 85: // stmt_prof_begin: "prof_begin" "(" expr_arguments ")" ";" -#line 484 "parser.ypp" + case 88: // stmt_prof_begin: "prof_begin" "(" expr_arguments ")" ";" +#line 497 "parser.ypp" { yylhs.value.as < ast::stmt_prof_begin::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr_arguments::ptr > ())); } -#line 2468 "parser.cpp" +#line 2511 "parser.cpp" break; - case 86: // stmt_prof_end: "prof_end" "(" expr_arguments ")" ";" -#line 489 "parser.ypp" + case 89: // stmt_prof_end: "prof_end" "(" expr_arguments ")" ";" +#line 502 "parser.ypp" { yylhs.value.as < ast::stmt_prof_end::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr_arguments::ptr > ())); } -#line 2474 "parser.cpp" +#line 2517 "parser.cpp" break; - case 87: // expr: expr_ternary -#line 493 "parser.ypp" + case 90: // expr: expr_ternary +#line 506 "parser.ypp" { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } -#line 2480 "parser.cpp" +#line 2523 "parser.cpp" break; - case 88: // expr: expr_binary -#line 494 "parser.ypp" - { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } -#line 2486 "parser.cpp" - break; - - case 89: // expr: expr_primitive -#line 495 "parser.ypp" - { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } -#line 2492 "parser.cpp" - break; - - case 90: // expr_or_empty: expr -#line 499 "parser.ypp" - { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } -#line 2498 "parser.cpp" - break; - - case 91: // expr_or_empty: %empty -#line 500 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location); } -#line 2504 "parser.cpp" - break; - - case 92: // expr_assign: expr_object "=" expr -#line 505 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2510 "parser.cpp" - break; - - case 93: // expr_assign: expr_object "|=" expr + case 91: // expr: expr_binary #line 507 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2516 "parser.cpp" + { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } +#line 2529 "parser.cpp" break; - case 94: // expr_assign: expr_object "&=" expr -#line 509 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2522 "parser.cpp" + case 92: // expr: expr_primitive +#line 508 "parser.ypp" + { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } +#line 2535 "parser.cpp" break; - case 95: // expr_assign: expr_object "^=" expr -#line 511 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2528 "parser.cpp" + case 93: // expr_or_empty: expr +#line 512 "parser.ypp" + { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } +#line 2541 "parser.cpp" break; - case 96: // expr_assign: expr_object "<<=" expr + case 94: // expr_or_empty: %empty #line 513 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location); } +#line 2547 "parser.cpp" + break; + + case 95: // expr_assign: expr_object "=" expr +#line 518 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2553 "parser.cpp" + break; + + case 96: // expr_assign: expr_object "|=" expr +#line 520 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2559 "parser.cpp" + break; + + case 97: // expr_assign: expr_object "&=" expr +#line 522 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2565 "parser.cpp" + break; + + case 98: // expr_assign: expr_object "^=" expr +#line 524 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2571 "parser.cpp" + break; + + case 99: // expr_assign: expr_object "<<=" expr +#line 526 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()),std::move( yystack_[0].value.as < ast::expr > ())); } -#line 2534 "parser.cpp" +#line 2577 "parser.cpp" break; - case 97: // expr_assign: expr_object ">>=" expr -#line 515 "parser.ypp" + case 100: // expr_assign: expr_object ">>=" expr +#line 528 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2540 "parser.cpp" +#line 2583 "parser.cpp" break; - case 98: // expr_assign: expr_object "+=" expr -#line 517 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2546 "parser.cpp" - break; - - case 99: // expr_assign: expr_object "-=" expr -#line 519 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2552 "parser.cpp" - break; - - case 100: // expr_assign: expr_object "*=" expr -#line 521 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2558 "parser.cpp" - break; - - case 101: // expr_assign: expr_object "/=" expr -#line 523 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2564 "parser.cpp" - break; - - case 102: // expr_assign: expr_object "%=" expr -#line 525 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2570 "parser.cpp" - break; - - case 103: // expr_increment: "++" expr_object + case 101: // expr_assign: expr_object "+=" expr #line 530 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ()), true); } -#line 2576 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2589 "parser.cpp" break; - case 104: // expr_increment: expr_object "++" + case 102: // expr_assign: expr_object "-=" expr #line 532 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2595 "parser.cpp" + break; + + case 103: // expr_assign: expr_object "*=" expr +#line 534 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2601 "parser.cpp" + break; + + case 104: // expr_assign: expr_object "/=" expr +#line 536 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2607 "parser.cpp" + break; + + case 105: // expr_assign: expr_object "%=" expr +#line 538 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2613 "parser.cpp" + break; + + case 106: // expr_increment: "++" expr_object +#line 543 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ()), true); } +#line 2619 "parser.cpp" + break; + + case 107: // expr_increment: expr_object "++" +#line 545 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ()), false); } -#line 2582 "parser.cpp" +#line 2625 "parser.cpp" break; - case 105: // expr_decrement: "--" expr_object -#line 537 "parser.ypp" + case 108: // expr_decrement: "--" expr_object +#line 550 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ()), true); } -#line 2588 "parser.cpp" +#line 2631 "parser.cpp" break; - case 106: // expr_decrement: expr_object "--" -#line 539 "parser.ypp" + case 109: // expr_decrement: expr_object "--" +#line 552 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ()), false); } -#line 2594 "parser.cpp" +#line 2637 "parser.cpp" break; - case 107: // expr_ternary: expr "?" expr ":" expr -#line 544 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2600 "parser.cpp" - break; - - case 108: // expr_binary: expr "||" expr -#line 549 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2606 "parser.cpp" - break; - - case 109: // expr_binary: expr "&&" expr -#line 551 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2612 "parser.cpp" - break; - - case 110: // expr_binary: expr "==" expr -#line 553 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2618 "parser.cpp" - break; - - case 111: // expr_binary: expr "!=" expr -#line 555 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2624 "parser.cpp" - break; - - case 112: // expr_binary: expr "<=" expr + case 110: // expr_ternary: expr "?" expr ":" expr #line 557 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2643 "parser.cpp" + break; + + case 111: // expr_binary: expr "||" expr +#line 562 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2649 "parser.cpp" + break; + + case 112: // expr_binary: expr "&&" expr +#line 564 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2655 "parser.cpp" + break; + + case 113: // expr_binary: expr "==" expr +#line 566 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2661 "parser.cpp" + break; + + case 114: // expr_binary: expr "!=" expr +#line 568 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2667 "parser.cpp" + break; + + case 115: // expr_binary: expr "<=" expr +#line 570 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2630 "parser.cpp" +#line 2673 "parser.cpp" break; - case 113: // expr_binary: expr ">=" expr -#line 559 "parser.ypp" + case 116: // expr_binary: expr ">=" expr +#line 572 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2636 "parser.cpp" +#line 2679 "parser.cpp" break; - case 114: // expr_binary: expr "<" expr -#line 561 "parser.ypp" + case 117: // expr_binary: expr "<" expr +#line 574 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2642 "parser.cpp" +#line 2685 "parser.cpp" break; - case 115: // expr_binary: expr ">" expr -#line 563 "parser.ypp" + case 118: // expr_binary: expr ">" expr +#line 576 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2648 "parser.cpp" +#line 2691 "parser.cpp" break; - case 116: // expr_binary: expr "|" expr -#line 565 "parser.ypp" + case 119: // expr_binary: expr "|" expr +#line 578 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2654 "parser.cpp" +#line 2697 "parser.cpp" break; - case 117: // expr_binary: expr "&" expr -#line 567 "parser.ypp" + case 120: // expr_binary: expr "&" expr +#line 580 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2660 "parser.cpp" +#line 2703 "parser.cpp" break; - case 118: // expr_binary: expr "^" expr -#line 569 "parser.ypp" + case 121: // expr_binary: expr "^" expr +#line 582 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2666 "parser.cpp" +#line 2709 "parser.cpp" break; - case 119: // expr_binary: expr "<<" expr -#line 571 "parser.ypp" + case 122: // expr_binary: expr "<<" expr +#line 584 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2672 "parser.cpp" +#line 2715 "parser.cpp" break; - case 120: // expr_binary: expr ">>" expr -#line 573 "parser.ypp" + case 123: // expr_binary: expr ">>" expr +#line 586 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2678 "parser.cpp" +#line 2721 "parser.cpp" break; - case 121: // expr_binary: expr "+" expr -#line 575 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2684 "parser.cpp" - break; - - case 122: // expr_binary: expr "-" expr -#line 577 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2690 "parser.cpp" - break; - - case 123: // expr_binary: expr "*" expr -#line 579 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2696 "parser.cpp" - break; - - case 124: // expr_binary: expr "/" expr -#line 581 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2702 "parser.cpp" - break; - - case 125: // expr_binary: expr "%" expr -#line 583 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2708 "parser.cpp" - break; - - case 126: // expr_primitive: expr_complement -#line 587 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_complement::ptr > ()); } -#line 2714 "parser.cpp" - break; - - case 127: // expr_primitive: expr_not + case 124: // expr_binary: expr "+" expr #line 588 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_not::ptr > ()); } -#line 2720 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2727 "parser.cpp" break; - case 128: // expr_primitive: expr_call -#line 589 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_call::ptr > ()); } -#line 2726 "parser.cpp" - break; - - case 129: // expr_primitive: expr_method + case 125: // expr_binary: expr "-" expr #line 590 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_method::ptr > ()); } -#line 2732 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2733 "parser.cpp" break; - case 130: // expr_primitive: expr_add_array -#line 591 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_add_array::ptr > ()); } -#line 2738 "parser.cpp" - break; - - case 131: // expr_primitive: expr_reference + case 126: // expr_binary: expr "*" expr #line 592 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_reference::ptr > ()); } -#line 2744 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2739 "parser.cpp" break; - case 132: // expr_primitive: expr_array -#line 593 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_array::ptr > ()); } -#line 2750 "parser.cpp" - break; - - case 133: // expr_primitive: expr_field + case 127: // expr_binary: expr "/" expr #line 594 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_field::ptr > ()); } -#line 2756 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2745 "parser.cpp" break; - case 134: // expr_primitive: expr_size -#line 595 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_size::ptr > ()); } -#line 2762 "parser.cpp" - break; - - case 135: // expr_primitive: expr_paren + case 128: // expr_binary: expr "%" expr #line 596 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_paren::ptr > ()); } -#line 2768 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2751 "parser.cpp" break; - case 136: // expr_primitive: expr_thisthread -#line 597 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_thisthread::ptr > ()); } -#line 2774 "parser.cpp" - break; - - case 137: // expr_primitive: expr_empty_array -#line 598 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_empty_array::ptr > ()); } -#line 2780 "parser.cpp" - break; - - case 138: // expr_primitive: expr_undefined -#line 599 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_undefined::ptr > ()); } -#line 2786 "parser.cpp" - break; - - case 139: // expr_primitive: expr_game + case 129: // expr_primitive: expr_complement #line 600 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_game::ptr > ()); } -#line 2792 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_complement::ptr > ()); } +#line 2757 "parser.cpp" break; - case 140: // expr_primitive: expr_self + case 130: // expr_primitive: expr_not #line 601 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_self::ptr > ()); } -#line 2798 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_not::ptr > ()); } +#line 2763 "parser.cpp" break; - case 141: // expr_primitive: expr_anim + case 131: // expr_primitive: expr_call #line 602 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_anim::ptr > ()); } -#line 2804 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_call::ptr > ()); } +#line 2769 "parser.cpp" break; - case 142: // expr_primitive: expr_level + case 132: // expr_primitive: expr_method #line 603 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_level::ptr > ()); } -#line 2810 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_method::ptr > ()); } +#line 2775 "parser.cpp" break; - case 143: // expr_primitive: expr_animation + case 133: // expr_primitive: expr_add_array #line 604 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_animation::ptr > ()); } -#line 2816 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_add_array::ptr > ()); } +#line 2781 "parser.cpp" break; - case 144: // expr_primitive: expr_animtree + case 134: // expr_primitive: expr_reference #line 605 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_animtree::ptr > ()); } -#line 2822 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_reference::ptr > ()); } +#line 2787 "parser.cpp" break; - case 145: // expr_primitive: expr_identifier + case 135: // expr_primitive: expr_array #line 606 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ()); } -#line 2828 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_array::ptr > ()); } +#line 2793 "parser.cpp" break; - case 146: // expr_primitive: expr_istring + case 136: // expr_primitive: expr_field #line 607 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_istring::ptr > ()); } -#line 2834 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_field::ptr > ()); } +#line 2799 "parser.cpp" break; - case 147: // expr_primitive: expr_string + case 137: // expr_primitive: expr_size #line 608 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_string::ptr > ()); } -#line 2840 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_size::ptr > ()); } +#line 2805 "parser.cpp" break; - case 148: // expr_primitive: expr_color + case 138: // expr_primitive: expr_paren #line 609 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_color::ptr > ()); } -#line 2846 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_paren::ptr > ()); } +#line 2811 "parser.cpp" break; - case 149: // expr_primitive: expr_vector + case 139: // expr_primitive: expr_thisthread #line 610 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_vector::ptr > ()); } -#line 2852 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_thisthread::ptr > ()); } +#line 2817 "parser.cpp" break; - case 150: // expr_primitive: expr_float + case 140: // expr_primitive: expr_empty_array #line 611 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_float::ptr > ()); } -#line 2858 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_empty_array::ptr > ()); } +#line 2823 "parser.cpp" break; - case 151: // expr_primitive: expr_integer + case 141: // expr_primitive: expr_undefined #line 612 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_integer::ptr > ()); } -#line 2864 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_undefined::ptr > ()); } +#line 2829 "parser.cpp" break; - case 152: // expr_primitive: expr_false + case 142: // expr_primitive: expr_game #line 613 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_false::ptr > ()); } -#line 2870 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_game::ptr > ()); } +#line 2835 "parser.cpp" break; - case 153: // expr_primitive: expr_true + case 143: // expr_primitive: expr_self #line 614 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_true::ptr > ()); } -#line 2876 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_self::ptr > ()); } +#line 2841 "parser.cpp" break; - case 154: // expr_complement: "~" expr + case 144: // expr_primitive: expr_anim +#line 615 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_anim::ptr > ()); } +#line 2847 "parser.cpp" + break; + + case 145: // expr_primitive: expr_level +#line 616 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_level::ptr > ()); } +#line 2853 "parser.cpp" + break; + + case 146: // expr_primitive: expr_animation +#line 617 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_animation::ptr > ()); } +#line 2859 "parser.cpp" + break; + + case 147: // expr_primitive: expr_animtree +#line 618 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_animtree::ptr > ()); } +#line 2865 "parser.cpp" + break; + + case 148: // expr_primitive: expr_identifier #line 619 "parser.ypp" - { yylhs.value.as < ast::expr_complement::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2882 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ()); } +#line 2871 "parser.cpp" break; - case 155: // expr_not: "!" expr + case 149: // expr_primitive: expr_istring +#line 620 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_istring::ptr > ()); } +#line 2877 "parser.cpp" + break; + + case 150: // expr_primitive: expr_string +#line 621 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_string::ptr > ()); } +#line 2883 "parser.cpp" + break; + + case 151: // expr_primitive: expr_color +#line 622 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_color::ptr > ()); } +#line 2889 "parser.cpp" + break; + + case 152: // expr_primitive: expr_vector +#line 623 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_vector::ptr > ()); } +#line 2895 "parser.cpp" + break; + + case 153: // expr_primitive: expr_float #line 624 "parser.ypp" - { yylhs.value.as < ast::expr_not::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2888 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_float::ptr > ()); } +#line 2901 "parser.cpp" break; - case 156: // expr_call: expr_function -#line 628 "parser.ypp" - { yylhs.value.as < ast::expr_call::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::call > ())); } -#line 2894 "parser.cpp" + case 154: // expr_primitive: expr_integer +#line 625 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_integer::ptr > ()); } +#line 2907 "parser.cpp" break; - case 157: // expr_call: expr_pointer -#line 629 "parser.ypp" - { yylhs.value.as < ast::expr_call::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::call > ())); } -#line 2900 "parser.cpp" + case 155: // expr_primitive: expr_false +#line 626 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_false::ptr > ()); } +#line 2913 "parser.cpp" break; - case 158: // expr_method: expr_object expr_function + case 156: // expr_primitive: expr_true +#line 627 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_true::ptr > ()); } +#line 2919 "parser.cpp" + break; + + case 157: // expr_complement: "~" expr #line 632 "parser.ypp" - { yylhs.value.as < ast::expr_method::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::call > ())); } -#line 2906 "parser.cpp" + { yylhs.value.as < ast::expr_complement::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2925 "parser.cpp" break; - case 159: // expr_method: expr_object expr_pointer -#line 633 "parser.ypp" - { yylhs.value.as < ast::expr_method::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::call > ())); } -#line 2912 "parser.cpp" + case 158: // expr_not: "!" expr +#line 637 "parser.ypp" + { yylhs.value.as < ast::expr_not::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2931 "parser.cpp" break; - case 160: // expr_function: expr_identifier "(" expr_arguments ")" -#line 638 "parser.ypp" - { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::normal); } -#line 2918 "parser.cpp" + case 159: // expr_call: expr_function +#line 641 "parser.ypp" + { yylhs.value.as < ast::expr_call::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::call > ())); } +#line 2937 "parser.cpp" break; - case 161: // expr_function: expr_path "::" expr_identifier "(" expr_arguments ")" -#line 640 "parser.ypp" - { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr_path::ptr > ()), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::normal); } -#line 2924 "parser.cpp" - break; - - case 162: // expr_function: "thread" expr_identifier "(" expr_arguments ")" + case 160: // expr_call: expr_pointer #line 642 "parser.ypp" - { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::thread); } -#line 2930 "parser.cpp" + { yylhs.value.as < ast::expr_call::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::call > ())); } +#line 2943 "parser.cpp" break; - case 163: // expr_function: "thread" expr_path "::" expr_identifier "(" expr_arguments ")" -#line 644 "parser.ypp" - { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr_path::ptr > ()), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::thread); } -#line 2936 "parser.cpp" + case 161: // expr_method: expr_object expr_function +#line 645 "parser.ypp" + { yylhs.value.as < ast::expr_method::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::call > ())); } +#line 2949 "parser.cpp" break; - case 164: // expr_function: "childthread" expr_identifier "(" expr_arguments ")" + case 162: // expr_method: expr_object expr_pointer #line 646 "parser.ypp" - { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::childthread); } -#line 2942 "parser.cpp" + { yylhs.value.as < ast::expr_method::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::call > ())); } +#line 2955 "parser.cpp" break; - case 165: // expr_function: "childthread" expr_path "::" expr_identifier "(" expr_arguments ")" -#line 648 "parser.ypp" - { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr_path::ptr > ()), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::childthread); } -#line 2948 "parser.cpp" + case 163: // expr_function: expr_identifier "(" expr_arguments ")" +#line 651 "parser.ypp" + { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::normal); } +#line 2961 "parser.cpp" break; - case 166: // expr_pointer: "[" "[" expr "]" "]" "(" expr_arguments ")" + case 164: // expr_function: expr_path "::" expr_identifier "(" expr_arguments ")" #line 653 "parser.ypp" - { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::normal); } -#line 2954 "parser.cpp" + { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr_path::ptr > ()), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::normal); } +#line 2967 "parser.cpp" break; - case 167: // expr_pointer: "thread" "[" "[" expr "]" "]" "(" expr_arguments ")" + case 165: // expr_function: "thread" expr_identifier "(" expr_arguments ")" #line 655 "parser.ypp" - { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::thread); } -#line 2960 "parser.cpp" + { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::thread); } +#line 2973 "parser.cpp" break; - case 168: // expr_pointer: "childthread" "[" "[" expr "]" "]" "(" expr_arguments ")" + case 166: // expr_function: "thread" expr_path "::" expr_identifier "(" expr_arguments ")" #line 657 "parser.ypp" - { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::childthread); } -#line 2966 "parser.cpp" + { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr_path::ptr > ()), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::thread); } +#line 2979 "parser.cpp" break; - case 169: // expr_pointer: "call" "[" "[" expr "]" "]" "(" expr_arguments ")" + case 167: // expr_function: "childthread" expr_identifier "(" expr_arguments ")" #line 659 "parser.ypp" + { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::childthread); } +#line 2985 "parser.cpp" + break; + + case 168: // expr_function: "childthread" expr_path "::" expr_identifier "(" expr_arguments ")" +#line 661 "parser.ypp" + { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr_path::ptr > ()), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::childthread); } +#line 2991 "parser.cpp" + break; + + case 169: // expr_pointer: "[" "[" expr "]" "]" "(" expr_arguments ")" +#line 666 "parser.ypp" + { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::normal); } +#line 2997 "parser.cpp" + break; + + case 170: // expr_pointer: "thread" "[" "[" expr "]" "]" "(" expr_arguments ")" +#line 668 "parser.ypp" + { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::thread); } +#line 3003 "parser.cpp" + break; + + case 171: // expr_pointer: "childthread" "[" "[" expr "]" "]" "(" expr_arguments ")" +#line 670 "parser.ypp" + { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::childthread); } +#line 3009 "parser.cpp" + break; + + case 172: // expr_pointer: "call" "[" "[" expr "]" "]" "(" expr_arguments ")" +#line 672 "parser.ypp" { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::builtin); } -#line 2972 "parser.cpp" +#line 3015 "parser.cpp" break; - case 170: // expr_add_array: "[" expr_arguments_no_empty "]" -#line 664 "parser.ypp" + case 173: // expr_add_array: "[" expr_arguments_no_empty "]" +#line 677 "parser.ypp" { yylhs.value.as < ast::expr_add_array::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ())); } -#line 2978 "parser.cpp" +#line 3021 "parser.cpp" break; - case 171: // expr_parameters: expr_parameters "," expr_identifier -#line 669 "parser.ypp" + case 174: // expr_parameters: expr_parameters "," expr_identifier +#line 682 "parser.ypp" { yylhs.value.as < ast::expr_parameters::ptr > () = std::move(yystack_[2].value.as < ast::expr_parameters::ptr > ()); yylhs.value.as < ast::expr_parameters::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ())); } -#line 2984 "parser.cpp" +#line 3027 "parser.cpp" break; - case 172: // expr_parameters: expr_identifier -#line 671 "parser.ypp" + case 175: // expr_parameters: expr_identifier +#line 684 "parser.ypp" { yylhs.value.as < ast::expr_parameters::ptr > () = std::make_unique(yylhs.location); yylhs.value.as < ast::expr_parameters::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ())); } -#line 2990 "parser.cpp" +#line 3033 "parser.cpp" break; - case 173: // expr_parameters: %empty -#line 673 "parser.ypp" + case 176: // expr_parameters: %empty +#line 686 "parser.ypp" { yylhs.value.as < ast::expr_parameters::ptr > () = std::make_unique(yylhs.location); } -#line 2996 "parser.cpp" +#line 3039 "parser.cpp" break; - case 174: // expr_arguments: expr_arguments_no_empty -#line 678 "parser.ypp" + case 177: // expr_arguments: expr_arguments_no_empty +#line 691 "parser.ypp" { yylhs.value.as < ast::expr_arguments::ptr > () = std::move(yystack_[0].value.as < ast::expr_arguments::ptr > ()); } -#line 3002 "parser.cpp" +#line 3045 "parser.cpp" break; - case 175: // expr_arguments: %empty -#line 680 "parser.ypp" + case 178: // expr_arguments: %empty +#line 693 "parser.ypp" { yylhs.value.as < ast::expr_arguments::ptr > () = std::make_unique(yylhs.location); } -#line 3008 "parser.cpp" +#line 3051 "parser.cpp" break; - case 176: // expr_arguments_no_empty: expr_arguments "," expr -#line 685 "parser.ypp" + case 179: // expr_arguments_no_empty: expr_arguments "," expr +#line 698 "parser.ypp" { yylhs.value.as < ast::expr_arguments::ptr > () = std::move(yystack_[2].value.as < ast::expr_arguments::ptr > ()); yylhs.value.as < ast::expr_arguments::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::expr > ())); } -#line 3014 "parser.cpp" +#line 3057 "parser.cpp" break; - case 177: // expr_arguments_no_empty: expr -#line 687 "parser.ypp" + case 180: // expr_arguments_no_empty: expr +#line 700 "parser.ypp" { yylhs.value.as < ast::expr_arguments::ptr > () = std::make_unique(yylhs.location); yylhs.value.as < ast::expr_arguments::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::expr > ())); } -#line 3020 "parser.cpp" +#line 3063 "parser.cpp" break; - case 178: // expr_reference: "::" expr_identifier -#line 692 "parser.ypp" + case 181: // expr_reference: "::" expr_identifier +#line 705 "parser.ypp" { yylhs.value.as < ast::expr_reference::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ())); } -#line 3026 "parser.cpp" +#line 3069 "parser.cpp" break; - case 179: // expr_reference: expr_path "::" expr_identifier -#line 694 "parser.ypp" + case 182: // expr_reference: expr_path "::" expr_identifier +#line 707 "parser.ypp" { yylhs.value.as < ast::expr_reference::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr_path::ptr > ()), std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ())); } -#line 3032 "parser.cpp" +#line 3075 "parser.cpp" break; - case 180: // expr_array: expr_object "[" expr "]" -#line 699 "parser.ypp" + case 183: // expr_array: expr_object "[" expr "]" +#line 712 "parser.ypp" { yylhs.value.as < ast::expr_array::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[3].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr > ())); } -#line 3038 "parser.cpp" +#line 3081 "parser.cpp" break; - case 181: // expr_field: expr_object "." expr_identifier -#line 704 "parser.ypp" + case 184: // expr_field: expr_object "." expr_identifier +#line 717 "parser.ypp" { yylhs.value.as < ast::expr_field::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ())); } -#line 3044 "parser.cpp" +#line 3087 "parser.cpp" break; - case 182: // expr_field: expr_object "field" -#line 706 "parser.ypp" + case 185: // expr_field: expr_object "field" +#line 719 "parser.ypp" { yylhs.value.as < ast::expr_field::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ()), std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ())); } -#line 3050 "parser.cpp" +#line 3093 "parser.cpp" break; - case 183: // expr_size: expr_object ".size" -#line 711 "parser.ypp" - { yylhs.value.as < ast::expr_size::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } -#line 3056 "parser.cpp" - break; - - case 184: // expr_paren: "(" expr ")" -#line 716 "parser.ypp" - { yylhs.value.as < ast::expr_paren::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } -#line 3062 "parser.cpp" - break; - - case 185: // expr_object: expr_call -#line 720 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_call::ptr > ()); } -#line 3068 "parser.cpp" - break; - - case 186: // expr_object: expr_method -#line 721 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_method::ptr > ()); } -#line 3074 "parser.cpp" - break; - - case 187: // expr_object: expr_array -#line 722 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_array::ptr > ()); } -#line 3080 "parser.cpp" - break; - - case 188: // expr_object: expr_field -#line 723 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_field::ptr > ()); } -#line 3086 "parser.cpp" - break; - - case 189: // expr_object: expr_game + case 186: // expr_size: expr_object ".size" #line 724 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_game::ptr > ()); } -#line 3092 "parser.cpp" + { yylhs.value.as < ast::expr_size::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } +#line 3099 "parser.cpp" break; - case 190: // expr_object: expr_self -#line 725 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_self::ptr > ()); } -#line 3098 "parser.cpp" + case 187: // expr_paren: "(" expr ")" +#line 729 "parser.ypp" + { yylhs.value.as < ast::expr_paren::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } +#line 3105 "parser.cpp" break; - case 191: // expr_object: expr_anim -#line 726 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_anim::ptr > ()); } -#line 3104 "parser.cpp" - break; - - case 192: // expr_object: expr_level -#line 727 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_level::ptr > ()); } -#line 3110 "parser.cpp" - break; - - case 193: // expr_object: expr_identifier -#line 728 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ()); } -#line 3116 "parser.cpp" - break; - - case 194: // expr_thisthread: "thisthread" + case 188: // expr_object: expr_call #line 733 "parser.ypp" - { yylhs.value.as < ast::expr_thisthread::ptr > () = std::make_unique(yylhs.location); } -#line 3122 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_call::ptr > ()); } +#line 3111 "parser.cpp" break; - case 195: // expr_empty_array: "[" "]" + case 189: // expr_object: expr_method +#line 734 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_method::ptr > ()); } +#line 3117 "parser.cpp" + break; + + case 190: // expr_object: expr_array +#line 735 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_array::ptr > ()); } +#line 3123 "parser.cpp" + break; + + case 191: // expr_object: expr_field +#line 736 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_field::ptr > ()); } +#line 3129 "parser.cpp" + break; + + case 192: // expr_object: expr_game +#line 737 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_game::ptr > ()); } +#line 3135 "parser.cpp" + break; + + case 193: // expr_object: expr_self #line 738 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_self::ptr > ()); } +#line 3141 "parser.cpp" + break; + + case 194: // expr_object: expr_anim +#line 739 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_anim::ptr > ()); } +#line 3147 "parser.cpp" + break; + + case 195: // expr_object: expr_level +#line 740 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_level::ptr > ()); } +#line 3153 "parser.cpp" + break; + + case 196: // expr_object: expr_identifier +#line 741 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ()); } +#line 3159 "parser.cpp" + break; + + case 197: // expr_thisthread: "thisthread" +#line 746 "parser.ypp" + { yylhs.value.as < ast::expr_thisthread::ptr > () = std::make_unique(yylhs.location); } +#line 3165 "parser.cpp" + break; + + case 198: // expr_empty_array: "[" "]" +#line 751 "parser.ypp" { yylhs.value.as < ast::expr_empty_array::ptr > () = std::make_unique(yylhs.location); } -#line 3128 "parser.cpp" +#line 3171 "parser.cpp" break; - case 196: // expr_undefined: "undefined" -#line 743 "parser.ypp" + case 199: // expr_undefined: "undefined" +#line 756 "parser.ypp" { yylhs.value.as < ast::expr_undefined::ptr > () = std::make_unique(yylhs.location); } -#line 3134 "parser.cpp" +#line 3177 "parser.cpp" break; - case 197: // expr_game: "game" -#line 748 "parser.ypp" + case 200: // expr_game: "game" +#line 761 "parser.ypp" { yylhs.value.as < ast::expr_game::ptr > () = std::make_unique(yylhs.location); } -#line 3140 "parser.cpp" +#line 3183 "parser.cpp" break; - case 198: // expr_self: "self" -#line 753 "parser.ypp" + case 201: // expr_self: "self" +#line 766 "parser.ypp" { yylhs.value.as < ast::expr_self::ptr > () = std::make_unique(yylhs.location); } -#line 3146 "parser.cpp" +#line 3189 "parser.cpp" break; - case 199: // expr_anim: "anim" -#line 758 "parser.ypp" + case 202: // expr_anim: "anim" +#line 771 "parser.ypp" { yylhs.value.as < ast::expr_anim::ptr > () = std::make_unique(yylhs.location); } -#line 3152 "parser.cpp" +#line 3195 "parser.cpp" break; - case 200: // expr_level: "level" -#line 763 "parser.ypp" + case 203: // expr_level: "level" +#line 776 "parser.ypp" { yylhs.value.as < ast::expr_level::ptr > () = std::make_unique(yylhs.location); } -#line 3158 "parser.cpp" +#line 3201 "parser.cpp" break; - case 201: // expr_animation: "%" "identifier" -#line 768 "parser.ypp" + case 204: // expr_animation: "%" "identifier" +#line 781 "parser.ypp" { yylhs.value.as < ast::expr_animation::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3164 "parser.cpp" +#line 3207 "parser.cpp" break; - case 202: // expr_animtree: "#animtree" -#line 773 "parser.ypp" + case 205: // expr_animtree: "#animtree" +#line 786 "parser.ypp" { yylhs.value.as < ast::expr_animtree::ptr > () = std::make_unique(yylhs.location); } -#line 3170 "parser.cpp" +#line 3213 "parser.cpp" break; - case 203: // expr_identifier: "identifier" -#line 778 "parser.ypp" + case 206: // expr_identifier: "identifier" +#line 791 "parser.ypp" { yylhs.value.as < ast::expr_identifier::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3176 "parser.cpp" +#line 3219 "parser.cpp" break; - case 204: // expr_path: "path" -#line 783 "parser.ypp" + case 207: // expr_path: "path" +#line 796 "parser.ypp" { yylhs.value.as < ast::expr_path::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3182 "parser.cpp" +#line 3225 "parser.cpp" break; - case 205: // expr_path: expr_identifier -#line 785 "parser.ypp" + case 208: // expr_path: expr_identifier +#line 798 "parser.ypp" { yylhs.value.as < ast::expr_path::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < ast::expr_identifier::ptr > ()->value); } -#line 3188 "parser.cpp" +#line 3231 "parser.cpp" break; - case 206: // expr_istring: "localized string" -#line 790 "parser.ypp" + case 209: // expr_istring: "localized string" +#line 803 "parser.ypp" { yylhs.value.as < ast::expr_istring::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3194 "parser.cpp" +#line 3237 "parser.cpp" break; - case 207: // expr_string: "string literal" -#line 795 "parser.ypp" + case 210: // expr_string: "string literal" +#line 808 "parser.ypp" { yylhs.value.as < ast::expr_string::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3200 "parser.cpp" +#line 3243 "parser.cpp" break; - case 208: // expr_color: "color" -#line 800 "parser.ypp" + case 211: // expr_color: "color" +#line 813 "parser.ypp" { yylhs.value.as < ast::expr_color::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3206 "parser.cpp" +#line 3249 "parser.cpp" break; - case 209: // expr_vector: "(" expr "," expr "," expr ")" -#line 805 "parser.ypp" + case 212: // expr_vector: "(" expr "," expr "," expr ")" +#line 818 "parser.ypp" { yylhs.value.as < ast::expr_vector::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[3].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr > ())); } -#line 3212 "parser.cpp" +#line 3255 "parser.cpp" break; - case 210: // expr_float: "-" "float" -#line 810 "parser.ypp" + case 213: // expr_float: "-" "float" +#line 823 "parser.ypp" { yylhs.value.as < ast::expr_float::ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } -#line 3218 "parser.cpp" +#line 3261 "parser.cpp" break; - case 211: // expr_float: "float" -#line 812 "parser.ypp" + case 214: // expr_float: "float" +#line 825 "parser.ypp" { yylhs.value.as < ast::expr_float::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3224 "parser.cpp" +#line 3267 "parser.cpp" break; - case 212: // expr_integer: "-" "integer" -#line 817 "parser.ypp" + case 215: // expr_integer: "-" "integer" +#line 830 "parser.ypp" { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } -#line 3230 "parser.cpp" +#line 3273 "parser.cpp" break; - case 213: // expr_integer: "integer" -#line 819 "parser.ypp" + case 216: // expr_integer: "integer" +#line 832 "parser.ypp" { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3236 "parser.cpp" +#line 3279 "parser.cpp" break; - case 214: // expr_false: "false" -#line 824 "parser.ypp" + case 217: // expr_false: "false" +#line 837 "parser.ypp" { yylhs.value.as < ast::expr_false::ptr > () = std::make_unique(yylhs.location); } -#line 3242 "parser.cpp" +#line 3285 "parser.cpp" break; - case 215: // expr_true: "true" -#line 829 "parser.ypp" + case 218: // expr_true: "true" +#line 842 "parser.ypp" { yylhs.value.as < ast::expr_true::ptr > () = std::make_unique(yylhs.location); } -#line 3248 "parser.cpp" +#line 3291 "parser.cpp" break; -#line 3252 "parser.cpp" +#line 3295 "parser.cpp" default: break; @@ -3447,24 +3490,24 @@ namespace xsk { namespace gsc { namespace iw5 { "color", "float", "integer", "ADD_ARRAY", "THEN", "TERN", "NEG", "ANIMREF", "PREINC", "PREDEC", "POSTINC", "POSTDEC", "$accept", "root", "program", "inline", "include", "declaration", "decl_usingtree", - "decl_constant", "decl_thread", "stmt", "stmt_dev", "stmt_block", - "stmt_list", "stmt_expr", "stmt_call", "stmt_assign", "stmt_endon", - "stmt_notify", "stmt_wait", "stmt_waittill", "stmt_waittillmatch", - "stmt_waittillframeend", "stmt_if", "stmt_ifelse", "stmt_while", - "stmt_dowhile", "stmt_for", "stmt_foreach", "stmt_switch", "stmt_case", - "stmt_default", "stmt_break", "stmt_continue", "stmt_return", - "stmt_breakpoint", "stmt_prof_begin", "stmt_prof_end", "expr", - "expr_or_empty", "expr_assign", "expr_increment", "expr_decrement", - "expr_ternary", "expr_binary", "expr_primitive", "expr_complement", - "expr_not", "expr_call", "expr_method", "expr_function", "expr_pointer", - "expr_add_array", "expr_parameters", "expr_arguments", - "expr_arguments_no_empty", "expr_reference", "expr_array", "expr_field", - "expr_size", "expr_paren", "expr_object", "expr_thisthread", - "expr_empty_array", "expr_undefined", "expr_game", "expr_self", - "expr_anim", "expr_level", "expr_animation", "expr_animtree", - "expr_identifier", "expr_path", "expr_istring", "expr_string", - "expr_color", "expr_vector", "expr_float", "expr_integer", "expr_false", - "expr_true", YY_NULLPTR + "decl_constant", "decl_thread", "stmt", "stmt_or_dev", "stmt_list", + "stmt_or_dev_list", "stmt_dev", "stmt_block", "stmt_expr", "stmt_call", + "stmt_assign", "stmt_endon", "stmt_notify", "stmt_wait", "stmt_waittill", + "stmt_waittillmatch", "stmt_waittillframeend", "stmt_if", "stmt_ifelse", + "stmt_while", "stmt_dowhile", "stmt_for", "stmt_foreach", "stmt_switch", + "stmt_case", "stmt_default", "stmt_break", "stmt_continue", + "stmt_return", "stmt_breakpoint", "stmt_prof_begin", "stmt_prof_end", + "expr", "expr_or_empty", "expr_assign", "expr_increment", + "expr_decrement", "expr_ternary", "expr_binary", "expr_primitive", + "expr_complement", "expr_not", "expr_call", "expr_method", + "expr_function", "expr_pointer", "expr_add_array", "expr_parameters", + "expr_arguments", "expr_arguments_no_empty", "expr_reference", + "expr_array", "expr_field", "expr_size", "expr_paren", "expr_object", + "expr_thisthread", "expr_empty_array", "expr_undefined", "expr_game", + "expr_self", "expr_anim", "expr_level", "expr_animation", + "expr_animtree", "expr_identifier", "expr_path", "expr_istring", + "expr_string", "expr_color", "expr_vector", "expr_float", "expr_integer", + "expr_false", "expr_true", YY_NULLPTR }; return yy_sname[yysymbol]; } @@ -3729,518 +3772,527 @@ namespace xsk { namespace gsc { namespace iw5 { } - const short parser::yypact_ninf_ = -260; + const short parser::yypact_ninf_ = -261; - const short parser::yytable_ninf_ = -206; + const short parser::yytable_ninf_ = -209; const short parser::yypact_[] = { - 8, -260, -260, -69, -69, -3, -260, 26, 8, -260, - -260, -260, -260, -260, -260, -41, -260, -260, -4, -2, - -39, -260, -260, -260, -260, -33, 1116, -260, -260, -260, - 14, -25, -260, -260, -48, -13, -260, 20, -260, -260, - -260, -260, -260, -260, -260, 1116, 986, -33, 1116, 1116, - -87, -29, -260, -260, -260, -260, 2030, -260, -260, -260, - -260, -260, 465, 533, -260, -260, -260, -260, 567, 616, - -260, -260, 645, -260, -260, -260, 669, 677, 1024, 1089, - -260, -260, 28, 17, -260, -260, -260, -260, -260, -260, - -260, -260, 51, 48, -33, 60, 70, 72, 83, 91, - 81, 96, 1316, 986, -260, 2113, 45, 99, -260, -260, - -260, -260, -260, -260, -260, 1116, 1116, 1116, 1116, 1116, - 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, - 1116, 1116, 1116, 1116, -260, 1181, -33, -260, -260, -260, - 106, 100, 1116, -33, -260, 775, -260, -260, 1116, 1116, - -33, 1116, 1116, -33, 1116, -260, 1116, 1760, 1116, -260, - 1995, 108, 108, 2144, 1172, 150, 150, 69, 69, 69, - 69, 2154, 981, 1107, 35, 35, -260, -260, -260, 1800, - -260, -33, -1, -260, 107, 821, 1116, 105, 118, 959, - 120, 122, 124, 125, -21, 117, 123, 126, 1051, 127, - 132, 141, -260, 140, 384, 384, -260, -260, -260, 867, - -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, - -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, - -260, -260, -260, 136, 145, 146, 147, 149, -260, -260, - 1230, -260, -260, -260, -260, -6, 1840, 39, 161, 1880, - 40, 166, 1920, 1959, 170, 2113, 1116, -260, 107, -260, - 1116, -260, 913, 2065, -260, 1116, 152, 1116, -9, -33, - 1116, 133, 169, 177, -260, -260, -260, -260, 2100, -260, - 1116, 1116, 1116, -260, -260, 22, 22, -260, -260, -260, - -260, -260, -260, -260, 187, 188, 195, 196, -260, -260, - 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, - 1116, 194, -260, 1116, 197, -260, 1116, 198, 1116, 200, - 2113, 41, -260, -260, 1482, 201, 1516, 199, -260, -260, - -260, 1279, -5, 1550, -260, -260, -260, 43, 47, 1760, - 1116, 1116, 1116, 1116, 2113, 2113, 2113, 2113, 2113, 2113, - 2113, 2113, 2113, 2113, 2113, 206, 53, 207, 57, 208, - 1584, 1116, -260, 959, 1116, 959, 1116, 1116, -33, 48, - 202, 203, 1618, 1360, 1404, 1448, 1116, -260, 1116, -260, - 1116, -260, 59, 224, 1652, -260, 2113, 205, 1686, 232, - -260, -260, -260, 209, 211, 1116, 213, 1116, 214, 1116, - 87, 89, 113, -260, 959, 215, -9, 959, 1116, -260, - -260, 227, -260, 228, -260, 230, -260, -260, -260, -260, - -260, 235, -260, 1720, 223, 229, 231, 959, 959, -260, - -260, -260, -260, -260 + 8, -261, -261, -33, -33, -20, -261, 14, 8, -261, + -261, -261, -261, -261, -261, -36, -261, -261, -43, -19, + -63, -261, -261, -261, -261, -46, 932, -261, -261, -261, + 10, -28, -261, -261, -49, -27, -261, 5, -261, -261, + -261, -261, -261, -261, -261, 932, 802, -46, 932, 932, + 7, -15, -261, -261, -261, -261, 2012, -261, -261, -261, + -261, -261, 133, 340, -261, -261, -261, -261, 523, 600, + -261, -261, 674, -261, -261, -261, 840, 905, 970, 1168, + -261, -261, 27, 18, -261, -261, -261, -261, -261, -261, + -261, -261, 28, 64, -46, 75, 80, 78, 83, 88, + 82, 87, 1298, 802, -261, 2095, 89, 91, -261, -261, + -261, -261, -261, -261, -261, 932, 932, 932, 932, 932, + 932, 932, 932, 932, 932, 932, 932, 932, 932, 932, + 932, 932, 932, 932, -261, 997, -46, -261, -261, -261, + 93, 92, 932, -46, -261, 65, -261, -261, 932, 932, + -46, 932, 932, -46, 932, -261, 932, 1742, 932, -261, + 1977, 66, 66, 989, 2126, 1156, 1156, 191, 191, 191, + 191, 2136, 797, 2167, 40, 40, -261, -261, -261, 1782, + -261, -46, -25, -261, 113, 1089, 932, 104, 115, 1256, + 118, 119, 126, 127, -66, 122, 125, 129, 867, 131, + 136, 142, -261, 140, 205, 205, -261, -261, 775, -261, + -261, -261, -261, -261, -261, -261, -261, -261, -261, -261, + -261, -261, -261, -261, -261, -261, -261, -261, -261, -261, + -261, -261, -261, -261, 135, 141, 145, 146, 148, -261, + -261, 1176, -261, -261, -261, -261, -21, 1822, -12, 150, + 1862, -6, 159, 1902, 1941, 155, 2095, 932, -261, 113, + -261, 932, -261, -261, 1135, 2047, -261, 932, 171, 932, + 586, -46, 932, 109, 158, 164, -261, -261, -261, -261, + 2082, -261, 932, 932, 932, -261, -261, 663, 663, -261, + -261, -261, -261, -261, -261, -261, 168, 174, 175, 177, + -261, -261, 932, 932, 932, 932, 932, 932, 932, 932, + 932, 932, 932, 176, -261, 932, 181, -261, 932, 184, + 932, 192, 2095, -2, -261, -261, -261, 1464, 195, 1498, + 154, -261, -261, -261, 1260, -18, 1532, -261, -261, -261, + 2, 4, 1742, 932, 932, 932, 932, 2095, 2095, 2095, + 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 197, 11, + 198, 22, 200, 1566, 932, -261, 1256, 932, 1256, 932, + 932, -46, 64, 201, 202, 1600, 1342, 1386, 1430, 932, + -261, 932, -261, 932, -261, 23, 218, 1634, -261, 2095, + 211, 1668, 229, -261, -261, -261, 213, 215, 932, 216, + 932, 219, 932, 59, 69, 70, -261, 1256, 228, 586, + 1256, 932, -261, -261, 209, -261, 214, -261, 238, -261, + -261, -261, -261, -261, 239, -261, 1702, 231, 233, 234, + 1256, 1256, -261, -261, -261, -261, -261 }; const unsigned char parser::yydefact_[] = { - 3, 12, 13, 0, 0, 0, 203, 0, 2, 7, - 8, 9, 14, 15, 16, 0, 204, 205, 0, 0, - 0, 1, 4, 5, 6, 173, 0, 10, 11, 207, - 0, 0, 172, 202, 0, 0, 194, 0, 215, 214, - 196, 197, 198, 199, 200, 0, 175, 0, 0, 0, - 0, 0, 206, 208, 211, 213, 0, 87, 88, 89, - 126, 127, 128, 129, 156, 157, 130, 131, 132, 133, - 134, 135, 0, 136, 137, 138, 139, 140, 141, 142, - 143, 144, 145, 0, 146, 147, 148, 149, 150, 151, - 152, 153, 0, 0, 0, 0, 205, 0, 0, 205, - 0, 0, 0, 175, 195, 177, 0, 174, 178, 155, - 154, 210, 212, 201, 18, 0, 0, 0, 0, 0, + 3, 12, 13, 0, 0, 0, 206, 0, 2, 7, + 8, 9, 14, 15, 16, 0, 207, 208, 0, 0, + 0, 1, 4, 5, 6, 176, 0, 10, 11, 210, + 0, 0, 175, 205, 0, 0, 197, 0, 218, 217, + 199, 200, 201, 202, 203, 0, 178, 0, 0, 0, + 0, 0, 209, 211, 214, 216, 0, 90, 91, 92, + 129, 130, 131, 132, 159, 160, 133, 134, 135, 136, + 137, 138, 0, 139, 140, 141, 142, 143, 144, 145, + 146, 147, 148, 0, 149, 150, 151, 152, 153, 154, + 155, 156, 0, 0, 0, 0, 208, 0, 0, 208, + 0, 0, 0, 178, 198, 180, 0, 177, 181, 158, + 157, 213, 215, 204, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 183, 0, 0, 182, 158, 159, - 205, 0, 175, 0, 17, 0, 19, 171, 0, 175, - 0, 0, 175, 0, 0, 184, 0, 177, 0, 170, - 0, 119, 120, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 117, 118, 121, 122, 123, 124, 125, 0, - 181, 0, 0, 174, 179, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 186, 0, 0, 185, 161, 162, + 208, 0, 178, 0, 17, 0, 19, 174, 0, 178, + 0, 0, 178, 0, 0, 187, 0, 180, 0, 173, + 0, 122, 123, 111, 112, 113, 114, 115, 116, 117, + 118, 119, 120, 121, 124, 125, 126, 127, 128, 0, + 184, 0, 0, 177, 182, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 48, 0, 0, 0, 50, 20, 21, 0, - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, - 42, 43, 44, 0, 0, 0, 185, 186, 187, 188, - 0, 189, 190, 191, 192, 193, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 176, 0, 180, 0, 160, - 175, 46, 0, 0, 68, 0, 0, 0, 54, 0, - 0, 0, 0, 0, 79, 80, 81, 83, 0, 84, - 175, 175, 0, 185, 186, 103, 105, 47, 49, 57, - 58, 59, 55, 56, 0, 0, 0, 0, 104, 106, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 162, 175, 0, 164, 175, 0, 0, 0, - 107, 0, 45, 63, 0, 0, 0, 0, 51, 52, - 53, 0, 0, 0, 78, 77, 82, 0, 0, 0, - 0, 0, 0, 0, 92, 98, 99, 100, 101, 102, - 93, 94, 95, 97, 96, 0, 0, 0, 0, 0, - 0, 175, 161, 0, 0, 0, 91, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 175, 163, 175, 165, - 175, 209, 0, 69, 0, 71, 90, 0, 0, 0, - 76, 85, 86, 0, 0, 175, 0, 175, 0, 175, - 0, 0, 0, 166, 0, 0, 54, 0, 0, 60, - 62, 174, 65, 174, 67, 174, 167, 168, 169, 70, - 72, 0, 74, 0, 0, 0, 0, 0, 0, 61, - 64, 66, 73, 75 + 0, 0, 53, 0, 0, 0, 44, 49, 0, 45, + 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, + 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 0, 0, 0, 188, 189, 190, + 191, 0, 192, 193, 194, 195, 196, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 179, 0, 183, 0, + 163, 178, 51, 47, 0, 0, 71, 0, 0, 0, + 57, 0, 0, 0, 0, 0, 82, 83, 84, 86, + 0, 87, 178, 178, 0, 188, 189, 106, 108, 52, + 48, 60, 61, 62, 58, 59, 0, 0, 0, 0, + 107, 109, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 165, 178, 0, 167, 178, 0, + 0, 0, 110, 0, 50, 46, 66, 0, 0, 0, + 0, 54, 55, 56, 0, 0, 0, 81, 80, 85, + 0, 0, 0, 0, 0, 0, 0, 95, 101, 102, + 103, 104, 105, 96, 97, 98, 100, 99, 0, 0, + 0, 0, 0, 0, 178, 164, 0, 0, 0, 94, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 178, + 166, 178, 168, 178, 212, 0, 72, 0, 74, 93, + 0, 0, 0, 79, 88, 89, 0, 0, 178, 0, + 178, 0, 178, 0, 0, 0, 169, 0, 0, 57, + 0, 0, 63, 65, 177, 68, 177, 70, 177, 170, + 171, 172, 73, 75, 0, 77, 0, 0, 0, 0, + 0, 0, 64, 67, 69, 76, 78 }; const short parser::yypgoto_[] = { - -260, -260, -260, 259, 281, 288, -260, -260, -260, -172, - -260, -91, 112, -108, -260, -260, -260, -260, -260, -260, - -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, - -260, -260, -260, -260, -260, -260, -260, 185, -260, -259, - -257, -250, -260, -260, -260, -260, -260, -82, -72, -66, - -58, -260, -260, 321, -45, -260, -37, 192, -260, -260, - 240, -260, -260, -260, 253, 327, 355, 365, -260, -260, - 0, 9, -260, -15, -260, -260, -260, 129, -260, -260 + -261, -261, -261, 260, 292, 293, -261, -261, -261, -132, + 96, -261, -261, -261, -91, -85, -261, -261, -261, -261, + -261, -261, -261, -261, -261, -261, -261, -261, -261, -261, + -261, -261, -261, -261, -261, -261, -261, -261, -261, 190, + -261, -260, -254, -253, -261, -261, -261, -261, -261, -37, + -5, -67, -65, -261, -261, 412, -45, -261, 207, 244, + -261, -261, 256, -261, -261, -261, 261, 333, 338, 343, + -261, -261, 0, 9, -261, -11, -261, -261, -261, 132, + -261, -261 }; const short parser::yydefgoto_[] = { 0, 7, 8, 9, 10, 11, 12, 13, 14, 206, - 207, 208, 209, 327, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, - 226, 227, 228, 229, 230, 231, 232, 105, 387, 233, - 234, 235, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 31, 106, 183, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91 + 207, 264, 208, 209, 210, 330, 211, 212, 213, 214, + 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 227, 228, 229, 230, 231, 232, 233, 105, + 390, 234, 235, 236, 57, 58, 59, 60, 61, 62, + 63, 64, 65, 66, 31, 106, 183, 67, 68, 69, + 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, + 90, 91 }; const short parser::yytable_[] = { - 15, 107, 146, 17, 17, 30, 138, 95, 15, 328, - 25, 329, 18, 19, 139, 111, 112, 266, 330, 1, - 2, 3, 4, 5, 367, 32, 21, 93, 16, 6, - 34, 35, 94, 37, 96, 99, 26, 288, 41, 42, - 43, 44, 98, 97, 100, 142, 203, 108, 20, 16, - 6, 259, 368, -205, 204, 205, 158, 27, 107, 28, - 29, 34, 35, 236, 37, 6, 92, -193, -193, 113, - -193, 271, 140, 237, -193, 101, 143, 135, 29, 142, - 136, 141, 55, -193, 16, 6, -193, -205, 16, 6, - 288, 312, 315, 362, 147, 370, 158, 158, 158, 371, - 158, 145, 158, 236, 158, 377, 6, 236, 238, 379, - 158, 403, 144, 237, 158, 148, 158, 237, 137, 16, - 6, 149, 283, 283, -193, -193, -193, 236, 131, 132, - 133, 150, 284, 284, 116, 117, 180, 237, 151, 416, - 153, 417, 152, 184, 158, 245, 158, 328, 238, 329, - 248, 154, 238, 251, 141, 159, 330, 142, 260, 181, - 129, 130, 131, 132, 133, 418, 264, 238, 238, 265, - 158, 267, 238, 268, 138, 269, 270, 274, 325, 272, - 236, 258, 139, 280, 275, 245, 283, 276, 279, 245, - 237, 383, 281, 385, 141, 282, 284, 289, 141, 129, - 130, 131, 132, 133, 245, 245, 290, 291, 292, 245, - 293, 56, 313, 141, 141, 116, 117, 316, 141, 138, - 138, 122, 123, 124, 125, 238, 319, 139, 139, 334, - 102, 238, 419, 109, 110, 422, 112, 335, 340, 341, - 140, 129, 130, 131, 132, 133, 342, 343, 404, 141, - 355, 361, 364, 357, 359, 432, 433, 376, 378, 380, - 366, 408, 245, 391, 392, 138, 406, 22, 245, 332, - 409, 141, 410, 139, 412, 414, 420, 141, 390, 424, - 425, 236, 426, 236, 429, 140, 140, 427, 157, 23, - 430, 237, 431, 237, 141, 141, 24, 262, 421, 0, - 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 0, - 179, 0, 236, 273, 283, 236, 238, 0, 238, 0, - 0, 140, 237, 246, 284, 237, 249, 239, 0, 252, - 141, 253, 0, 255, 0, 236, 236, 0, 0, 0, - 411, 0, 413, 0, 415, 237, 237, 0, 0, 0, - 0, 0, 0, 245, 0, 245, 0, 238, 389, 238, - 238, 263, 141, 0, 141, 0, 0, 239, 0, 0, - 0, 239, 0, 278, 0, 240, 0, 0, 0, 0, - 238, 238, 0, 0, 0, 0, 239, 239, 241, 0, - 0, 239, 0, 0, 245, 0, 245, 245, 0, 0, - 0, 0, 0, 141, 0, 141, 141, 0, 0, 0, - 0, 0, 0, 34, 35, 240, 37, 245, 245, 240, - 0, 41, 42, 43, 44, 0, 141, 141, 241, 203, - 0, 320, 241, 0, 285, 286, 0, 0, 0, 240, - 324, 0, 326, 0, 239, 333, 0, 241, 241, 0, - 239, 0, 241, 182, 0, 0, 0, 339, 0, 0, - 247, 0, 242, 250, 0, 0, 0, 0, 0, 0, - 0, 16, 6, 0, 0, 344, 345, 346, 347, 348, - 349, 350, 351, 352, 353, 354, 0, 0, 0, 0, - 243, 0, 240, 360, -185, -185, 0, -185, 331, 0, - 244, -185, 242, 0, 0, 241, 242, 0, 0, 0, - -185, 241, 0, -185, 0, 372, 373, 374, 375, 0, - 0, 242, 242, 0, 0, 0, 242, 0, 0, 0, - 243, 0, 0, 0, 243, 0, 0, 0, 0, 384, - 244, 386, 388, 0, 244, 239, 0, 239, 0, 243, - 243, -185, -185, -185, 243, 0, 0, 0, 0, 244, - 244, 0, -186, -186, 244, -186, 0, 0, 0, -186, - 0, 321, 0, 0, 0, 0, 0, 0, -186, 242, - 0, -186, 0, 423, 0, 242, 239, 0, 239, 239, - 0, 337, 338, 240, 0, 240, -187, -187, 0, -187, - 0, 0, 0, -187, 0, 0, 241, 243, 241, 239, - 239, 0, -187, 243, 0, -187, 0, 244, 0, -186, - -186, -186, 0, 244, 356, 0, 0, 358, 0, 0, - 0, 0, 0, 0, 240, 0, 331, 240, 0, 0, - 0, 0, 0, 0, 0, -188, -188, 241, -188, 241, - 241, 0, -188, -187, -187, -187, 0, 240, 240, 0, - 0, -188, 0, 0, -188, 0, 0, 0, 0, 0, - 241, 241, 382, 0, 34, 35, 0, 37, 0, 0, - 242, 134, 242, 0, 0, 0, 0, 400, 0, 401, - 135, 402, 0, 136, 0, 0, 0, 0, -189, -189, - 0, -189, -188, -188, -188, -189, -190, -190, 243, -190, - 243, 0, 0, -190, -189, 0, 0, -189, 244, 0, - 244, 242, -190, 242, 242, -190, 0, 0, 0, 0, - 0, 137, 16, 6, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 242, 242, 0, 0, 0, 243, - 0, 243, 243, 0, 0, -189, -189, -189, 0, 244, - 0, 244, 244, -190, -190, -190, 0, 0, 0, 0, - 0, 0, 243, 243, 0, 0, 185, 0, 0, 0, - 0, 0, 244, 244, 186, 0, 0, 187, 188, 0, + 15, 107, 146, 17, 17, 138, 95, 139, 15, 30, + 331, 370, 18, 19, 21, 25, 332, 333, 27, 1, + 2, 3, 4, 5, 93, 32, 273, 260, 98, 94, + 142, 20, 158, 29, 96, 99, 29, 55, -208, 371, + 314, 26, 28, 97, 100, 158, 317, 108, 16, 6, + 365, 158, 6, 263, 373, 158, 374, 268, 107, 158, + 101, 158, 92, 380, 16, 6, -196, -196, 158, -196, + 16, 6, 140, -196, 382, 406, 185, 143, 142, 158, + 158, 141, -196, 113, 186, -196, -208, 187, 188, 144, + 189, 190, 191, 192, 147, 193, 194, 195, 196, 197, + 198, 199, 200, 201, 34, 35, 6, 37, 237, 111, + 112, 419, 41, 42, 43, 44, 158, 145, 145, 202, + 203, 420, 421, -196, -196, -196, 158, 158, 204, 205, + 148, 149, 325, 131, 132, 133, 180, 150, 151, 152, + 238, 153, 154, 184, 142, 246, 158, 159, 237, 331, + 249, 181, 237, 252, 141, 332, 333, 129, 130, 131, + 132, 133, 16, 6, 261, 266, 267, 285, 285, 269, + 270, 237, -188, -188, 138, -188, 139, 271, 272, -188, + 238, 259, 276, 274, 238, 246, 277, 282, -188, 246, + 278, -188, 281, 283, 141, 284, 291, 328, 141, 286, + 286, 315, 292, 238, 246, 246, 293, 294, 246, 295, + 318, 321, 112, 141, 141, 369, 56, 141, 337, 343, + 138, 138, 139, 139, 338, 344, 345, 237, 346, -188, + -188, -188, 358, 285, 386, 102, 388, 360, 109, 110, + 362, 140, 407, 364, 34, 35, 367, 37, 379, 381, + 141, 383, 41, 42, 43, 44, 116, 117, 411, 238, + 203, 427, 394, 395, 246, 286, 428, 138, 22, 139, + 246, 335, 409, 141, 412, 422, 413, 415, 425, 141, + 417, 393, 129, 130, 131, 132, 133, 140, 140, 423, + 429, 430, 432, 157, 433, 434, 141, 141, 435, 436, + 23, 24, 16, 6, 290, 160, 161, 162, 163, 164, + 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, + 175, 176, 177, 178, 424, 179, 275, 0, 0, 237, + 0, 237, 0, 0, 140, 0, 0, 0, 247, 0, + 0, 250, 0, 141, 253, 0, 254, 0, 256, 0, + 0, 0, 239, 414, 0, 416, 0, 418, 0, 0, + 0, 238, 0, 238, 0, 0, 246, 0, 246, 0, + 237, 392, 285, 237, 0, 141, 265, 141, 0, -189, + -189, 0, -189, 0, 0, 0, -189, 0, 280, 240, + 0, 0, 239, 237, 237, -189, 239, 0, -189, 0, + 0, 241, 238, 0, 286, 238, 242, 246, 0, 246, + 246, 239, 239, 0, 0, 239, 141, 0, 141, 141, + 0, 0, 0, 0, 0, 238, 238, 0, 0, 240, + 246, 246, 0, 240, 0, 0, -189, -189, -189, 141, + 141, 241, 0, 0, 0, 241, 242, 322, 240, 240, + 242, 0, 240, 0, 0, 0, 0, 327, 0, 329, + 287, 288, 336, 0, 241, 242, 242, 0, 0, 242, + 0, 239, 0, 0, 342, 0, 0, 239, 243, 0, + 0, 0, 0, 244, 0, 0, 0, 0, 245, 0, + 0, 0, 347, 348, 349, 350, 351, 352, 353, 354, + 355, 356, 357, 0, 0, 0, 0, 0, 240, 0, + 363, 0, 0, 0, 240, 0, 0, 0, 243, 0, + 241, 0, 243, 244, 0, 242, 334, 244, 245, 0, + 0, 242, 245, 375, 376, 377, 378, 243, 243, 0, + 0, 243, 244, 244, 0, 0, 244, 245, 245, 0, + 0, 245, 0, 0, 182, 0, 0, 387, 0, 389, + 391, 248, -190, -190, 251, -190, 0, 0, 0, -190, + 0, 0, 0, 239, 0, 239, 0, 0, -190, 0, + 0, -190, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 243, 0, 0, + 0, 426, 244, 243, 0, 0, 0, 245, 244, 0, + 240, 0, 240, 245, 239, 0, 239, 239, 0, -190, + -190, -190, 241, 0, 241, 34, 35, 242, 37, 242, + 0, 0, 0, 41, 42, 43, 44, 239, 239, -191, + -191, 203, -191, 0, 0, 0, -191, 0, 0, 204, + 205, 240, 0, 240, 240, -191, 0, 0, -191, 0, + 0, 0, 0, 241, 0, 334, 241, 0, 242, 0, + 242, 242, 0, 323, 240, 240, 0, 0, 0, 0, + 0, 0, 0, 16, 6, 0, 241, 241, 0, 0, + 0, 242, 242, 0, 340, 341, -191, -191, -191, 243, + 0, 243, 34, 35, 244, 37, 244, 0, 0, 245, + 0, 245, 0, 34, 35, 0, 37, 0, 135, 0, + 134, 136, 0, 0, 0, 0, 0, 359, 0, 135, + 361, 0, 136, 0, 0, 0, 0, 0, 0, 0, + 243, 0, 243, 243, 0, 244, 0, 244, 244, 0, + 245, 0, 245, 245, 0, 0, 0, 0, 0, 137, + 16, 6, 0, 243, 243, 0, 0, 0, 244, 244, + 137, 16, 6, 245, 245, 0, 385, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 185, 0, 0, 0, + 0, 403, 0, 404, 186, 405, 0, 187, 188, 0, 189, 190, 191, 192, 0, 193, 194, 195, 196, 197, - 198, 199, 200, 201, 34, 35, 0, 37, 0, 0, - 0, 0, 41, 42, 43, 44, 0, 0, 145, 202, - 203, 0, 185, 261, 0, 0, 0, 0, 204, 205, - 186, 0, 0, 187, 188, 0, 189, 190, 191, 192, - 0, 193, 194, 195, 196, 197, 198, 199, 200, 201, - 34, 35, 0, 37, 0, 0, 0, 0, 41, 42, - 43, 44, 16, 6, 145, 0, 203, 0, 185, 0, - 0, 0, 0, 0, 204, 205, 186, 0, 0, 187, - 188, 0, 189, 190, 191, 192, 0, 193, 194, 195, - 196, 197, 198, 199, 200, 201, 34, 35, 0, 37, - 0, 0, 0, 0, 41, 42, 43, 44, 16, 6, - 145, 287, 203, 0, 185, 322, 0, 0, 0, 0, - 204, 205, 186, 0, 0, 187, 188, 0, 189, 190, - 191, 192, 0, 193, 194, 195, 196, 197, 198, 199, - 200, 201, 34, 35, 0, 37, 0, 0, 0, 0, - 41, 42, 43, 44, 16, 6, 145, 0, 203, 0, - 185, 0, 0, 0, 0, 0, 204, 205, 186, 0, + 198, 199, 200, 201, 34, 35, 0, 37, 33, 0, + 0, 0, 41, 42, 43, 44, 0, 0, 145, 289, + 203, 0, 0, 0, 0, 0, 0, 0, 204, 205, + 0, 34, 35, 36, 37, 38, 39, 40, 0, 41, + 42, 43, 44, 45, 0, 0, 0, 103, 104, 0, + 0, 47, 116, 117, 0, 0, 120, 121, 122, 123, + 124, 125, 16, 6, 0, 0, 0, 48, 49, -192, + -192, 0, -192, 33, 0, 0, -192, 0, 129, 130, + 131, 132, 133, 0, 50, -192, 0, 51, -192, 16, + 6, 29, 52, 53, 54, 55, 34, 35, 36, 37, + 38, 39, 40, 0, 41, 42, 43, 44, 45, 0, + 0, 0, 46, 0, 0, 0, 47, 0, 279, 0, + 0, 0, 0, 0, 0, 0, -192, -192, -192, 0, + 0, 0, 48, 49, -193, -193, 0, -193, 33, 0, + 0, -193, 0, 0, 0, 0, 0, 0, 0, 50, + -193, 0, 51, -193, 16, 6, 29, 52, 53, 54, + 55, 34, 35, 36, 37, 38, 39, 40, 0, 41, + 42, 43, 44, 45, 0, 0, 0, 46, 0, 0, + 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, + 0, -193, -193, -193, 0, 0, 0, 48, 49, -194, + -194, 0, -194, 33, 0, 0, -194, 0, 0, 0, + 0, 0, 0, 0, 50, -194, 0, 51, -194, 16, + 6, 29, 52, 53, 54, 55, 34, 35, 36, 37, + 38, 39, 40, 0, 41, 42, 43, 44, 45, 0, + 0, 0, 103, 0, 116, 117, 47, 119, 120, 121, + 122, 123, 124, 125, 0, 0, -194, -194, -194, 0, + 0, 0, 48, 49, 0, 0, 0, 126, 127, 128, + 129, 130, 131, 132, 133, 0, 0, 0, 0, 50, + 0, 0, 51, 0, 16, 6, 29, 52, 53, 54, + 55, 262, 0, 0, 0, 0, 0, 0, 186, 0, 0, 187, 188, 0, 189, 190, 191, 192, 0, 193, 194, 195, 196, 197, 198, 199, 200, 201, 34, 35, - 0, 37, 33, 0, 0, 0, 41, 42, 43, 44, - 16, 6, 145, 0, 203, 0, 0, 0, 0, 0, - 0, 0, 204, 205, 0, 34, 35, 36, 37, 38, - 39, 40, 0, 41, 42, 43, 44, 45, 0, 0, - 0, 103, 104, 0, 0, 47, 116, 117, 0, 0, - 120, 121, 122, 123, 124, 125, 16, 6, 0, 0, - 0, 48, 49, -191, -191, 0, -191, 33, 0, 0, - -191, 0, 129, 130, 131, 132, 133, 0, 50, -191, - 0, 51, -191, 16, 6, 29, 52, 53, 54, 55, - 34, 35, 36, 37, 38, 39, 40, 0, 41, 42, - 43, 44, 45, 0, 0, 0, 46, 0, 0, 0, - 47, 0, 277, 0, 0, 0, 0, 0, 0, 0, - -191, -191, -191, 0, 0, 0, 48, 49, -192, -192, - 0, -192, 33, 0, 0, -192, 0, 0, 0, 0, - 0, 0, 0, 50, -192, 0, 51, -192, 16, 6, - 29, 52, 53, 54, 55, 34, 35, 36, 37, 38, - 39, 40, 0, 41, 42, 43, 44, 45, 0, 0, - 0, 46, 116, 117, 0, 47, 120, 121, 122, 123, - 124, 125, 0, 0, 0, -192, -192, -192, 0, 0, - 0, 48, 49, 0, 0, 0, 127, 33, 129, 130, - 131, 132, 133, 0, 0, 0, 0, 0, 50, 0, - 0, 51, 0, 16, 6, 29, 52, 53, 54, 55, - 34, 35, 36, 37, 38, 39, 40, 0, 41, 42, - 43, 44, 45, 0, 0, 0, 103, 116, 117, 0, - 47, 120, 121, 122, 123, 124, 125, 294, 295, 0, - 296, 297, 0, 0, 0, 0, 48, 49, 0, 0, - 126, 127, 128, 129, 130, 131, 132, 133, 0, 34, - 35, 0, 37, 50, 0, 0, 51, 0, 16, 6, - 29, 52, 53, 54, 55, 135, 0, 0, 136, 0, - 0, 0, 0, 298, 299, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 34, 35, - 0, 37, 0, 0, 0, 0, 137, 16, 6, 0, - 0, 0, 0, 0, 135, 0, 0, 136, 0, 0, - 0, 0, 298, 299, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 300, 301, 302, 303, - 304, 305, 306, 307, 308, 309, 310, 0, 155, 0, - 0, 0, 0, 156, 0, 137, 16, 6, 115, 0, + 0, 37, 0, 0, 0, 0, 41, 42, 43, 44, + 0, 0, 145, 0, 203, 0, 0, 324, 0, 0, + 0, 0, 204, 205, 186, 0, 0, 187, 188, 0, + 189, 190, 191, 192, 0, 193, 194, 195, 196, 197, + 198, 199, 200, 201, 34, 35, 0, 37, 0, 0, + 0, 0, 41, 42, 43, 44, 16, 6, 145, 0, + 203, 0, 0, 296, 297, 0, 298, 299, 204, 205, + 0, 0, 0, 0, 0, 0, 0, -195, -195, 0, + -195, 0, 0, 0, -195, 34, 35, 0, 37, 0, + 0, 116, 117, -195, 0, 0, -195, 122, 123, 124, + 125, 135, 16, 6, 136, 0, 0, 0, 0, 300, + 301, 0, 0, 0, 0, 0, 0, 129, 130, 131, + 132, 133, 0, 302, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 312, -195, -195, -195, 0, 0, 0, + 0, 0, 137, 16, 6, 186, 0, 0, 187, 188, + 0, 189, 190, 191, 192, 0, 193, 194, 195, 196, + 197, 198, 199, 200, 201, 34, 35, 0, 37, 34, + 35, 0, 37, 41, 42, 43, 44, 0, 0, 145, + 0, 203, 0, 0, 0, 135, 0, 0, 136, 204, + 205, 0, 0, 300, 301, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, 0, 0, + 155, 0, 0, 16, 6, 156, 137, 16, 6, 0, + 115, 0, 0, 116, 117, 118, 119, 120, 121, 122, + 123, 124, 125, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 126, 127, 128, 129, + 130, 131, 132, 133, 397, 0, 0, 0, 0, 398, + 0, 0, 0, 0, 115, 0, 0, 116, 117, 118, + 119, 120, 121, 122, 123, 124, 125, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 126, 127, 128, 129, 130, 131, 132, 133, 399, 0, + 0, 0, 0, 400, 0, 0, 0, 0, 115, 0, 0, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 126, 127, 128, 129, 130, 131, - 132, 133, 394, 0, 0, 0, 0, 395, 0, 0, + 132, 133, 401, 0, 0, 0, 0, 402, 0, 0, 0, 0, 115, 0, 0, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 126, 127, - 128, 129, 130, 131, 132, 133, 396, 0, 0, 0, - 0, 397, 0, 0, 0, 0, 115, 0, 0, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 126, 127, 128, 129, 130, 131, 132, 133, - 398, 0, 0, 0, 0, 399, 0, 0, 0, 0, - 115, 0, 0, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 363, 0, 126, 127, 128, 129, - 130, 131, 132, 133, 115, 0, 0, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 365, 0, - 126, 127, 128, 129, 130, 131, 132, 133, 115, 0, - 0, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 369, 0, 126, 127, 128, 129, 130, 131, - 132, 133, 115, 0, 0, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 381, 0, 126, 127, + 0, 0, 0, 0, 0, 0, 366, 0, 126, 127, 128, 129, 130, 131, 132, 133, 115, 0, 0, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 393, 0, 126, 127, 128, 129, 130, 131, 132, 133, + 368, 0, 126, 127, 128, 129, 130, 131, 132, 133, 115, 0, 0, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 405, 0, 126, 127, 128, 129, + 0, 0, 0, 0, 372, 0, 126, 127, 128, 129, 130, 131, 132, 133, 115, 0, 0, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 407, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 384, 0, 126, 127, 128, 129, 130, 131, 132, 133, 115, 0, 0, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 428, 0, 126, 127, 128, 129, 130, 131, + 0, 0, 396, 0, 126, 127, 128, 129, 130, 131, 132, 133, 115, 0, 0, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 126, 127, - 128, 129, 130, 131, 132, 133, 254, 0, 0, 0, - 0, 0, 115, 0, 0, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 126, 127, - 128, 129, 130, 131, 132, 133, 257, 0, 0, 0, - 0, 0, 115, 0, 0, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 126, 127, - 128, 129, 130, 131, 132, 133, 311, 0, 0, 0, - 0, 0, 115, 0, 0, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 126, 127, - 128, 129, 130, 131, 132, 133, 314, 0, 0, 0, - 0, 0, 115, 0, 0, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 126, 127, - 128, 129, 130, 131, 132, 133, 317, 0, 0, 0, - 0, 0, 115, 0, 0, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 126, 127, - 128, 129, 130, 131, 132, 133, 318, 0, 0, 0, - 0, 115, 0, 0, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 126, 127, 128, - 129, 130, 131, 132, 133, 256, 0, 115, 0, 0, - 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, + 0, 0, 0, 0, 0, 0, 408, 0, 126, 127, + 128, 129, 130, 131, 132, 133, 115, 0, 0, 116, + 117, 118, 119, 120, 121, 122, 123, 124, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 126, 127, 128, 129, 130, 131, 132, - 133, 114, 115, 0, 0, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 126, 127, - 128, 129, 130, 131, 132, 133, 323, 115, 0, 0, - 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, + 410, 0, 126, 127, 128, 129, 130, 131, 132, 133, + 115, 0, 0, 116, 117, 118, 119, 120, 121, 122, + 123, 124, 125, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 431, 0, 126, 127, 128, 129, + 130, 131, 132, 133, 115, 0, 0, 116, 117, 118, + 119, 120, 121, 122, 123, 124, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 126, 127, 128, 129, 130, 131, 132, 133, 255, 0, + 0, 0, 0, 0, 115, 0, 0, 116, 117, 118, + 119, 120, 121, 122, 123, 124, 125, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 126, 127, 128, 129, 130, 131, 132, 133, 258, 0, + 0, 0, 0, 0, 115, 0, 0, 116, 117, 118, + 119, 120, 121, 122, 123, 124, 125, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 126, 127, 128, 129, 130, 131, 132, 133, 313, 0, + 0, 0, 0, 0, 115, 0, 0, 116, 117, 118, + 119, 120, 121, 122, 123, 124, 125, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 126, 127, 128, 129, 130, 131, 132, 133, 316, 0, + 0, 0, 0, 0, 115, 0, 0, 116, 117, 118, + 119, 120, 121, 122, 123, 124, 125, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 126, 127, 128, 129, 130, 131, 132, 133, 319, 0, + 0, 0, 0, 0, 115, 0, 0, 116, 117, 118, + 119, 120, 121, 122, 123, 124, 125, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 126, 127, 128, 129, 130, 131, 132, 133, 320, 0, + 0, 0, 0, 115, 0, 0, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 126, + 127, 128, 129, 130, 131, 132, 133, 257, 0, 115, + 0, 0, 116, 117, 118, 119, 120, 121, 122, 123, + 124, 125, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 126, 127, 128, 129, 130, + 131, 132, 133, 114, 115, 0, 0, 116, 117, 118, + 119, 120, 121, 122, 123, 124, 125, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 126, 127, 128, 129, 130, 131, 132, 133, 326, 115, + 0, 0, 116, 117, 118, 119, 120, 121, 122, 123, + 124, 125, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 126, 127, 128, 129, 130, + 131, 132, 133, 339, 115, 0, 0, 116, 117, 118, + 119, 120, 121, 122, 123, 124, 125, 115, 0, 0, + 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, + 126, 127, 128, 129, 130, 131, 132, 133, 0, 0, 0, 0, 0, 126, 127, 128, 129, 130, 131, 132, - 133, 336, 115, 0, 0, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 115, 0, 0, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 0, 0, 0, 0, - 0, 126, 127, 128, 129, 130, 131, 132, 133, 116, - 117, 0, 119, 120, 121, 122, 123, 124, 125, 116, - 117, 0, 0, 120, 121, 122, 123, 124, 125, 0, - 0, 0, 126, 127, 128, 129, 130, 131, 132, 133, - 0, 0, 0, 127, 128, 129, 130, 131, 132, 133 + 133, 116, 117, 0, 0, 120, 121, 122, 123, 124, + 125, 116, 117, 0, 0, 120, 121, 122, 123, 124, + 125, 0, 0, 0, 126, 127, 128, 129, 130, 131, + 132, 133, 0, 0, 0, 127, 128, 129, 130, 131, + 132, 133, 116, 117, 0, 0, 120, 121, 122, 123, + 124, 125, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 127, 0, 129, 130, + 131, 132, 133 }; const short parser::yycheck_[] = { - 0, 46, 93, 3, 4, 20, 72, 55, 8, 268, - 51, 268, 3, 4, 72, 102, 103, 189, 268, 11, - 12, 13, 14, 15, 29, 25, 0, 52, 97, 98, - 39, 40, 57, 42, 34, 35, 77, 209, 47, 48, - 49, 50, 55, 34, 35, 51, 55, 47, 51, 97, - 98, 52, 57, 59, 63, 64, 57, 61, 103, 61, - 99, 39, 40, 145, 42, 98, 52, 39, 40, 98, - 42, 92, 72, 145, 46, 55, 59, 55, 99, 51, - 58, 72, 103, 55, 97, 98, 58, 59, 97, 98, - 262, 52, 52, 52, 94, 52, 57, 57, 57, 52, - 57, 53, 57, 185, 57, 52, 98, 189, 145, 52, - 57, 52, 61, 185, 57, 55, 57, 189, 96, 97, - 98, 51, 204, 205, 96, 97, 98, 209, 93, 94, - 95, 59, 204, 205, 65, 66, 136, 209, 55, 52, - 59, 52, 51, 143, 57, 145, 57, 406, 185, 406, - 150, 55, 189, 153, 145, 56, 406, 51, 51, 59, - 91, 92, 93, 94, 95, 52, 61, 204, 205, 51, - 57, 51, 209, 51, 240, 51, 51, 60, 26, 194, - 262, 181, 240, 51, 61, 185, 268, 61, 61, 189, - 262, 363, 51, 365, 185, 55, 268, 61, 189, 91, - 92, 93, 94, 95, 204, 205, 61, 61, 61, 209, - 61, 26, 51, 204, 205, 65, 66, 51, 209, 285, - 286, 71, 72, 73, 74, 262, 56, 285, 286, 60, - 45, 268, 404, 48, 49, 407, 103, 60, 51, 51, - 240, 91, 92, 93, 94, 95, 51, 51, 24, 240, - 56, 51, 51, 56, 56, 427, 428, 51, 51, 51, - 61, 29, 262, 61, 61, 331, 61, 8, 268, 269, - 61, 262, 61, 331, 61, 61, 61, 268, 369, 52, - 52, 363, 52, 365, 61, 285, 286, 52, 103, 8, - 61, 363, 61, 365, 285, 286, 8, 185, 406, -1, - 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, -1, - 135, -1, 404, 194, 406, 407, 363, -1, 365, -1, - -1, 331, 404, 148, 406, 407, 151, 145, -1, 154, - 331, 156, -1, 158, -1, 427, 428, -1, -1, -1, - 395, -1, 397, -1, 399, 427, 428, -1, -1, -1, - -1, -1, -1, 363, -1, 365, -1, 404, 368, 406, - 407, 186, 363, -1, 365, -1, -1, 185, -1, -1, - -1, 189, -1, 198, -1, 145, -1, -1, -1, -1, - 427, 428, -1, -1, -1, -1, 204, 205, 145, -1, - -1, 209, -1, -1, 404, -1, 406, 407, -1, -1, - -1, -1, -1, 404, -1, 406, 407, -1, -1, -1, - -1, -1, -1, 39, 40, 185, 42, 427, 428, 189, - -1, 47, 48, 49, 50, -1, 427, 428, 185, 55, - -1, 256, 189, -1, 204, 205, -1, -1, -1, 209, - 265, -1, 267, -1, 262, 270, -1, 204, 205, -1, - 268, -1, 209, 142, -1, -1, -1, 282, -1, -1, - 149, -1, 145, 152, -1, -1, -1, -1, -1, -1, - -1, 97, 98, -1, -1, 300, 301, 302, 303, 304, - 305, 306, 307, 308, 309, 310, -1, -1, -1, -1, - 145, -1, 262, 318, 39, 40, -1, 42, 268, -1, - 145, 46, 185, -1, -1, 262, 189, -1, -1, -1, - 55, 268, -1, 58, -1, 340, 341, 342, 343, -1, - -1, 204, 205, -1, -1, -1, 209, -1, -1, -1, - 185, -1, -1, -1, 189, -1, -1, -1, -1, 364, - 185, 366, 367, -1, 189, 363, -1, 365, -1, 204, - 205, 96, 97, 98, 209, -1, -1, -1, -1, 204, - 205, -1, 39, 40, 209, 42, -1, -1, -1, 46, - -1, 260, -1, -1, -1, -1, -1, -1, 55, 262, - -1, 58, -1, 408, -1, 268, 404, -1, 406, 407, - -1, 280, 281, 363, -1, 365, 39, 40, -1, 42, - -1, -1, -1, 46, -1, -1, 363, 262, 365, 427, - 428, -1, 55, 268, -1, 58, -1, 262, -1, 96, - 97, 98, -1, 268, 313, -1, -1, 316, -1, -1, - -1, -1, -1, -1, 404, -1, 406, 407, -1, -1, - -1, -1, -1, -1, -1, 39, 40, 404, 42, 406, - 407, -1, 46, 96, 97, 98, -1, 427, 428, -1, - -1, 55, -1, -1, 58, -1, -1, -1, -1, -1, - 427, 428, 361, -1, 39, 40, -1, 42, -1, -1, - 363, 46, 365, -1, -1, -1, -1, 376, -1, 378, - 55, 380, -1, 58, -1, -1, -1, -1, 39, 40, - -1, 42, 96, 97, 98, 46, 39, 40, 363, 42, - 365, -1, -1, 46, 55, -1, -1, 58, 363, -1, - 365, 404, 55, 406, 407, 58, -1, -1, -1, -1, - -1, 96, 97, 98, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 427, 428, -1, -1, -1, 404, - -1, 406, 407, -1, -1, 96, 97, 98, -1, 404, - -1, 406, 407, 96, 97, 98, -1, -1, -1, -1, - -1, -1, 427, 428, -1, -1, 11, -1, -1, -1, - -1, -1, 427, 428, 19, -1, -1, 22, 23, -1, + 0, 46, 93, 3, 4, 72, 55, 72, 8, 20, + 270, 29, 3, 4, 0, 51, 270, 270, 61, 11, + 12, 13, 14, 15, 52, 25, 92, 52, 55, 57, + 51, 51, 57, 99, 34, 35, 99, 103, 59, 57, + 52, 77, 61, 34, 35, 57, 52, 47, 97, 98, + 52, 57, 98, 185, 52, 57, 52, 189, 103, 57, + 55, 57, 52, 52, 97, 98, 39, 40, 57, 42, + 97, 98, 72, 46, 52, 52, 11, 59, 51, 57, + 57, 72, 55, 98, 19, 58, 59, 22, 23, 61, + 25, 26, 27, 28, 94, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 98, 42, 145, 102, + 103, 52, 47, 48, 49, 50, 57, 53, 53, 54, + 55, 52, 52, 96, 97, 98, 57, 57, 63, 64, + 55, 51, 264, 93, 94, 95, 136, 59, 55, 51, + 145, 59, 55, 143, 51, 145, 57, 56, 185, 409, + 150, 59, 189, 153, 145, 409, 409, 91, 92, 93, + 94, 95, 97, 98, 51, 61, 51, 204, 205, 51, + 51, 208, 39, 40, 241, 42, 241, 51, 51, 46, + 185, 181, 60, 194, 189, 185, 61, 51, 55, 189, + 61, 58, 61, 51, 185, 55, 61, 26, 189, 204, + 205, 51, 61, 208, 204, 205, 61, 61, 208, 61, + 51, 56, 103, 204, 205, 61, 26, 208, 60, 51, + 287, 288, 287, 288, 60, 51, 51, 264, 51, 96, + 97, 98, 56, 270, 366, 45, 368, 56, 48, 49, + 56, 241, 24, 51, 39, 40, 51, 42, 51, 51, + 241, 51, 47, 48, 49, 50, 65, 66, 29, 264, + 55, 52, 61, 61, 264, 270, 52, 334, 8, 334, + 270, 271, 61, 264, 61, 407, 61, 61, 410, 270, + 61, 372, 91, 92, 93, 94, 95, 287, 288, 61, + 52, 52, 61, 103, 61, 61, 287, 288, 430, 431, + 8, 8, 97, 98, 208, 115, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, + 130, 131, 132, 133, 409, 135, 194, -1, -1, 366, + -1, 368, -1, -1, 334, -1, -1, -1, 148, -1, + -1, 151, -1, 334, 154, -1, 156, -1, 158, -1, + -1, -1, 145, 398, -1, 400, -1, 402, -1, -1, + -1, 366, -1, 368, -1, -1, 366, -1, 368, -1, + 407, 371, 409, 410, -1, 366, 186, 368, -1, 39, + 40, -1, 42, -1, -1, -1, 46, -1, 198, 145, + -1, -1, 185, 430, 431, 55, 189, -1, 58, -1, + -1, 145, 407, -1, 409, 410, 145, 407, -1, 409, + 410, 204, 205, -1, -1, 208, 407, -1, 409, 410, + -1, -1, -1, -1, -1, 430, 431, -1, -1, 185, + 430, 431, -1, 189, -1, -1, 96, 97, 98, 430, + 431, 185, -1, -1, -1, 189, 185, 257, 204, 205, + 189, -1, 208, -1, -1, -1, -1, 267, -1, 269, + 204, 205, 272, -1, 208, 204, 205, -1, -1, 208, + -1, 264, -1, -1, 284, -1, -1, 270, 145, -1, + -1, -1, -1, 145, -1, -1, -1, -1, 145, -1, + -1, -1, 302, 303, 304, 305, 306, 307, 308, 309, + 310, 311, 312, -1, -1, -1, -1, -1, 264, -1, + 320, -1, -1, -1, 270, -1, -1, -1, 185, -1, + 264, -1, 189, 185, -1, 264, 270, 189, 185, -1, + -1, 270, 189, 343, 344, 345, 346, 204, 205, -1, + -1, 208, 204, 205, -1, -1, 208, 204, 205, -1, + -1, 208, -1, -1, 142, -1, -1, 367, -1, 369, + 370, 149, 39, 40, 152, 42, -1, -1, -1, 46, + -1, -1, -1, 366, -1, 368, -1, -1, 55, -1, + -1, 58, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 264, -1, -1, + -1, 411, 264, 270, -1, -1, -1, 264, 270, -1, + 366, -1, 368, 270, 407, -1, 409, 410, -1, 96, + 97, 98, 366, -1, 368, 39, 40, 366, 42, 368, + -1, -1, -1, 47, 48, 49, 50, 430, 431, 39, + 40, 55, 42, -1, -1, -1, 46, -1, -1, 63, + 64, 407, -1, 409, 410, 55, -1, -1, 58, -1, + -1, -1, -1, 407, -1, 409, 410, -1, 407, -1, + 409, 410, -1, 261, 430, 431, -1, -1, -1, -1, + -1, -1, -1, 97, 98, -1, 430, 431, -1, -1, + -1, 430, 431, -1, 282, 283, 96, 97, 98, 366, + -1, 368, 39, 40, 366, 42, 368, -1, -1, 366, + -1, 368, -1, 39, 40, -1, 42, -1, 55, -1, + 46, 58, -1, -1, -1, -1, -1, 315, -1, 55, + 318, -1, 58, -1, -1, -1, -1, -1, -1, -1, + 407, -1, 409, 410, -1, 407, -1, 409, 410, -1, + 407, -1, 409, 410, -1, -1, -1, -1, -1, 96, + 97, 98, -1, 430, 431, -1, -1, -1, 430, 431, + 96, 97, 98, 430, 431, -1, 364, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 11, -1, -1, -1, + -1, 379, -1, 381, 19, 383, -1, 22, 23, -1, 25, 26, 27, 28, -1, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, -1, 42, -1, -1, + 35, 36, 37, 38, 39, 40, -1, 42, 16, -1, -1, -1, 47, 48, 49, 50, -1, -1, 53, 54, - 55, -1, 11, 12, -1, -1, -1, -1, 63, 64, - 19, -1, -1, 22, 23, -1, 25, 26, 27, 28, - -1, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, -1, 42, -1, -1, -1, -1, 47, 48, - 49, 50, 97, 98, 53, -1, 55, -1, 11, -1, - -1, -1, -1, -1, 63, 64, 19, -1, -1, 22, - 23, -1, 25, 26, 27, 28, -1, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, -1, 42, - -1, -1, -1, -1, 47, 48, 49, 50, 97, 98, - 53, 54, 55, -1, 11, 12, -1, -1, -1, -1, - 63, 64, 19, -1, -1, 22, 23, -1, 25, 26, - 27, 28, -1, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, -1, 42, -1, -1, -1, -1, - 47, 48, 49, 50, 97, 98, 53, -1, 55, -1, - 11, -1, -1, -1, -1, -1, 63, 64, 19, -1, + 55, -1, -1, -1, -1, -1, -1, -1, 63, 64, + -1, 39, 40, 41, 42, 43, 44, 45, -1, 47, + 48, 49, 50, 51, -1, -1, -1, 55, 56, -1, + -1, 59, 65, 66, -1, -1, 69, 70, 71, 72, + 73, 74, 97, 98, -1, -1, -1, 75, 76, 39, + 40, -1, 42, 16, -1, -1, 46, -1, 91, 92, + 93, 94, 95, -1, 92, 55, -1, 95, 58, 97, + 98, 99, 100, 101, 102, 103, 39, 40, 41, 42, + 43, 44, 45, -1, 47, 48, 49, 50, 51, -1, + -1, -1, 55, -1, -1, -1, 59, -1, 61, -1, + -1, -1, -1, -1, -1, -1, 96, 97, 98, -1, + -1, -1, 75, 76, 39, 40, -1, 42, 16, -1, + -1, 46, -1, -1, -1, -1, -1, -1, -1, 92, + 55, -1, 95, 58, 97, 98, 99, 100, 101, 102, + 103, 39, 40, 41, 42, 43, 44, 45, -1, 47, + 48, 49, 50, 51, -1, -1, -1, 55, -1, -1, + -1, 59, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 96, 97, 98, -1, -1, -1, 75, 76, 39, + 40, -1, 42, 16, -1, -1, 46, -1, -1, -1, + -1, -1, -1, -1, 92, 55, -1, 95, 58, 97, + 98, 99, 100, 101, 102, 103, 39, 40, 41, 42, + 43, 44, 45, -1, 47, 48, 49, 50, 51, -1, + -1, -1, 55, -1, 65, 66, 59, 68, 69, 70, + 71, 72, 73, 74, -1, -1, 96, 97, 98, -1, + -1, -1, 75, 76, -1, -1, -1, 88, 89, 90, + 91, 92, 93, 94, 95, -1, -1, -1, -1, 92, + -1, -1, 95, -1, 97, 98, 99, 100, 101, 102, + 103, 12, -1, -1, -1, -1, -1, -1, 19, -1, -1, 22, 23, -1, 25, 26, 27, 28, -1, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - -1, 42, 16, -1, -1, -1, 47, 48, 49, 50, - 97, 98, 53, -1, 55, -1, -1, -1, -1, -1, - -1, -1, 63, 64, -1, 39, 40, 41, 42, 43, - 44, 45, -1, 47, 48, 49, 50, 51, -1, -1, - -1, 55, 56, -1, -1, 59, 65, 66, -1, -1, - 69, 70, 71, 72, 73, 74, 97, 98, -1, -1, - -1, 75, 76, 39, 40, -1, 42, 16, -1, -1, - 46, -1, 91, 92, 93, 94, 95, -1, 92, 55, - -1, 95, 58, 97, 98, 99, 100, 101, 102, 103, - 39, 40, 41, 42, 43, 44, 45, -1, 47, 48, - 49, 50, 51, -1, -1, -1, 55, -1, -1, -1, - 59, -1, 61, -1, -1, -1, -1, -1, -1, -1, - 96, 97, 98, -1, -1, -1, 75, 76, 39, 40, - -1, 42, 16, -1, -1, 46, -1, -1, -1, -1, - -1, -1, -1, 92, 55, -1, 95, 58, 97, 98, - 99, 100, 101, 102, 103, 39, 40, 41, 42, 43, - 44, 45, -1, 47, 48, 49, 50, 51, -1, -1, - -1, 55, 65, 66, -1, 59, 69, 70, 71, 72, - 73, 74, -1, -1, -1, 96, 97, 98, -1, -1, - -1, 75, 76, -1, -1, -1, 89, 16, 91, 92, - 93, 94, 95, -1, -1, -1, -1, -1, 92, -1, - -1, 95, -1, 97, 98, 99, 100, 101, 102, 103, - 39, 40, 41, 42, 43, 44, 45, -1, 47, 48, - 49, 50, 51, -1, -1, -1, 55, 65, 66, -1, - 59, 69, 70, 71, 72, 73, 74, 17, 18, -1, - 20, 21, -1, -1, -1, -1, 75, 76, -1, -1, - 88, 89, 90, 91, 92, 93, 94, 95, -1, 39, - 40, -1, 42, 92, -1, -1, 95, -1, 97, 98, - 99, 100, 101, 102, 103, 55, -1, -1, 58, -1, - -1, -1, -1, 63, 64, -1, -1, -1, -1, -1, + -1, 42, -1, -1, -1, -1, 47, 48, 49, 50, + -1, -1, 53, -1, 55, -1, -1, 12, -1, -1, + -1, -1, 63, 64, 19, -1, -1, 22, 23, -1, + 25, 26, 27, 28, -1, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, -1, 42, -1, -1, + -1, -1, 47, 48, 49, 50, 97, 98, 53, -1, + 55, -1, -1, 17, 18, -1, 20, 21, 63, 64, + -1, -1, -1, -1, -1, -1, -1, 39, 40, -1, + 42, -1, -1, -1, 46, 39, 40, -1, 42, -1, + -1, 65, 66, 55, -1, -1, 58, 71, 72, 73, + 74, 55, 97, 98, 58, -1, -1, -1, -1, 63, + 64, -1, -1, -1, -1, -1, -1, 91, 92, 93, + 94, 95, -1, 77, 78, 79, 80, 81, 82, 83, + 84, 85, 86, 87, 96, 97, 98, -1, -1, -1, + -1, -1, 96, 97, 98, 19, -1, -1, 22, 23, + -1, 25, 26, 27, 28, -1, 30, 31, 32, 33, + 34, 35, 36, 37, 38, 39, 40, -1, 42, 39, + 40, -1, 42, 47, 48, 49, 50, -1, -1, 53, + -1, 55, -1, -1, -1, 55, -1, -1, 58, 63, + 64, -1, -1, 63, 64, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 39, 40, - -1, 42, -1, -1, -1, -1, 96, 97, 98, -1, - -1, -1, -1, -1, 55, -1, -1, 58, -1, -1, - -1, -1, 63, 64, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 77, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, -1, 52, -1, - -1, -1, -1, 57, -1, 96, 97, 98, 62, -1, + 80, 81, 82, 83, 84, 85, 86, 87, -1, -1, + 52, -1, -1, 97, 98, 57, 96, 97, 98, -1, + 62, -1, -1, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 88, 89, 90, 91, + 92, 93, 94, 95, 52, -1, -1, -1, -1, 57, + -1, -1, -1, -1, 62, -1, -1, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 88, 89, 90, 91, 92, 93, 94, 95, 52, -1, + -1, -1, -1, 57, -1, -1, -1, -1, 62, -1, -1, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 88, 89, 90, 91, 92, 93, 94, 95, 52, -1, -1, -1, -1, 57, -1, -1, -1, -1, 62, -1, -1, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 88, 89, - 90, 91, 92, 93, 94, 95, 52, -1, -1, -1, - -1, 57, -1, -1, -1, -1, 62, -1, -1, 65, + -1, -1, -1, -1, -1, -1, 52, -1, 88, 89, + 90, 91, 92, 93, 94, 95, 62, -1, -1, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 88, 89, 90, 91, 92, 93, 94, 95, - 52, -1, -1, -1, -1, 57, -1, -1, -1, -1, + 52, -1, 88, 89, 90, 91, 92, 93, 94, 95, 62, -1, -1, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 52, -1, 88, 89, 90, 91, @@ -4263,107 +4315,104 @@ namespace xsk { namespace gsc { namespace iw5 { -1, -1, -1, -1, 52, -1, 88, 89, 90, 91, 92, 93, 94, 95, 62, -1, -1, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 52, -1, - 88, 89, 90, 91, 92, 93, 94, 95, 62, -1, - -1, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 52, -1, 88, 89, 90, 91, 92, 93, - 94, 95, 62, -1, -1, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 88, 89, - 90, 91, 92, 93, 94, 95, 56, -1, -1, -1, - -1, -1, 62, -1, -1, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 88, 89, - 90, 91, 92, 93, 94, 95, 56, -1, -1, -1, - -1, -1, 62, -1, -1, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 88, 89, - 90, 91, 92, 93, 94, 95, 56, -1, -1, -1, - -1, -1, 62, -1, -1, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 88, 89, - 90, 91, 92, 93, 94, 95, 56, -1, -1, -1, - -1, -1, 62, -1, -1, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 88, 89, - 90, 91, 92, 93, 94, 95, 56, -1, -1, -1, - -1, -1, 62, -1, -1, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 88, 89, - 90, 91, 92, 93, 94, 95, 57, -1, -1, -1, - -1, 62, -1, -1, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 88, 89, 90, - 91, 92, 93, 94, 95, 60, -1, 62, -1, -1, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 88, 89, 90, 91, 92, 93, 94, - 95, 61, 62, -1, -1, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 88, 89, - 90, 91, 92, 93, 94, 95, 61, 62, -1, -1, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 88, 89, 90, 91, 92, 93, 94, 95, 56, -1, + -1, -1, -1, -1, 62, -1, -1, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 88, 89, 90, 91, 92, 93, 94, 95, 56, -1, + -1, -1, -1, -1, 62, -1, -1, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 88, 89, 90, 91, 92, 93, 94, 95, 56, -1, + -1, -1, -1, -1, 62, -1, -1, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 88, 89, 90, 91, 92, 93, 94, 95, 56, -1, + -1, -1, -1, -1, 62, -1, -1, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 88, 89, 90, 91, 92, 93, 94, 95, 56, -1, + -1, -1, -1, -1, 62, -1, -1, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 88, 89, 90, 91, 92, 93, 94, 95, 57, -1, + -1, -1, -1, 62, -1, -1, 65, 66, 67, 68, + 69, 70, 71, 72, 73, 74, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 88, + 89, 90, 91, 92, 93, 94, 95, 60, -1, 62, + -1, -1, 65, 66, 67, 68, 69, 70, 71, 72, + 73, 74, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 88, 89, 90, 91, 92, + 93, 94, 95, 61, 62, -1, -1, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 88, 89, 90, 91, 92, 93, 94, 95, 61, 62, + -1, -1, 65, 66, 67, 68, 69, 70, 71, 72, + 73, 74, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 88, 89, 90, 91, 92, + 93, 94, 95, 61, 62, -1, -1, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, 62, -1, -1, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 88, 89, 90, 91, 92, 93, 94, 95, -1, -1, -1, -1, -1, 88, 89, 90, 91, 92, 93, 94, - 95, 61, 62, -1, -1, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, 62, -1, -1, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 88, 89, - 90, 91, 92, 93, 94, 95, -1, -1, -1, -1, - -1, 88, 89, 90, 91, 92, 93, 94, 95, 65, - 66, -1, 68, 69, 70, 71, 72, 73, 74, 65, - 66, -1, -1, 69, 70, 71, 72, 73, 74, -1, - -1, -1, 88, 89, 90, 91, 92, 93, 94, 95, - -1, -1, -1, 89, 90, 91, 92, 93, 94, 95 + 95, 65, 66, -1, -1, 69, 70, 71, 72, 73, + 74, 65, 66, -1, -1, 69, 70, 71, 72, 73, + 74, -1, -1, -1, 88, 89, 90, 91, 92, 93, + 94, 95, -1, -1, -1, 89, 90, 91, 92, 93, + 94, 95, 65, 66, -1, -1, 69, 70, 71, 72, + 73, 74, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 89, -1, 91, 92, + 93, 94, 95 }; const unsigned char parser::yystos_[] = { 0, 11, 12, 13, 14, 15, 98, 114, 115, 116, - 117, 118, 119, 120, 121, 183, 97, 183, 184, 184, + 117, 118, 119, 120, 121, 185, 97, 185, 186, 186, 51, 0, 116, 117, 118, 51, 77, 61, 61, 99, - 186, 165, 183, 16, 39, 40, 41, 42, 43, 44, + 188, 167, 185, 16, 39, 40, 41, 42, 43, 44, 45, 47, 48, 49, 50, 51, 55, 59, 75, 76, - 92, 95, 100, 101, 102, 103, 150, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, 168, 169, 170, - 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, - 191, 192, 52, 52, 57, 55, 183, 184, 55, 183, - 184, 55, 150, 55, 56, 150, 166, 167, 183, 150, - 150, 102, 103, 98, 61, 62, 65, 66, 67, 68, + 92, 95, 100, 101, 102, 103, 152, 157, 158, 159, + 160, 161, 162, 163, 164, 165, 166, 170, 171, 172, + 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, + 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, + 193, 194, 52, 52, 57, 55, 185, 186, 55, 185, + 186, 55, 152, 55, 56, 152, 168, 169, 185, 152, + 152, 102, 103, 98, 61, 62, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 88, 89, 90, 91, - 92, 93, 94, 95, 46, 55, 58, 96, 162, 163, - 183, 184, 51, 59, 61, 53, 124, 183, 55, 51, - 59, 55, 51, 59, 55, 52, 57, 150, 57, 56, - 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, - 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, - 183, 59, 166, 167, 183, 11, 19, 22, 23, 25, + 92, 93, 94, 95, 46, 55, 58, 96, 164, 165, + 185, 186, 51, 59, 61, 53, 127, 185, 55, 51, + 59, 55, 51, 59, 55, 52, 57, 152, 57, 56, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 185, 59, 168, 169, 185, 11, 19, 22, 23, 25, 26, 27, 28, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 54, 55, 63, 64, 122, 123, 124, 125, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 152, 153, 154, 160, 161, 169, 170, - 173, 177, 178, 179, 180, 183, 150, 166, 183, 150, - 166, 183, 150, 150, 56, 150, 60, 56, 183, 52, - 51, 12, 125, 150, 61, 51, 122, 51, 51, 51, - 51, 92, 186, 190, 60, 61, 61, 61, 150, 61, - 51, 51, 55, 160, 161, 173, 173, 54, 122, 61, - 61, 61, 61, 61, 17, 18, 20, 21, 63, 64, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 56, 52, 51, 56, 52, 51, 56, 57, 56, - 150, 166, 12, 61, 150, 26, 150, 126, 152, 153, - 154, 173, 183, 150, 60, 60, 61, 166, 166, 150, - 51, 51, 51, 51, 150, 150, 150, 150, 150, 150, - 150, 150, 150, 150, 150, 56, 166, 56, 166, 56, - 150, 51, 52, 52, 51, 52, 61, 29, 57, 52, - 52, 52, 150, 150, 150, 150, 51, 52, 51, 52, - 51, 52, 166, 122, 150, 122, 150, 151, 150, 183, - 124, 61, 61, 52, 52, 57, 52, 57, 52, 57, - 166, 166, 166, 52, 24, 52, 61, 52, 29, 61, - 61, 167, 61, 167, 61, 167, 52, 52, 52, 122, - 61, 126, 122, 150, 52, 52, 52, 52, 52, 61, - 61, 61, 122, 122 + 37, 38, 54, 55, 63, 64, 122, 123, 125, 126, + 127, 129, 130, 131, 132, 133, 134, 135, 136, 137, + 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, + 148, 149, 150, 151, 154, 155, 156, 162, 163, 171, + 172, 175, 179, 180, 181, 182, 185, 152, 168, 185, + 152, 168, 185, 152, 152, 56, 152, 60, 56, 185, + 52, 51, 12, 122, 124, 152, 61, 51, 122, 51, + 51, 51, 51, 92, 188, 192, 60, 61, 61, 61, + 152, 61, 51, 51, 55, 162, 163, 175, 175, 54, + 123, 61, 61, 61, 61, 61, 17, 18, 20, 21, + 63, 64, 77, 78, 79, 80, 81, 82, 83, 84, + 85, 86, 87, 56, 52, 51, 56, 52, 51, 56, + 57, 56, 152, 168, 12, 122, 61, 152, 26, 152, + 128, 154, 155, 156, 175, 185, 152, 60, 60, 61, + 168, 168, 152, 51, 51, 51, 51, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 56, 168, + 56, 168, 56, 152, 51, 52, 52, 51, 52, 61, + 29, 57, 52, 52, 52, 152, 152, 152, 152, 51, + 52, 51, 52, 51, 52, 168, 122, 152, 122, 152, + 153, 152, 185, 127, 61, 61, 52, 52, 57, 52, + 57, 52, 57, 168, 168, 168, 52, 24, 52, 61, + 52, 29, 61, 61, 169, 61, 169, 61, 169, 52, + 52, 52, 122, 61, 128, 122, 152, 52, 52, 52, + 52, 52, 61, 61, 61, 122, 122 }; const unsigned char @@ -4373,24 +4422,24 @@ namespace xsk { namespace gsc { namespace iw5 { 116, 117, 118, 118, 118, 118, 118, 119, 120, 121, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, - 122, 122, 122, 122, 122, 123, 123, 124, 124, 125, - 125, 126, 126, 126, 126, 127, 127, 128, 128, 128, - 129, 130, 130, 131, 132, 132, 133, 133, 134, 135, - 136, 137, 138, 139, 140, 140, 141, 142, 142, 143, - 144, 145, 146, 146, 147, 148, 149, 150, 150, 150, - 151, 151, 152, 152, 152, 152, 152, 152, 152, 152, - 152, 152, 152, 153, 153, 154, 154, 155, 156, 156, - 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, - 156, 156, 156, 156, 156, 156, 157, 157, 157, 157, - 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, - 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, - 157, 157, 157, 157, 158, 159, 160, 160, 161, 161, - 162, 162, 162, 162, 162, 162, 163, 163, 163, 163, - 164, 165, 165, 165, 166, 166, 167, 167, 168, 168, - 169, 170, 170, 171, 172, 173, 173, 173, 173, 173, - 173, 173, 173, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, 184, 185, 186, 187, 188, - 189, 189, 190, 190, 191, 192 + 122, 122, 122, 122, 123, 123, 124, 124, 125, 125, + 126, 126, 127, 127, 128, 128, 128, 128, 129, 129, + 130, 130, 130, 131, 132, 132, 133, 134, 134, 135, + 135, 136, 137, 138, 139, 140, 141, 142, 142, 143, + 144, 144, 145, 146, 147, 148, 148, 149, 150, 151, + 152, 152, 152, 153, 153, 154, 154, 154, 154, 154, + 154, 154, 154, 154, 154, 154, 155, 155, 156, 156, + 157, 158, 158, 158, 158, 158, 158, 158, 158, 158, + 158, 158, 158, 158, 158, 158, 158, 158, 158, 159, + 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, + 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, + 159, 159, 159, 159, 159, 159, 159, 160, 161, 162, + 162, 163, 163, 164, 164, 164, 164, 164, 164, 165, + 165, 165, 165, 166, 167, 167, 167, 168, 168, 169, + 169, 170, 170, 171, 172, 172, 173, 174, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 176, 177, 178, + 179, 180, 181, 182, 183, 184, 185, 186, 186, 187, + 188, 189, 190, 191, 191, 192, 192, 193, 194 }; const signed char @@ -4400,24 +4449,24 @@ namespace xsk { namespace gsc { namespace iw5 { 3, 3, 1, 1, 1, 1, 1, 5, 4, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 3, 2, 3, 2, 2, - 1, 1, 1, 1, 0, 2, 2, 2, 2, 2, - 6, 8, 6, 3, 8, 6, 8, 6, 2, 5, - 7, 5, 7, 9, 7, 9, 5, 3, 3, 2, - 2, 2, 3, 2, 2, 5, 5, 1, 1, 1, - 1, 0, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 2, 2, 2, 2, 5, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, + 3, 2, 3, 2, 1, 1, 1, 0, 2, 2, + 2, 2, 2, 6, 8, 6, 3, 8, 6, 8, + 6, 2, 5, 7, 5, 7, 9, 7, 9, 5, + 3, 3, 2, 2, 2, 3, 2, 2, 5, 5, + 1, 1, 1, 1, 0, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, + 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 2, 2, 1, 1, 2, 2, - 4, 6, 5, 7, 5, 7, 8, 9, 9, 9, - 3, 3, 1, 0, 1, 0, 3, 1, 2, 3, - 4, 3, 2, 2, 3, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, - 1, 2, 1, 1, 1, 1, 1, 1, 1, 7, - 2, 1, 2, 1, 1, 1 + 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, + 1, 2, 2, 4, 6, 5, 7, 5, 7, 8, + 9, 9, 9, 3, 3, 1, 0, 1, 0, 3, + 1, 2, 3, 4, 3, 2, 2, 3, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, + 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, + 1, 1, 7, 2, 1, 2, 1, 1, 1 }; @@ -4427,28 +4476,28 @@ namespace xsk { namespace gsc { namespace iw5 { const short parser::yyrline_[] = { - 0, 252, 252, 253, 257, 259, 261, 263, 265, 267, - 272, 276, 281, 282, 283, 284, 285, 289, 294, 299, - 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, - 324, 325, 326, 327, 328, 332, 333, 337, 338, 342, - 344, 349, 351, 353, 356, 360, 362, 367, 369, 371, - 376, 381, 383, 388, 393, 395, 400, 402, 407, 412, - 417, 422, 427, 432, 437, 439, 444, 449, 451, 456, - 461, 466, 471, 473, 478, 483, 488, 493, 494, 495, - 499, 500, 504, 506, 508, 510, 512, 514, 516, 518, - 520, 522, 524, 529, 531, 536, 538, 543, 548, 550, - 552, 554, 556, 558, 560, 562, 564, 566, 568, 570, - 572, 574, 576, 578, 580, 582, 587, 588, 589, 590, - 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, + 0, 254, 254, 255, 259, 261, 263, 265, 267, 269, + 274, 278, 283, 284, 285, 286, 287, 291, 296, 301, + 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, + 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, + 326, 327, 328, 329, 333, 334, 338, 340, 345, 347, + 352, 353, 357, 358, 362, 364, 366, 369, 373, 375, + 380, 382, 384, 389, 394, 396, 401, 406, 408, 413, + 415, 420, 425, 430, 435, 440, 445, 450, 452, 457, + 462, 464, 469, 474, 479, 484, 486, 491, 496, 501, + 506, 507, 508, 512, 513, 517, 519, 521, 523, 525, + 527, 529, 531, 533, 535, 537, 542, 544, 549, 551, + 556, 561, 563, 565, 567, 569, 571, 573, 575, 577, + 579, 581, 583, 585, 587, 589, 591, 593, 595, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, - 611, 612, 613, 614, 618, 623, 628, 629, 632, 633, - 637, 639, 641, 643, 645, 647, 652, 654, 656, 658, - 663, 668, 670, 673, 677, 680, 684, 686, 691, 693, - 698, 703, 705, 710, 715, 720, 721, 722, 723, 724, - 725, 726, 727, 728, 732, 737, 742, 747, 752, 757, - 762, 767, 772, 777, 782, 784, 789, 794, 799, 804, - 809, 811, 816, 818, 823, 828 + 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, + 621, 622, 623, 624, 625, 626, 627, 631, 636, 641, + 642, 645, 646, 650, 652, 654, 656, 658, 660, 665, + 667, 669, 671, 676, 681, 683, 686, 690, 693, 697, + 699, 704, 706, 711, 716, 718, 723, 728, 733, 734, + 735, 736, 737, 738, 739, 740, 741, 745, 750, 755, + 760, 765, 770, 775, 780, 785, 790, 795, 797, 802, + 807, 812, 817, 822, 824, 829, 831, 836, 841 }; void @@ -4481,9 +4530,9 @@ namespace xsk { namespace gsc { namespace iw5 { #line 13 "parser.ypp" } } } // xsk::gsc::iw5 -#line 4485 "parser.cpp" +#line 4534 "parser.cpp" -#line 832 "parser.ypp" +#line 845 "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 e1e8b5a0..d84275f7 100644 --- a/src/iw5/xsk/parser.hpp +++ b/src/iw5/xsk/parser.hpp @@ -535,6 +535,7 @@ namespace xsk { namespace gsc { namespace iw5 { char dummy39[sizeof (ast::program::ptr)]; // stmt + // stmt_or_dev char dummy40[sizeof (ast::stmt)]; // stmt_assign @@ -558,61 +559,64 @@ namespace xsk { namespace gsc { namespace iw5 { // stmt_default char dummy47[sizeof (ast::stmt_default::ptr)]; + // stmt_dev + char dummy48[sizeof (ast::stmt_dev::ptr)]; + // stmt_dowhile - char dummy48[sizeof (ast::stmt_dowhile::ptr)]; + char dummy49[sizeof (ast::stmt_dowhile::ptr)]; // stmt_endon - char dummy49[sizeof (ast::stmt_endon::ptr)]; + char dummy50[sizeof (ast::stmt_endon::ptr)]; // stmt_expr - char dummy50[sizeof (ast::stmt_expr::ptr)]; + char dummy51[sizeof (ast::stmt_expr::ptr)]; // stmt_for - char dummy51[sizeof (ast::stmt_for::ptr)]; + char dummy52[sizeof (ast::stmt_for::ptr)]; // stmt_foreach - char dummy52[sizeof (ast::stmt_foreach::ptr)]; + char dummy53[sizeof (ast::stmt_foreach::ptr)]; // stmt_if - char dummy53[sizeof (ast::stmt_if::ptr)]; + char dummy54[sizeof (ast::stmt_if::ptr)]; // stmt_ifelse - char dummy54[sizeof (ast::stmt_ifelse::ptr)]; + char dummy55[sizeof (ast::stmt_ifelse::ptr)]; - // stmt_dev - // stmt_block // stmt_list - char dummy55[sizeof (ast::stmt_list::ptr)]; + // stmt_or_dev_list + // stmt_block + char dummy56[sizeof (ast::stmt_list::ptr)]; // stmt_notify - char dummy56[sizeof (ast::stmt_notify::ptr)]; + char dummy57[sizeof (ast::stmt_notify::ptr)]; // stmt_prof_begin - char dummy57[sizeof (ast::stmt_prof_begin::ptr)]; + char dummy58[sizeof (ast::stmt_prof_begin::ptr)]; // stmt_prof_end - char dummy58[sizeof (ast::stmt_prof_end::ptr)]; + char dummy59[sizeof (ast::stmt_prof_end::ptr)]; // stmt_return - char dummy59[sizeof (ast::stmt_return::ptr)]; + char dummy60[sizeof (ast::stmt_return::ptr)]; // stmt_switch - char dummy60[sizeof (ast::stmt_switch::ptr)]; + char dummy61[sizeof (ast::stmt_switch::ptr)]; // stmt_wait - char dummy61[sizeof (ast::stmt_wait::ptr)]; + char dummy62[sizeof (ast::stmt_wait::ptr)]; // stmt_waittill - char dummy62[sizeof (ast::stmt_waittill::ptr)]; + char dummy63[sizeof (ast::stmt_waittill::ptr)]; // stmt_waittillframeend - char dummy63[sizeof (ast::stmt_waittillframeend::ptr)]; + char dummy64[sizeof (ast::stmt_waittillframeend::ptr)]; // stmt_waittillmatch - char dummy64[sizeof (ast::stmt_waittillmatch::ptr)]; + char dummy65[sizeof (ast::stmt_waittillmatch::ptr)]; // stmt_while - char dummy65[sizeof (ast::stmt_while::ptr)]; + char dummy66[sizeof (ast::stmt_while::ptr)]; // "field" // "path" @@ -622,7 +626,7 @@ namespace xsk { namespace gsc { namespace iw5 { // "color" // "float" // "integer" - char dummy66[sizeof (std::string)]; + char dummy67[sizeof (std::string)]; }; /// The size of the largest semantic type. @@ -925,76 +929,78 @@ namespace xsk { namespace gsc { namespace iw5 { S_decl_constant = 120, // decl_constant S_decl_thread = 121, // decl_thread S_stmt = 122, // stmt - S_stmt_dev = 123, // stmt_dev - S_stmt_block = 124, // stmt_block - S_stmt_list = 125, // stmt_list - S_stmt_expr = 126, // stmt_expr - S_stmt_call = 127, // stmt_call - S_stmt_assign = 128, // stmt_assign - S_stmt_endon = 129, // stmt_endon - S_stmt_notify = 130, // stmt_notify - S_stmt_wait = 131, // stmt_wait - S_stmt_waittill = 132, // stmt_waittill - S_stmt_waittillmatch = 133, // stmt_waittillmatch - S_stmt_waittillframeend = 134, // stmt_waittillframeend - S_stmt_if = 135, // stmt_if - S_stmt_ifelse = 136, // stmt_ifelse - S_stmt_while = 137, // stmt_while - S_stmt_dowhile = 138, // stmt_dowhile - S_stmt_for = 139, // stmt_for - S_stmt_foreach = 140, // stmt_foreach - S_stmt_switch = 141, // stmt_switch - S_stmt_case = 142, // stmt_case - S_stmt_default = 143, // stmt_default - S_stmt_break = 144, // stmt_break - S_stmt_continue = 145, // stmt_continue - S_stmt_return = 146, // stmt_return - S_stmt_breakpoint = 147, // stmt_breakpoint - S_stmt_prof_begin = 148, // stmt_prof_begin - S_stmt_prof_end = 149, // stmt_prof_end - S_expr = 150, // expr - S_expr_or_empty = 151, // expr_or_empty - S_expr_assign = 152, // expr_assign - S_expr_increment = 153, // expr_increment - S_expr_decrement = 154, // expr_decrement - S_expr_ternary = 155, // expr_ternary - S_expr_binary = 156, // expr_binary - S_expr_primitive = 157, // expr_primitive - S_expr_complement = 158, // expr_complement - S_expr_not = 159, // expr_not - S_expr_call = 160, // expr_call - S_expr_method = 161, // expr_method - S_expr_function = 162, // expr_function - S_expr_pointer = 163, // expr_pointer - S_expr_add_array = 164, // expr_add_array - S_expr_parameters = 165, // expr_parameters - S_expr_arguments = 166, // expr_arguments - S_expr_arguments_no_empty = 167, // expr_arguments_no_empty - S_expr_reference = 168, // expr_reference - S_expr_array = 169, // expr_array - S_expr_field = 170, // expr_field - S_expr_size = 171, // expr_size - S_expr_paren = 172, // expr_paren - S_expr_object = 173, // expr_object - S_expr_thisthread = 174, // expr_thisthread - S_expr_empty_array = 175, // expr_empty_array - S_expr_undefined = 176, // expr_undefined - S_expr_game = 177, // expr_game - S_expr_self = 178, // expr_self - S_expr_anim = 179, // expr_anim - S_expr_level = 180, // expr_level - S_expr_animation = 181, // expr_animation - S_expr_animtree = 182, // expr_animtree - S_expr_identifier = 183, // expr_identifier - S_expr_path = 184, // expr_path - S_expr_istring = 185, // expr_istring - S_expr_string = 186, // expr_string - S_expr_color = 187, // expr_color - S_expr_vector = 188, // expr_vector - S_expr_float = 189, // expr_float - S_expr_integer = 190, // expr_integer - S_expr_false = 191, // expr_false - S_expr_true = 192 // expr_true + S_stmt_or_dev = 123, // stmt_or_dev + S_stmt_list = 124, // stmt_list + S_stmt_or_dev_list = 125, // stmt_or_dev_list + S_stmt_dev = 126, // stmt_dev + S_stmt_block = 127, // stmt_block + S_stmt_expr = 128, // stmt_expr + S_stmt_call = 129, // stmt_call + S_stmt_assign = 130, // stmt_assign + S_stmt_endon = 131, // stmt_endon + S_stmt_notify = 132, // stmt_notify + S_stmt_wait = 133, // stmt_wait + S_stmt_waittill = 134, // stmt_waittill + S_stmt_waittillmatch = 135, // stmt_waittillmatch + S_stmt_waittillframeend = 136, // stmt_waittillframeend + S_stmt_if = 137, // stmt_if + S_stmt_ifelse = 138, // stmt_ifelse + S_stmt_while = 139, // stmt_while + S_stmt_dowhile = 140, // stmt_dowhile + S_stmt_for = 141, // stmt_for + S_stmt_foreach = 142, // stmt_foreach + S_stmt_switch = 143, // stmt_switch + S_stmt_case = 144, // stmt_case + S_stmt_default = 145, // stmt_default + S_stmt_break = 146, // stmt_break + S_stmt_continue = 147, // stmt_continue + S_stmt_return = 148, // stmt_return + S_stmt_breakpoint = 149, // stmt_breakpoint + S_stmt_prof_begin = 150, // stmt_prof_begin + S_stmt_prof_end = 151, // stmt_prof_end + S_expr = 152, // expr + S_expr_or_empty = 153, // expr_or_empty + S_expr_assign = 154, // expr_assign + S_expr_increment = 155, // expr_increment + S_expr_decrement = 156, // expr_decrement + S_expr_ternary = 157, // expr_ternary + S_expr_binary = 158, // expr_binary + S_expr_primitive = 159, // expr_primitive + S_expr_complement = 160, // expr_complement + S_expr_not = 161, // expr_not + S_expr_call = 162, // expr_call + S_expr_method = 163, // expr_method + S_expr_function = 164, // expr_function + S_expr_pointer = 165, // expr_pointer + S_expr_add_array = 166, // expr_add_array + S_expr_parameters = 167, // expr_parameters + S_expr_arguments = 168, // expr_arguments + S_expr_arguments_no_empty = 169, // expr_arguments_no_empty + S_expr_reference = 170, // expr_reference + S_expr_array = 171, // expr_array + S_expr_field = 172, // expr_field + S_expr_size = 173, // expr_size + S_expr_paren = 174, // expr_paren + S_expr_object = 175, // expr_object + S_expr_thisthread = 176, // expr_thisthread + S_expr_empty_array = 177, // expr_empty_array + S_expr_undefined = 178, // expr_undefined + S_expr_game = 179, // expr_game + S_expr_self = 180, // expr_self + S_expr_anim = 181, // expr_anim + S_expr_level = 182, // expr_level + S_expr_animation = 183, // expr_animation + S_expr_animtree = 184, // expr_animtree + S_expr_identifier = 185, // expr_identifier + S_expr_path = 186, // expr_path + S_expr_istring = 187, // expr_istring + S_expr_string = 188, // expr_string + S_expr_color = 189, // expr_color + S_expr_vector = 190, // expr_vector + S_expr_float = 191, // expr_float + S_expr_integer = 192, // expr_integer + S_expr_false = 193, // expr_false + S_expr_true = 194 // expr_true }; }; @@ -1198,6 +1204,7 @@ namespace xsk { namespace gsc { namespace iw5 { break; case symbol_kind::S_stmt: // stmt + case symbol_kind::S_stmt_or_dev: // stmt_or_dev value.move< ast::stmt > (std::move (that.value)); break; @@ -1229,6 +1236,10 @@ namespace xsk { namespace gsc { namespace iw5 { value.move< ast::stmt_default::ptr > (std::move (that.value)); break; + case symbol_kind::S_stmt_dev: // stmt_dev + value.move< ast::stmt_dev::ptr > (std::move (that.value)); + break; + case symbol_kind::S_stmt_dowhile: // stmt_dowhile value.move< ast::stmt_dowhile::ptr > (std::move (that.value)); break; @@ -1257,9 +1268,9 @@ namespace xsk { namespace gsc { namespace iw5 { value.move< ast::stmt_ifelse::ptr > (std::move (that.value)); break; - case symbol_kind::S_stmt_dev: // stmt_dev - case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list + case symbol_kind::S_stmt_or_dev_list: // stmt_or_dev_list + case symbol_kind::S_stmt_block: // stmt_block value.move< ast::stmt_list::ptr > (std::move (that.value)); break; @@ -1995,6 +2006,20 @@ namespace xsk { namespace gsc { namespace iw5 { {} #endif +#if 201103L <= YY_CPLUSPLUS + basic_symbol (typename Base::kind_type t, ast::stmt_dev::ptr&& v, location_type&& l) + : Base (t) + , value (std::move (v)) + , location (std::move (l)) + {} +#else + basic_symbol (typename Base::kind_type t, const ast::stmt_dev::ptr& v, const location_type& l) + : Base (t) + , value (v) + , location (l) + {} +#endif + #if 201103L <= YY_CPLUSPLUS basic_symbol (typename Base::kind_type t, ast::stmt_dowhile::ptr&& v, location_type&& l) : Base (t) @@ -2450,6 +2475,7 @@ switch (yykind) break; case symbol_kind::S_stmt: // stmt + case symbol_kind::S_stmt_or_dev: // stmt_or_dev value.template destroy< ast::stmt > (); break; @@ -2481,6 +2507,10 @@ switch (yykind) value.template destroy< ast::stmt_default::ptr > (); break; + case symbol_kind::S_stmt_dev: // stmt_dev + value.template destroy< ast::stmt_dev::ptr > (); + break; + case symbol_kind::S_stmt_dowhile: // stmt_dowhile value.template destroy< ast::stmt_dowhile::ptr > (); break; @@ -2509,9 +2539,9 @@ switch (yykind) value.template destroy< ast::stmt_ifelse::ptr > (); break; - case symbol_kind::S_stmt_dev: // stmt_dev - case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list + case symbol_kind::S_stmt_or_dev_list: // stmt_or_dev_list + case symbol_kind::S_stmt_block: // stmt_block value.template destroy< ast::stmt_list::ptr > (); break; @@ -4761,8 +4791,8 @@ switch (yykind) /// Constants. enum { - yylast_ = 2249, ///< Last index in yytable_. - yynnts_ = 80, ///< Number of nonterminal symbols. + yylast_ = 2262, ///< Last index in yytable_. + yynnts_ = 82, ///< Number of nonterminal symbols. yyfinal_ = 21 ///< Termination state number. }; @@ -4956,6 +4986,7 @@ switch (yykind) break; case symbol_kind::S_stmt: // stmt + case symbol_kind::S_stmt_or_dev: // stmt_or_dev value.copy< ast::stmt > (YY_MOVE (that.value)); break; @@ -4987,6 +5018,10 @@ switch (yykind) value.copy< ast::stmt_default::ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_stmt_dev: // stmt_dev + value.copy< ast::stmt_dev::ptr > (YY_MOVE (that.value)); + break; + case symbol_kind::S_stmt_dowhile: // stmt_dowhile value.copy< ast::stmt_dowhile::ptr > (YY_MOVE (that.value)); break; @@ -5015,9 +5050,9 @@ switch (yykind) value.copy< ast::stmt_ifelse::ptr > (YY_MOVE (that.value)); break; - case symbol_kind::S_stmt_dev: // stmt_dev - case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list + case symbol_kind::S_stmt_or_dev_list: // stmt_or_dev_list + case symbol_kind::S_stmt_block: // stmt_block value.copy< ast::stmt_list::ptr > (YY_MOVE (that.value)); break; @@ -5268,6 +5303,7 @@ switch (yykind) break; case symbol_kind::S_stmt: // stmt + case symbol_kind::S_stmt_or_dev: // stmt_or_dev value.move< ast::stmt > (YY_MOVE (s.value)); break; @@ -5299,6 +5335,10 @@ switch (yykind) value.move< ast::stmt_default::ptr > (YY_MOVE (s.value)); break; + case symbol_kind::S_stmt_dev: // stmt_dev + value.move< ast::stmt_dev::ptr > (YY_MOVE (s.value)); + break; + case symbol_kind::S_stmt_dowhile: // stmt_dowhile value.move< ast::stmt_dowhile::ptr > (YY_MOVE (s.value)); break; @@ -5327,9 +5367,9 @@ switch (yykind) value.move< ast::stmt_ifelse::ptr > (YY_MOVE (s.value)); break; - case symbol_kind::S_stmt_dev: // stmt_dev - case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list + case symbol_kind::S_stmt_or_dev_list: // stmt_or_dev_list + case symbol_kind::S_stmt_block: // stmt_block value.move< ast::stmt_list::ptr > (YY_MOVE (s.value)); break; @@ -5447,7 +5487,7 @@ switch (yykind) #line 13 "parser.ypp" } } } // xsk::gsc::iw5 -#line 5451 "parser.hpp" +#line 5491 "parser.hpp" diff --git a/src/iw5/xsk/resolver.cpp b/src/iw5/xsk/resolver.cpp index e78435f9..6ecb292e 100644 --- a/src/iw5/xsk/resolver.cpp +++ b/src/iw5/xsk/resolver.cpp @@ -48,7 +48,7 @@ auto resolver::opcode_name(std::uint8_t id) -> std::string auto resolver::function_id(const std::string& name) -> std::uint16_t { - if(name.starts_with("_func_")) + if (name.starts_with("_func_")) { return std::stoul(name.substr(6), nullptr, 16); } @@ -77,7 +77,7 @@ auto resolver::function_name(std::uint16_t id) -> std::string auto resolver::method_id(const std::string& name) -> std::uint16_t { - if(name.starts_with("_meth_")) + if (name.starts_with("_meth_")) { return std::stoul(name.substr(6), nullptr, 16); } @@ -106,7 +106,7 @@ auto resolver::method_name(std::uint16_t id) -> std::string auto resolver::file_id(const std::string& name) -> std::uint16_t { - if(name.starts_with("_id_")) + if (name.starts_with("_id_")) { return std::stoul(name.substr(4), nullptr, 16); } @@ -135,7 +135,7 @@ auto resolver::file_name(std::uint16_t id) -> std::string auto resolver::token_id(const std::string& name) -> std::uint16_t { - if(name.starts_with("_id_")) + if (name.starts_with("_id_")) { return std::stoul(name.substr(4), nullptr, 16); } @@ -164,7 +164,7 @@ auto resolver::token_name(std::uint16_t id) -> std::string auto resolver::find_function(const std::string& name) -> bool { - if(name.starts_with("_func_")) return true; + if (name.starts_with("_func_")) return true; const auto itr = function_map_rev.find(name); @@ -178,7 +178,7 @@ auto resolver::find_function(const std::string& name) -> bool auto resolver::find_method(const std::string& name) -> bool { - if(name.starts_with("_meth_")) return true; + if (name.starts_with("_meth_")) return true; const auto itr = method_map_rev.find(name); @@ -210,7 +210,7 @@ void resolver::add_function(const std::string& name, std::uint16_t id) { auto ins = string_map.insert(name); - if(ins.second) + if (ins.second) { function_map.insert({ id, *ins.first }); function_map_rev.insert({ *ins.first, id }); @@ -238,7 +238,7 @@ void resolver::add_method(const std::string& name, std::uint16_t id) { auto ins = string_map.insert(name); - if(ins.second) + if (ins.second) { method_map.insert({ id, *ins.first }); method_map_rev.insert({ *ins.first, id }); @@ -248,7 +248,7 @@ void resolver::add_method(const std::string& name, std::uint16_t id) auto resolver::make_token(std::string_view str) -> std::string { - if(str.starts_with("_id_") || str.starts_with("_func_") || str.starts_with("_meth_")) + if (str.starts_with("_id_") || str.starts_with("_func_") || str.starts_with("_meth_")) { return std::string(str); } @@ -271,7 +271,7 @@ auto resolver::file_data(const std::string& name) -> std::tuplefirst ,reinterpret_cast(itr->second.data()), itr->second.size() }; } @@ -280,7 +280,7 @@ auto resolver::file_data(const std::string& name) -> std::tuplefirst, reinterpret_cast(res.first->second.data()), res.first->second.size() }; } @@ -7933,7 +7933,7 @@ struct __init__ __init__() { static bool init = false; - if(init) return; + if (init) return; init = true; opcode_map.reserve(opcode_list.size()); @@ -7947,31 +7947,31 @@ struct __init__ token_map.reserve(token_list.size()); token_map_rev.reserve(token_list.size()); - for(const auto& entry : opcode_list) + for (const auto& entry : opcode_list) { opcode_map.insert({ entry.first, entry.second }); opcode_map_rev.insert({ entry.second, entry.first }); } - for(const auto& entry : function_list) + for (const auto& entry : function_list) { function_map.insert({ entry.first, entry.second }); function_map_rev.insert({ entry.second, entry.first }); } - for(const auto& entry : method_list) + for (const auto& entry : method_list) { method_map.insert({ entry.first, entry.second }); method_map_rev.insert({ entry.second, entry.first }); } - for(const auto& entry : file_list) + for (const auto& entry : file_list) { file_map.insert({ entry.first, entry.second }); file_map_rev.insert({ entry.second, entry.first }); } - for(const auto& entry : token_list) + for (const auto& entry : token_list) { token_map.insert({ entry.first, entry.second }); token_map_rev.insert({ utils::string::to_lower(entry.second), entry.first }); diff --git a/src/iw6/xsk/assembler.cpp b/src/iw6/xsk/assembler.cpp index dd906f96..f3c6b48d 100644 --- a/src/iw6/xsk/assembler.cpp +++ b/src/iw6/xsk/assembler.cpp @@ -570,4 +570,4 @@ auto assembler::resolve_label(const std::string& name) -> std::int32_t throw asm_error("Couldn't resolve label address of '" + name + "'!"); } -} // namespace xsk::gsc::iw6 +} // namespace xsk::gsc::iw6 diff --git a/src/iw6/xsk/compiler.cpp b/src/iw6/xsk/compiler.cpp index e1cdcc63..5c9ef95d 100644 --- a/src/iw6/xsk/compiler.cpp +++ b/src/iw6/xsk/compiler.cpp @@ -152,7 +152,7 @@ void compiler::emit_declaration(const ast::decl& decl) void compiler::emit_decl_usingtree(const ast::decl_usingtree::ptr& animtree) { - if(developer_thread_) + if (developer_thread_) throw comp_error(animtree->loc(), "cannot put #using_animtree inside /# ... #/ comment"); animtrees_.push_back({ animtree->name->value, false }); @@ -195,6 +195,9 @@ void compiler::emit_stmt(const ast::stmt& stmt, const block::ptr& blk, bool last case ast::kind::stmt_list: emit_stmt_list(stmt.as_list, blk, last); break; + case ast::kind::stmt_dev: + emit_stmt_dev(stmt.as_dev, blk, last); + break; case ast::kind::stmt_expr: emit_stmt_expr(stmt.as_expr, blk); break; @@ -281,6 +284,11 @@ void compiler::emit_stmt_list(const ast::stmt_list::ptr& stmt, const block::ptr& } } +void compiler::emit_stmt_dev(const ast::stmt_dev::ptr& stmt, const block::ptr& blk, bool last) +{ + emit_stmt_list(stmt->list, blk, last); +} + void compiler::emit_stmt_expr(const ast::stmt_expr::ptr& stmt, const block::ptr& blk) { switch (stmt->expr.kind()) @@ -572,6 +580,8 @@ void compiler::emit_stmt_dowhile(const ast::stmt_dowhile::ptr& stmt, const block emit_stmt(stmt->stmt, stmt->blk, false); + insert_label(continue_loc); + bool const_cond = is_constant_condition(stmt->test); if (!const_cond) @@ -580,7 +590,6 @@ void compiler::emit_stmt_dowhile(const ast::stmt_dowhile::ptr& stmt, const block emit_opcode(opcode::OP_JumpOnFalse, break_loc); } - insert_label(continue_loc); emit_opcode(opcode::OP_jumpback, begin_loc); insert_label(break_loc); @@ -1001,9 +1010,6 @@ void compiler::emit_expr(const ast::expr& expr, const block::ptr& blk) case ast::kind::expr_string: emit_expr_string(expr.as_string); break; - case ast::kind::expr_color: - emit_expr_color(expr.as_color); - break; case ast::kind::expr_vector: emit_expr_vector(expr.as_vector, blk); break; @@ -1953,30 +1959,6 @@ void compiler::emit_expr_string(const ast::expr_string::ptr& expr) emit_opcode(opcode::OP_GetString, expr->value); } -void compiler::emit_expr_color(const ast::expr_color::ptr& expr) -{ - std::vector data; - std::string x, y, z; - - if (expr->value.size() == 3) - { - x = "0x" + expr->value.substr(0, 1) + expr->value.substr(0, 1); - y = "0x" + expr->value.substr(1, 1) + expr->value.substr(1, 1); - z = "0x" + expr->value.substr(2, 1) + expr->value.substr(2, 1); - } - else - { - x = "0x" + expr->value.substr(0, 2); - y = "0x" + expr->value.substr(2, 2); - z = "0x" + expr->value.substr(4, 2); - } - - data.push_back(utils::string::hex_to_dec(x.data())); - data.push_back(utils::string::hex_to_dec(y.data())); - data.push_back(utils::string::hex_to_dec(z.data())); - emit_opcode(opcode::OP_GetVector, data); -} - void compiler::emit_expr_float(const ast::expr_float::ptr& expr) { emit_opcode(opcode::OP_GetFloat, expr->value); @@ -2101,6 +2083,9 @@ void compiler::process_stmt(const ast::stmt& stmt, const block::ptr& blk) case ast::kind::stmt_list: process_stmt_list(stmt.as_list, blk); break; + case ast::kind::stmt_dev: + process_stmt_dev(stmt.as_dev, blk); + break; case ast::kind::stmt_expr: process_stmt_expr(stmt.as_expr, blk); break; @@ -2165,6 +2150,11 @@ void compiler::process_stmt_list(const ast::stmt_list::ptr& stmt, const block::p } } +void compiler::process_stmt_dev(const ast::stmt_dev::ptr& stmt, const block::ptr& blk) +{ + process_stmt_list(stmt->list, blk); +} + void compiler::process_stmt_expr(const ast::stmt_expr::ptr& stmt, const block::ptr& blk) { switch (stmt->expr.kind()) diff --git a/src/iw6/xsk/compiler.hpp b/src/iw6/xsk/compiler.hpp index ceee6ba5..6a2bddfd 100644 --- a/src/iw6/xsk/compiler.hpp +++ b/src/iw6/xsk/compiler.hpp @@ -48,6 +48,7 @@ private: void emit_decl_thread(const ast::decl_thread::ptr& thread); void emit_stmt(const ast::stmt& stmt, const block::ptr& blk, bool last); void emit_stmt_list(const ast::stmt_list::ptr& stmt, const block::ptr& blk, bool last); + void emit_stmt_dev(const ast::stmt_dev::ptr& stmt, const block::ptr& blk, bool last); void emit_stmt_expr(const ast::stmt_expr::ptr& stmt, const block::ptr& blk); void emit_stmt_call(const ast::stmt_call::ptr& stmt, const block::ptr& blk); void emit_stmt_assign(const ast::stmt_assign::ptr& stmt, const block::ptr& blk); @@ -109,7 +110,6 @@ private: void emit_expr_animtree(const ast::expr_animtree::ptr& expr); void emit_expr_istring(const ast::expr_istring::ptr& expr); void emit_expr_string(const ast::expr_string::ptr& expr); - void emit_expr_color(const ast::expr_color::ptr& expr); void emit_expr_float(const ast::expr_float::ptr& expr); void emit_expr_integer(const ast::expr_integer::ptr& expr); void emit_expr_false(const ast::expr_false::ptr& expr); @@ -122,6 +122,7 @@ private: void process_thread(const ast::decl_thread::ptr& decl, const block::ptr& blk); void process_stmt(const ast::stmt& stmt, const block::ptr& blk); void process_stmt_list(const ast::stmt_list::ptr& stmt, const block::ptr& blk); + void process_stmt_dev(const ast::stmt_dev::ptr& stmt, const block::ptr& blk); void process_stmt_expr(const ast::stmt_expr::ptr& stmt, const block::ptr& blk); void process_stmt_assign(const ast::stmt_assign::ptr& stmt, const block::ptr& blk); void process_stmt_waittill(const ast::stmt_waittill::ptr& stmt, const block::ptr& blk); diff --git a/src/iw6/xsk/decompiler.cpp b/src/iw6/xsk/decompiler.cpp index 4a5e5789..3c38b946 100644 --- a/src/iw6/xsk/decompiler.cpp +++ b/src/iw6/xsk/decompiler.cpp @@ -75,7 +75,7 @@ void decompiler::decompile_function(const function::ptr& func) // hotfix empty else block at func end if (stmt->list.size() > 0 && stmt->list.back() == ast::kind::asm_jump) { - if(stmt->list.back().as_jump->value == blk.loc_end) + if (stmt->list.back().as_jump->value == blk.loc_end) stmt->list.pop_back(); } @@ -255,7 +255,7 @@ void decompiler::decompile_instruction(const instruction::ptr& inst) auto name = std::make_unique(loc, inst->data[1]); auto node = std::make_unique(loc, std::move(path), std::move(name)); stack_.push(std::move(node)); - }; + } break; case opcode::OP_CreateLocalVariable: { @@ -1651,7 +1651,7 @@ void decompiler::decompile_instruction(const instruction::ptr& inst) { auto expr = std::make_unique(loc, inst->data[0]); func_->stmt->list.push_back(ast::stmt(std::move(expr))); - if(stack_.size() != 0) tern_labels_.push_back(inst->data[0]); + if (stack_.size() != 0) tern_labels_.push_back(inst->data[0]); } break; case opcode::OP_jumpback: @@ -1850,7 +1850,7 @@ void decompiler::decompile_ifelses(const ast::stmt_list::ptr& stmt) { auto& entry = stmt->list.at(i); - if(entry == ast::kind::asm_jump_cond) + if (entry == ast::kind::asm_jump_cond) { auto j = (entry.as_cond->value == blocks_.back().loc_end) ? (stmt->list.size() - 1) : (find_location_index(stmt, entry.as_cond->value) - 1); auto last_loc = blocks_.back().loc_end; @@ -2129,7 +2129,7 @@ void decompiler::decompile_loop(const ast::stmt_list::ptr& block, std::uint32_t { auto ref = block->list.at(start).loc().label(); - if(!find_location_reference(block, 0, start, ref)) + if (!find_location_reference(block, 0, start, ref)) { decompile_foreach(block, start, end); return; @@ -2138,29 +2138,29 @@ void decompiler::decompile_loop(const ast::stmt_list::ptr& block, std::uint32_t } } - if(start > 0) // while at func start + if (start > 0) // while at func start { auto index = 1; - while(block->list.at(start - index) == ast::kind::asm_create) + while (block->list.at(start - index) == ast::kind::asm_create) { - if(start - index > 0) + if (start - index > 0) index++; else break; } - if(block->list.at(start - index) == ast::kind::stmt_assign) + if (block->list.at(start - index) == ast::kind::stmt_assign) { auto ref = block->list.at(end).loc().label(); auto ref2 = block->list.at(start).loc().label(); - if(find_location_reference(block, start, end, ref)) + if (find_location_reference(block, start, end, ref)) { // continue is at jumpback, not post-expr decompile_while(block, start, end); return; } - else if(find_location_reference(block, 0, start, ref2)) + else if (find_location_reference(block, 0, start, ref2)) { // begin is at condition, not pre-expr decompile_while(block, start, end); @@ -2400,7 +2400,7 @@ void decompiler::decompile_switch(const ast::stmt_list::ptr& stmt, std::uint32_t auto list = std::make_unique(loc); list->is_case = true; auto def_stmt = ast::stmt(std::make_unique(loc_pos, std::move(list))); - while(stmt->list.at(loc_idx) == ast::kind::stmt_case) + while (stmt->list.at(loc_idx) == ast::kind::stmt_case) loc_idx++; stmt->list.insert(stmt->list.begin() + loc_idx, std::move(def_stmt)); idx += 2; @@ -2501,7 +2501,7 @@ auto decompiler::find_location_index(const ast::stmt_list::ptr& stmt, const std: for (auto& entry : stmt->list) { - if(entry.loc().label() == location) + if (entry.loc().label() == location) return index; index++; @@ -2767,7 +2767,7 @@ void decompiler::process_stmt_ifelse(const ast::stmt_ifelse::ptr& stmt, const bl { abort = stmt->blk_if->abort; - if(abort == abort_t::abort_none) + if (abort == abort_t::abort_none) childs.push_back(stmt->blk_if.get()); } diff --git a/src/iw6/xsk/lexer.cpp b/src/iw6/xsk/lexer.cpp index d5371cd0..7627f7e6 100644 --- a/src/iw6/xsk/lexer.cpp +++ b/src/iw6/xsk/lexer.cpp @@ -72,12 +72,12 @@ buffer::buffer() : length(0) buffer::~buffer() { - if(data) std::free(data); + if (data) std::free(data); } bool buffer::push(char c) { - if(length >= max_buf_size) + if (length >= max_buf_size) return false; data[length++] = c; @@ -89,7 +89,7 @@ reader::reader() : state(reader::end), buffer_pos(0), bytes_remaining(0), void reader::init(const char* data, size_t size) { - if(data && size) + if (data && size) { state = reader::ok; buffer_pos = data; @@ -111,7 +111,7 @@ void reader::advance() { ++buffer_pos; - if(bytes_remaining-- == 1) + if (bytes_remaining-- == 1) { state = reader::end; bytes_remaining = 0; @@ -561,7 +561,7 @@ lex_name: advance(); } - if(state_ == state::field) + if (state_ == state::field) { if (path) throw comp_error(loc_, "invalid field token '\\'"); diff --git a/src/iw6/xsk/parser.cpp b/src/iw6/xsk/parser.cpp index c92ac0d8..bb877ee5 100644 --- a/src/iw6/xsk/parser.cpp +++ b/src/iw6/xsk/parser.cpp @@ -382,6 +382,7 @@ namespace xsk { namespace gsc { namespace iw6 { break; case symbol_kind::S_stmt: // stmt + case symbol_kind::S_stmt_or_dev: // stmt_or_dev value.YY_MOVE_OR_COPY< ast::stmt > (YY_MOVE (that.value)); break; @@ -413,6 +414,10 @@ namespace xsk { namespace gsc { namespace iw6 { value.YY_MOVE_OR_COPY< ast::stmt_default::ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_stmt_dev: // stmt_dev + value.YY_MOVE_OR_COPY< ast::stmt_dev::ptr > (YY_MOVE (that.value)); + break; + case symbol_kind::S_stmt_dowhile: // stmt_dowhile value.YY_MOVE_OR_COPY< ast::stmt_dowhile::ptr > (YY_MOVE (that.value)); break; @@ -441,9 +446,9 @@ namespace xsk { namespace gsc { namespace iw6 { value.YY_MOVE_OR_COPY< ast::stmt_ifelse::ptr > (YY_MOVE (that.value)); break; - case symbol_kind::S_stmt_dev: // stmt_dev - case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list + case symbol_kind::S_stmt_or_dev_list: // stmt_or_dev_list + case symbol_kind::S_stmt_block: // stmt_block value.YY_MOVE_OR_COPY< ast::stmt_list::ptr > (YY_MOVE (that.value)); break; @@ -680,6 +685,7 @@ namespace xsk { namespace gsc { namespace iw6 { break; case symbol_kind::S_stmt: // stmt + case symbol_kind::S_stmt_or_dev: // stmt_or_dev value.move< ast::stmt > (YY_MOVE (that.value)); break; @@ -711,6 +717,10 @@ namespace xsk { namespace gsc { namespace iw6 { value.move< ast::stmt_default::ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_stmt_dev: // stmt_dev + value.move< ast::stmt_dev::ptr > (YY_MOVE (that.value)); + break; + case symbol_kind::S_stmt_dowhile: // stmt_dowhile value.move< ast::stmt_dowhile::ptr > (YY_MOVE (that.value)); break; @@ -739,9 +749,9 @@ namespace xsk { namespace gsc { namespace iw6 { value.move< ast::stmt_ifelse::ptr > (YY_MOVE (that.value)); break; - case symbol_kind::S_stmt_dev: // stmt_dev - case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list + case symbol_kind::S_stmt_or_dev_list: // stmt_or_dev_list + case symbol_kind::S_stmt_block: // stmt_block value.move< ast::stmt_list::ptr > (YY_MOVE (that.value)); break; @@ -978,6 +988,7 @@ namespace xsk { namespace gsc { namespace iw6 { break; case symbol_kind::S_stmt: // stmt + case symbol_kind::S_stmt_or_dev: // stmt_or_dev value.copy< ast::stmt > (that.value); break; @@ -1009,6 +1020,10 @@ namespace xsk { namespace gsc { namespace iw6 { value.copy< ast::stmt_default::ptr > (that.value); break; + case symbol_kind::S_stmt_dev: // stmt_dev + value.copy< ast::stmt_dev::ptr > (that.value); + break; + case symbol_kind::S_stmt_dowhile: // stmt_dowhile value.copy< ast::stmt_dowhile::ptr > (that.value); break; @@ -1037,9 +1052,9 @@ namespace xsk { namespace gsc { namespace iw6 { value.copy< ast::stmt_ifelse::ptr > (that.value); break; - case symbol_kind::S_stmt_dev: // stmt_dev - case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list + case symbol_kind::S_stmt_or_dev_list: // stmt_or_dev_list + case symbol_kind::S_stmt_block: // stmt_block value.copy< ast::stmt_list::ptr > (that.value); break; @@ -1275,6 +1290,7 @@ namespace xsk { namespace gsc { namespace iw6 { break; case symbol_kind::S_stmt: // stmt + case symbol_kind::S_stmt_or_dev: // stmt_or_dev value.move< ast::stmt > (that.value); break; @@ -1306,6 +1322,10 @@ namespace xsk { namespace gsc { namespace iw6 { value.move< ast::stmt_default::ptr > (that.value); break; + case symbol_kind::S_stmt_dev: // stmt_dev + value.move< ast::stmt_dev::ptr > (that.value); + break; + case symbol_kind::S_stmt_dowhile: // stmt_dowhile value.move< ast::stmt_dowhile::ptr > (that.value); break; @@ -1334,9 +1354,9 @@ namespace xsk { namespace gsc { namespace iw6 { value.move< ast::stmt_ifelse::ptr > (that.value); break; - case symbol_kind::S_stmt_dev: // stmt_dev - case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list + case symbol_kind::S_stmt_or_dev_list: // stmt_or_dev_list + case symbol_kind::S_stmt_block: // stmt_block value.move< ast::stmt_list::ptr > (that.value); break; @@ -1827,6 +1847,7 @@ namespace xsk { namespace gsc { namespace iw6 { break; case symbol_kind::S_stmt: // stmt + case symbol_kind::S_stmt_or_dev: // stmt_or_dev yylhs.value.emplace< ast::stmt > (); break; @@ -1858,6 +1879,10 @@ namespace xsk { namespace gsc { namespace iw6 { yylhs.value.emplace< ast::stmt_default::ptr > (); break; + case symbol_kind::S_stmt_dev: // stmt_dev + yylhs.value.emplace< ast::stmt_dev::ptr > (); + break; + case symbol_kind::S_stmt_dowhile: // stmt_dowhile yylhs.value.emplace< ast::stmt_dowhile::ptr > (); break; @@ -1886,9 +1911,9 @@ namespace xsk { namespace gsc { namespace iw6 { yylhs.value.emplace< ast::stmt_ifelse::ptr > (); break; - case symbol_kind::S_stmt_dev: // stmt_dev - case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list + case symbol_kind::S_stmt_or_dev_list: // stmt_or_dev_list + case symbol_kind::S_stmt_block: // stmt_block yylhs.value.emplace< ast::stmt_list::ptr > (); break; @@ -1964,1291 +1989,1309 @@ namespace xsk { namespace gsc { namespace iw6 { switch (yyn) { case 2: // root: program -#line 252 "parser.ypp" +#line 254 "parser.ypp" { ast = std::move(yystack_[0].value.as < ast::program::ptr > ()); } -#line 1970 "parser.cpp" +#line 1995 "parser.cpp" break; case 3: // root: %empty -#line 253 "parser.ypp" +#line 255 "parser.ypp" { ast = std::make_unique(yylhs.location); } -#line 1976 "parser.cpp" +#line 2001 "parser.cpp" break; case 4: // program: program inline -#line 258 "parser.ypp" +#line 260 "parser.ypp" { yylhs.value.as < ast::program::ptr > () = std::move(yystack_[1].value.as < ast::program::ptr > ()); } -#line 1982 "parser.cpp" +#line 2007 "parser.cpp" break; case 5: // program: program include -#line 260 "parser.ypp" +#line 262 "parser.ypp" { yylhs.value.as < ast::program::ptr > () = std::move(yystack_[1].value.as < ast::program::ptr > ()); yylhs.value.as < ast::program::ptr > ()->includes.push_back(std::move(yystack_[0].value.as < ast::include::ptr > ())); } -#line 1988 "parser.cpp" +#line 2013 "parser.cpp" break; case 6: // program: program declaration -#line 262 "parser.ypp" +#line 264 "parser.ypp" { yylhs.value.as < ast::program::ptr > () = std::move(yystack_[1].value.as < ast::program::ptr > ()); yylhs.value.as < ast::program::ptr > ()->declarations.push_back(std::move(yystack_[0].value.as < ast::decl > ())); } -#line 1994 "parser.cpp" +#line 2019 "parser.cpp" break; case 7: // program: inline -#line 264 "parser.ypp" +#line 266 "parser.ypp" { yylhs.value.as < ast::program::ptr > () = std::make_unique(yylhs.location); } -#line 2000 "parser.cpp" +#line 2025 "parser.cpp" break; case 8: // program: include -#line 266 "parser.ypp" +#line 268 "parser.ypp" { yylhs.value.as < ast::program::ptr > () = std::make_unique(yylhs.location); yylhs.value.as < ast::program::ptr > ()->includes.push_back(std::move(yystack_[0].value.as < ast::include::ptr > ())); } -#line 2006 "parser.cpp" +#line 2031 "parser.cpp" break; case 9: // program: declaration -#line 268 "parser.ypp" +#line 270 "parser.ypp" { yylhs.value.as < ast::program::ptr > () = std::make_unique(yylhs.location); yylhs.value.as < ast::program::ptr > ()->declarations.push_back(std::move(yystack_[0].value.as < ast::decl > ())); } -#line 2012 "parser.cpp" +#line 2037 "parser.cpp" break; case 10: // inline: "#inline" expr_path ";" -#line 272 "parser.ypp" +#line 274 "parser.ypp" { lexer.push_header(yystack_[1].value.as < ast::expr_path::ptr > ()->value); } -#line 2018 "parser.cpp" +#line 2043 "parser.cpp" break; case 11: // include: "#include" expr_path ";" -#line 277 "parser.ypp" +#line 279 "parser.ypp" { yylhs.value.as < ast::include::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr_path::ptr > ())); } -#line 2024 "parser.cpp" +#line 2049 "parser.cpp" break; case 12: // declaration: "/#" -#line 281 "parser.ypp" +#line 283 "parser.ypp" { yylhs.value.as < ast::decl > ().as_dev_begin = std::make_unique(yylhs.location); } -#line 2030 "parser.cpp" +#line 2055 "parser.cpp" break; case 13: // declaration: "#/" -#line 282 "parser.ypp" +#line 284 "parser.ypp" { yylhs.value.as < ast::decl > ().as_dev_end = std::make_unique(yylhs.location); } -#line 2036 "parser.cpp" +#line 2061 "parser.cpp" break; case 14: // declaration: decl_usingtree -#line 283 "parser.ypp" +#line 285 "parser.ypp" { yylhs.value.as < ast::decl > ().as_usingtree = std::move(yystack_[0].value.as < ast::decl_usingtree::ptr > ()); } -#line 2042 "parser.cpp" +#line 2067 "parser.cpp" break; case 15: // declaration: decl_constant -#line 284 "parser.ypp" +#line 286 "parser.ypp" { yylhs.value.as < ast::decl > ().as_constant = std::move(yystack_[0].value.as < ast::decl_constant::ptr > ()); } -#line 2048 "parser.cpp" +#line 2073 "parser.cpp" break; case 16: // declaration: decl_thread -#line 285 "parser.ypp" +#line 287 "parser.ypp" { yylhs.value.as < ast::decl > ().as_thread = std::move(yystack_[0].value.as < ast::decl_thread::ptr > ()); } -#line 2054 "parser.cpp" +#line 2079 "parser.cpp" break; case 17: // decl_usingtree: "#using_animtree" "(" expr_string ")" ";" -#line 290 "parser.ypp" +#line 292 "parser.ypp" { lexer.ban_header(yylhs.location); yylhs.value.as < ast::decl_usingtree::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr_string::ptr > ())); } -#line 2060 "parser.cpp" +#line 2085 "parser.cpp" break; case 18: // decl_constant: expr_identifier "=" expr ";" -#line 295 "parser.ypp" +#line 297 "parser.ypp" { yylhs.value.as < ast::decl_constant::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr > ())); } -#line 2066 "parser.cpp" +#line 2091 "parser.cpp" break; case 19: // decl_thread: expr_identifier "(" expr_parameters ")" stmt_block -#line 300 "parser.ypp" +#line 302 "parser.ypp" { lexer.ban_header(yylhs.location); yylhs.value.as < ast::decl_thread::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[2].value.as < ast::expr_parameters::ptr > ()), std::move(yystack_[0].value.as < ast::stmt_list::ptr > ())); } -#line 2072 "parser.cpp" +#line 2097 "parser.cpp" break; - case 20: // stmt: stmt_dev -#line 304 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_list = std::move(yystack_[0].value.as < ast::stmt_list::ptr > ()); } -#line 2078 "parser.cpp" - break; - - case 21: // stmt: stmt_block -#line 305 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_list = std::move(yystack_[0].value.as < ast::stmt_list::ptr > ()); } -#line 2084 "parser.cpp" - break; - - case 22: // stmt: stmt_call + case 20: // stmt: stmt_block #line 306 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_call = std::move(yystack_[0].value.as < ast::stmt_call::ptr > ()); } -#line 2090 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_list = std::move(yystack_[0].value.as < ast::stmt_list::ptr > ()); } +#line 2103 "parser.cpp" break; - case 23: // stmt: stmt_assign + case 21: // stmt: stmt_call #line 307 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_assign = std::move(yystack_[0].value.as < ast::stmt_assign::ptr > ()); } -#line 2096 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_call = std::move(yystack_[0].value.as < ast::stmt_call::ptr > ()); } +#line 2109 "parser.cpp" break; - case 24: // stmt: stmt_endon + case 22: // stmt: stmt_assign #line 308 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_endon = std::move(yystack_[0].value.as < ast::stmt_endon::ptr > ()); } -#line 2102 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_assign = std::move(yystack_[0].value.as < ast::stmt_assign::ptr > ()); } +#line 2115 "parser.cpp" break; - case 25: // stmt: stmt_notify + case 23: // stmt: stmt_endon #line 309 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_notify = std::move(yystack_[0].value.as < ast::stmt_notify::ptr > ()); } -#line 2108 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_endon = std::move(yystack_[0].value.as < ast::stmt_endon::ptr > ()); } +#line 2121 "parser.cpp" break; - case 26: // stmt: stmt_wait + case 24: // stmt: stmt_notify #line 310 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_wait = std::move(yystack_[0].value.as < ast::stmt_wait::ptr > ()); } -#line 2114 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_notify = std::move(yystack_[0].value.as < ast::stmt_notify::ptr > ()); } +#line 2127 "parser.cpp" break; - case 27: // stmt: stmt_waittill + case 25: // stmt: stmt_wait #line 311 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_waittill = std::move(yystack_[0].value.as < ast::stmt_waittill::ptr > ()); } -#line 2120 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_wait = std::move(yystack_[0].value.as < ast::stmt_wait::ptr > ()); } +#line 2133 "parser.cpp" break; - case 28: // stmt: stmt_waittillmatch + case 26: // stmt: stmt_waittill #line 312 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_waittillmatch = std::move(yystack_[0].value.as < ast::stmt_waittillmatch::ptr > ()); } -#line 2126 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_waittill = std::move(yystack_[0].value.as < ast::stmt_waittill::ptr > ()); } +#line 2139 "parser.cpp" break; - case 29: // stmt: stmt_waittillframeend + case 27: // stmt: stmt_waittillmatch #line 313 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_waittillframeend = std::move(yystack_[0].value.as < ast::stmt_waittillframeend::ptr > ()); } -#line 2132 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_waittillmatch = std::move(yystack_[0].value.as < ast::stmt_waittillmatch::ptr > ()); } +#line 2145 "parser.cpp" break; - case 30: // stmt: stmt_if + case 28: // stmt: stmt_waittillframeend #line 314 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_if = std::move(yystack_[0].value.as < ast::stmt_if::ptr > ()); } -#line 2138 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_waittillframeend = std::move(yystack_[0].value.as < ast::stmt_waittillframeend::ptr > ()); } +#line 2151 "parser.cpp" break; - case 31: // stmt: stmt_ifelse + case 29: // stmt: stmt_if #line 315 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_ifelse = std::move(yystack_[0].value.as < ast::stmt_ifelse::ptr > ()); } -#line 2144 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_if = std::move(yystack_[0].value.as < ast::stmt_if::ptr > ()); } +#line 2157 "parser.cpp" break; - case 32: // stmt: stmt_while + case 30: // stmt: stmt_ifelse #line 316 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_while = std::move(yystack_[0].value.as < ast::stmt_while::ptr > ()); } -#line 2150 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_ifelse = std::move(yystack_[0].value.as < ast::stmt_ifelse::ptr > ()); } +#line 2163 "parser.cpp" break; - case 33: // stmt: stmt_dowhile + case 31: // stmt: stmt_while #line 317 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_dowhile = std::move(yystack_[0].value.as < ast::stmt_dowhile::ptr > ()); } -#line 2156 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_while = std::move(yystack_[0].value.as < ast::stmt_while::ptr > ()); } +#line 2169 "parser.cpp" break; - case 34: // stmt: stmt_for + case 32: // stmt: stmt_dowhile #line 318 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_for = std::move(yystack_[0].value.as < ast::stmt_for::ptr > ()); } -#line 2162 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_dowhile = std::move(yystack_[0].value.as < ast::stmt_dowhile::ptr > ()); } +#line 2175 "parser.cpp" break; - case 35: // stmt: stmt_foreach + case 33: // stmt: stmt_for #line 319 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_foreach = std::move(yystack_[0].value.as < ast::stmt_foreach::ptr > ()); } -#line 2168 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_for = std::move(yystack_[0].value.as < ast::stmt_for::ptr > ()); } +#line 2181 "parser.cpp" break; - case 36: // stmt: stmt_switch + case 34: // stmt: stmt_foreach #line 320 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_switch = std::move(yystack_[0].value.as < ast::stmt_switch::ptr > ()); } -#line 2174 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_foreach = std::move(yystack_[0].value.as < ast::stmt_foreach::ptr > ()); } +#line 2187 "parser.cpp" break; - case 37: // stmt: stmt_case + case 35: // stmt: stmt_switch #line 321 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_case = std::move(yystack_[0].value.as < ast::stmt_case::ptr > ()); } -#line 2180 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_switch = std::move(yystack_[0].value.as < ast::stmt_switch::ptr > ()); } +#line 2193 "parser.cpp" break; - case 38: // stmt: stmt_default + case 36: // stmt: stmt_case #line 322 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_default = std::move(yystack_[0].value.as < ast::stmt_default::ptr > ()); } -#line 2186 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_case = std::move(yystack_[0].value.as < ast::stmt_case::ptr > ()); } +#line 2199 "parser.cpp" break; - case 39: // stmt: stmt_break + case 37: // stmt: stmt_default #line 323 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_break = std::move(yystack_[0].value.as < ast::stmt_break::ptr > ()); } -#line 2192 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_default = std::move(yystack_[0].value.as < ast::stmt_default::ptr > ()); } +#line 2205 "parser.cpp" break; - case 40: // stmt: stmt_continue + case 38: // stmt: stmt_break #line 324 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_continue = std::move(yystack_[0].value.as < ast::stmt_continue::ptr > ()); } -#line 2198 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_break = std::move(yystack_[0].value.as < ast::stmt_break::ptr > ()); } +#line 2211 "parser.cpp" break; - case 41: // stmt: stmt_return + case 39: // stmt: stmt_continue #line 325 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_return = std::move(yystack_[0].value.as < ast::stmt_return::ptr > ()); } -#line 2204 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_continue = std::move(yystack_[0].value.as < ast::stmt_continue::ptr > ()); } +#line 2217 "parser.cpp" break; - case 42: // stmt: stmt_breakpoint + case 40: // stmt: stmt_return #line 326 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_breakpoint = std::move(yystack_[0].value.as < ast::stmt_breakpoint::ptr > ()); } -#line 2210 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_return = std::move(yystack_[0].value.as < ast::stmt_return::ptr > ()); } +#line 2223 "parser.cpp" break; - case 43: // stmt: stmt_prof_begin + case 41: // stmt: stmt_breakpoint #line 327 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_prof_begin = std::move(yystack_[0].value.as < ast::stmt_prof_begin::ptr > ()); } -#line 2216 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_breakpoint = std::move(yystack_[0].value.as < ast::stmt_breakpoint::ptr > ()); } +#line 2229 "parser.cpp" break; - case 44: // stmt: stmt_prof_end + case 42: // stmt: stmt_prof_begin #line 328 "parser.ypp" + { yylhs.value.as < ast::stmt > ().as_prof_begin = std::move(yystack_[0].value.as < ast::stmt_prof_begin::ptr > ()); } +#line 2235 "parser.cpp" + break; + + case 43: // stmt: stmt_prof_end +#line 329 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_prof_end = std::move(yystack_[0].value.as < ast::stmt_prof_end::ptr > ()); } -#line 2222 "parser.cpp" +#line 2241 "parser.cpp" break; - case 45: // stmt_dev: "/#" stmt_list "#/" -#line 332 "parser.ypp" - { yylhs.value.as < ast::stmt_list::ptr > () = std::move(yystack_[1].value.as < ast::stmt_list::ptr > ()); } -#line 2228 "parser.cpp" - break; - - case 46: // stmt_dev: "/#" "#/" + case 44: // stmt_or_dev: stmt #line 333 "parser.ypp" - { yylhs.value.as < ast::stmt_list::ptr > () = std::make_unique(yylhs.location); } -#line 2234 "parser.cpp" + { yylhs.value.as < ast::stmt > () = std::move(yystack_[0].value.as < ast::stmt > ()); } +#line 2247 "parser.cpp" break; - case 47: // stmt_block: "{" stmt_list "}" -#line 337 "parser.ypp" - { yylhs.value.as < ast::stmt_list::ptr > () = std::move(yystack_[1].value.as < ast::stmt_list::ptr > ()); } -#line 2240 "parser.cpp" + case 45: // stmt_or_dev: stmt_dev +#line 334 "parser.ypp" + { yylhs.value.as < ast::stmt > ().as_dev = std::move(yystack_[0].value.as < ast::stmt_dev::ptr > ()); } +#line 2253 "parser.cpp" break; - case 48: // stmt_block: "{" "}" -#line 338 "parser.ypp" - { yylhs.value.as < ast::stmt_list::ptr > () = std::make_unique(yylhs.location); } -#line 2246 "parser.cpp" - break; - - case 49: // stmt_list: stmt_list stmt -#line 343 "parser.ypp" + case 46: // stmt_list: stmt_list stmt +#line 339 "parser.ypp" { yylhs.value.as < ast::stmt_list::ptr > () = std::move(yystack_[1].value.as < ast::stmt_list::ptr > ()); yylhs.value.as < ast::stmt_list::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2252 "parser.cpp" +#line 2259 "parser.cpp" break; - case 50: // stmt_list: stmt -#line 345 "parser.ypp" + case 47: // stmt_list: stmt +#line 341 "parser.ypp" { yylhs.value.as < ast::stmt_list::ptr > () = std::make_unique(yylhs.location); yylhs.value.as < ast::stmt_list::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2258 "parser.cpp" +#line 2265 "parser.cpp" break; - case 51: // stmt_expr: expr_assign -#line 350 "parser.ypp" - { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2264 "parser.cpp" + case 48: // stmt_or_dev_list: stmt_or_dev_list stmt_or_dev +#line 346 "parser.ypp" + { yylhs.value.as < ast::stmt_list::ptr > () = std::move(yystack_[1].value.as < ast::stmt_list::ptr > ()); yylhs.value.as < ast::stmt_list::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::stmt > ())); } +#line 2271 "parser.cpp" break; - case 52: // stmt_expr: expr_increment + case 49: // stmt_or_dev_list: stmt_or_dev +#line 348 "parser.ypp" + { yylhs.value.as < ast::stmt_list::ptr > () = std::make_unique(yylhs.location); yylhs.value.as < ast::stmt_list::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::stmt > ())); } +#line 2277 "parser.cpp" + break; + + case 50: // stmt_dev: "/#" stmt_list "#/" #line 352 "parser.ypp" - { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2270 "parser.cpp" + { yylhs.value.as < ast::stmt_dev::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::stmt_list::ptr > ())); } +#line 2283 "parser.cpp" break; - case 53: // stmt_expr: expr_decrement -#line 354 "parser.ypp" - { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2276 "parser.cpp" + case 51: // stmt_dev: "/#" "#/" +#line 353 "parser.ypp" + { yylhs.value.as < ast::stmt_dev::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } +#line 2289 "parser.cpp" break; - case 54: // stmt_expr: %empty -#line 356 "parser.ypp" - { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } -#line 2282 "parser.cpp" + case 52: // stmt_block: "{" stmt_or_dev_list "}" +#line 357 "parser.ypp" + { yylhs.value.as < ast::stmt_list::ptr > () = std::move(yystack_[1].value.as < ast::stmt_list::ptr > ()); } +#line 2295 "parser.cpp" break; - case 55: // stmt_call: expr_call ";" -#line 361 "parser.ypp" - { yylhs.value.as < ast::stmt_call::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[1].value.as < ast::expr_call::ptr > ()))); } -#line 2288 "parser.cpp" + case 53: // stmt_block: "{" "}" +#line 358 "parser.ypp" + { yylhs.value.as < ast::stmt_list::ptr > () = std::make_unique(yylhs.location); } +#line 2301 "parser.cpp" break; - case 56: // stmt_call: expr_method ";" + case 54: // stmt_expr: expr_assign #line 363 "parser.ypp" + { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2307 "parser.cpp" + break; + + case 55: // stmt_expr: expr_increment +#line 365 "parser.ypp" + { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2313 "parser.cpp" + break; + + case 56: // stmt_expr: expr_decrement +#line 367 "parser.ypp" + { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2319 "parser.cpp" + break; + + case 57: // stmt_expr: %empty +#line 369 "parser.ypp" + { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } +#line 2325 "parser.cpp" + break; + + case 58: // stmt_call: expr_call ";" +#line 374 "parser.ypp" + { yylhs.value.as < ast::stmt_call::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[1].value.as < ast::expr_call::ptr > ()))); } +#line 2331 "parser.cpp" + break; + + case 59: // stmt_call: expr_method ";" +#line 376 "parser.ypp" { yylhs.value.as < ast::stmt_call::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[1].value.as < ast::expr_method::ptr > ()))); } -#line 2294 "parser.cpp" +#line 2337 "parser.cpp" break; - case 57: // stmt_assign: expr_assign ";" -#line 368 "parser.ypp" + case 60: // stmt_assign: expr_assign ";" +#line 381 "parser.ypp" { yylhs.value.as < ast::stmt_assign::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } -#line 2300 "parser.cpp" +#line 2343 "parser.cpp" break; - case 58: // stmt_assign: expr_increment ";" -#line 370 "parser.ypp" + case 61: // stmt_assign: expr_increment ";" +#line 383 "parser.ypp" { yylhs.value.as < ast::stmt_assign::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } -#line 2306 "parser.cpp" +#line 2349 "parser.cpp" break; - case 59: // stmt_assign: expr_decrement ";" -#line 372 "parser.ypp" + case 62: // stmt_assign: expr_decrement ";" +#line 385 "parser.ypp" { yylhs.value.as < ast::stmt_assign::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } -#line 2312 "parser.cpp" +#line 2355 "parser.cpp" break; - case 60: // stmt_endon: expr_object "endon" "(" expr ")" ";" -#line 377 "parser.ypp" + case 63: // stmt_endon: expr_object "endon" "(" expr ")" ";" +#line 390 "parser.ypp" { yylhs.value.as < ast::stmt_endon::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr > ())); } -#line 2318 "parser.cpp" +#line 2361 "parser.cpp" break; - case 61: // stmt_notify: expr_object "notify" "(" expr "," expr_arguments_no_empty ")" ";" -#line 382 "parser.ypp" + case 64: // stmt_notify: expr_object "notify" "(" expr "," expr_arguments_no_empty ")" ";" +#line 395 "parser.ypp" { yylhs.value.as < ast::stmt_notify::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < ast::expr > ()), std::move(yystack_[4].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr_arguments::ptr > ())); } -#line 2324 "parser.cpp" +#line 2367 "parser.cpp" break; - case 62: // stmt_notify: expr_object "notify" "(" expr ")" ";" -#line 384 "parser.ypp" + case 65: // stmt_notify: expr_object "notify" "(" expr ")" ";" +#line 397 "parser.ypp" { yylhs.value.as < ast::stmt_notify::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr > ()), std::make_unique(yylhs.location)); } -#line 2330 "parser.cpp" +#line 2373 "parser.cpp" break; - case 63: // stmt_wait: "wait" expr ";" -#line 389 "parser.ypp" + case 66: // stmt_wait: "wait" expr ";" +#line 402 "parser.ypp" { yylhs.value.as < ast::stmt_wait::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } -#line 2336 "parser.cpp" +#line 2379 "parser.cpp" break; - case 64: // stmt_waittill: expr_object "waittill" "(" expr "," expr_arguments_no_empty ")" ";" -#line 394 "parser.ypp" + case 67: // stmt_waittill: expr_object "waittill" "(" expr "," expr_arguments_no_empty ")" ";" +#line 407 "parser.ypp" { yylhs.value.as < ast::stmt_waittill::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < ast::expr > ()), std::move(yystack_[4].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr_arguments::ptr > ())); } -#line 2342 "parser.cpp" +#line 2385 "parser.cpp" break; - case 65: // stmt_waittill: expr_object "waittill" "(" expr ")" ";" -#line 396 "parser.ypp" + case 68: // stmt_waittill: expr_object "waittill" "(" expr ")" ";" +#line 409 "parser.ypp" { yylhs.value.as < ast::stmt_waittill::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr > ()), std::make_unique(yylhs.location)); } -#line 2348 "parser.cpp" +#line 2391 "parser.cpp" break; - case 66: // stmt_waittillmatch: expr_object "waittillmatch" "(" expr "," expr_arguments_no_empty ")" ";" -#line 401 "parser.ypp" + case 69: // stmt_waittillmatch: expr_object "waittillmatch" "(" expr "," expr_arguments_no_empty ")" ";" +#line 414 "parser.ypp" { yylhs.value.as < ast::stmt_waittillmatch::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < ast::expr > ()), std::move(yystack_[4].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr_arguments::ptr > ())); } -#line 2354 "parser.cpp" +#line 2397 "parser.cpp" break; - case 67: // stmt_waittillmatch: expr_object "waittillmatch" "(" expr ")" ";" -#line 403 "parser.ypp" + case 70: // stmt_waittillmatch: expr_object "waittillmatch" "(" expr ")" ";" +#line 416 "parser.ypp" { yylhs.value.as < ast::stmt_waittillmatch::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr > ()), std::make_unique(yylhs.location)); } -#line 2360 "parser.cpp" +#line 2403 "parser.cpp" break; - case 68: // stmt_waittillframeend: "waittillframeend" ";" -#line 408 "parser.ypp" + case 71: // stmt_waittillframeend: "waittillframeend" ";" +#line 421 "parser.ypp" { yylhs.value.as < ast::stmt_waittillframeend::ptr > () = std::make_unique(yylhs.location); } -#line 2366 "parser.cpp" +#line 2409 "parser.cpp" break; - case 69: // stmt_if: "if" "(" expr ")" stmt -#line 413 "parser.ypp" + case 72: // stmt_if: "if" "(" expr ")" stmt +#line 426 "parser.ypp" { yylhs.value.as < ast::stmt_if::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2372 "parser.cpp" +#line 2415 "parser.cpp" break; - case 70: // stmt_ifelse: "if" "(" expr ")" stmt "else" stmt -#line 418 "parser.ypp" + case 73: // stmt_ifelse: "if" "(" expr ")" stmt "else" stmt +#line 431 "parser.ypp" { yylhs.value.as < ast::stmt_ifelse::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::stmt > ()), std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2378 "parser.cpp" +#line 2421 "parser.cpp" break; - case 71: // stmt_while: "while" "(" expr ")" stmt -#line 423 "parser.ypp" + case 74: // stmt_while: "while" "(" expr ")" stmt +#line 436 "parser.ypp" { yylhs.value.as < ast::stmt_while::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2384 "parser.cpp" +#line 2427 "parser.cpp" break; - case 72: // stmt_dowhile: "do" stmt "while" "(" expr ")" ";" -#line 428 "parser.ypp" + case 75: // stmt_dowhile: "do" stmt "while" "(" expr ")" ";" +#line 441 "parser.ypp" { yylhs.value.as < ast::stmt_dowhile::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[5].value.as < ast::stmt > ())); } -#line 2390 "parser.cpp" +#line 2433 "parser.cpp" break; - case 73: // stmt_for: "for" "(" stmt_expr ";" expr_or_empty ";" stmt_expr ")" stmt -#line 433 "parser.ypp" + case 76: // stmt_for: "for" "(" stmt_expr ";" expr_or_empty ";" stmt_expr ")" stmt +#line 446 "parser.ypp" { yylhs.value.as < ast::stmt_for::ptr > () = std::make_unique(yylhs.location, ast::stmt(std::move(yystack_[6].value.as < ast::stmt_expr::ptr > ())), std::move(yystack_[4].value.as < ast::expr > ()), ast::stmt(std::move(yystack_[2].value.as < ast::stmt_expr::ptr > ())), std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2396 "parser.cpp" +#line 2439 "parser.cpp" break; - case 74: // stmt_foreach: "foreach" "(" expr_identifier "in" expr ")" stmt -#line 438 "parser.ypp" + case 77: // stmt_foreach: "foreach" "(" expr_identifier "in" expr ")" stmt +#line 451 "parser.ypp" { yylhs.value.as < ast::stmt_foreach::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[4].value.as < ast::expr_identifier::ptr > ())), std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2402 "parser.cpp" +#line 2445 "parser.cpp" break; - case 75: // stmt_foreach: "foreach" "(" expr_identifier "," expr_identifier "in" expr ")" stmt -#line 440 "parser.ypp" + case 78: // stmt_foreach: "foreach" "(" expr_identifier "," expr_identifier "in" expr ")" stmt +#line 453 "parser.ypp" { yylhs.value.as < ast::stmt_foreach::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[6].value.as < ast::expr_identifier::ptr > ())), ast::expr(std::move(yystack_[4].value.as < ast::expr_identifier::ptr > ())), std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2408 "parser.cpp" +#line 2451 "parser.cpp" break; - case 76: // stmt_switch: "switch" "(" expr ")" stmt_block -#line 445 "parser.ypp" + case 79: // stmt_switch: "switch" "(" expr ")" stmt_block +#line 458 "parser.ypp" { yylhs.value.as < ast::stmt_switch::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::stmt_list::ptr > ())); } -#line 2414 "parser.cpp" +#line 2457 "parser.cpp" break; - case 77: // stmt_case: "case" expr_integer ":" -#line 450 "parser.ypp" + case 80: // stmt_case: "case" expr_integer ":" +#line 463 "parser.ypp" { yylhs.value.as < ast::stmt_case::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[1].value.as < ast::expr_integer::ptr > ())), std::make_unique(yylhs.location)); } -#line 2420 "parser.cpp" +#line 2463 "parser.cpp" break; - case 78: // stmt_case: "case" expr_string ":" -#line 452 "parser.ypp" + case 81: // stmt_case: "case" expr_string ":" +#line 465 "parser.ypp" { yylhs.value.as < ast::stmt_case::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[1].value.as < ast::expr_string::ptr > ())), std::make_unique(yylhs.location)); } -#line 2426 "parser.cpp" +#line 2469 "parser.cpp" break; - case 79: // stmt_default: "default" ":" -#line 457 "parser.ypp" + case 82: // stmt_default: "default" ":" +#line 470 "parser.ypp" { yylhs.value.as < ast::stmt_default::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } -#line 2432 "parser.cpp" +#line 2475 "parser.cpp" break; - case 80: // stmt_break: "break" ";" -#line 462 "parser.ypp" + case 83: // stmt_break: "break" ";" +#line 475 "parser.ypp" { yylhs.value.as < ast::stmt_break::ptr > () = std::make_unique(yylhs.location); } -#line 2438 "parser.cpp" +#line 2481 "parser.cpp" break; - case 81: // stmt_continue: "continue" ";" -#line 467 "parser.ypp" + case 84: // stmt_continue: "continue" ";" +#line 480 "parser.ypp" { yylhs.value.as < ast::stmt_continue::ptr > () = std::make_unique(yylhs.location); } -#line 2444 "parser.cpp" +#line 2487 "parser.cpp" break; - case 82: // stmt_return: "return" expr ";" -#line 472 "parser.ypp" + case 85: // stmt_return: "return" expr ";" +#line 485 "parser.ypp" { yylhs.value.as < ast::stmt_return::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } -#line 2450 "parser.cpp" +#line 2493 "parser.cpp" break; - case 83: // stmt_return: "return" ";" -#line 474 "parser.ypp" + case 86: // stmt_return: "return" ";" +#line 487 "parser.ypp" { yylhs.value.as < ast::stmt_return::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } -#line 2456 "parser.cpp" +#line 2499 "parser.cpp" break; - case 84: // stmt_breakpoint: "breakpoint" ";" -#line 479 "parser.ypp" + case 87: // stmt_breakpoint: "breakpoint" ";" +#line 492 "parser.ypp" { yylhs.value.as < ast::stmt_breakpoint::ptr > () = std::make_unique(yylhs.location); } -#line 2462 "parser.cpp" +#line 2505 "parser.cpp" break; - case 85: // stmt_prof_begin: "prof_begin" "(" expr_arguments ")" ";" -#line 484 "parser.ypp" + case 88: // stmt_prof_begin: "prof_begin" "(" expr_arguments ")" ";" +#line 497 "parser.ypp" { yylhs.value.as < ast::stmt_prof_begin::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr_arguments::ptr > ())); } -#line 2468 "parser.cpp" +#line 2511 "parser.cpp" break; - case 86: // stmt_prof_end: "prof_end" "(" expr_arguments ")" ";" -#line 489 "parser.ypp" + case 89: // stmt_prof_end: "prof_end" "(" expr_arguments ")" ";" +#line 502 "parser.ypp" { yylhs.value.as < ast::stmt_prof_end::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr_arguments::ptr > ())); } -#line 2474 "parser.cpp" +#line 2517 "parser.cpp" break; - case 87: // expr: expr_ternary -#line 493 "parser.ypp" + case 90: // expr: expr_ternary +#line 506 "parser.ypp" { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } -#line 2480 "parser.cpp" +#line 2523 "parser.cpp" break; - case 88: // expr: expr_binary -#line 494 "parser.ypp" - { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } -#line 2486 "parser.cpp" - break; - - case 89: // expr: expr_primitive -#line 495 "parser.ypp" - { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } -#line 2492 "parser.cpp" - break; - - case 90: // expr_or_empty: expr -#line 499 "parser.ypp" - { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } -#line 2498 "parser.cpp" - break; - - case 91: // expr_or_empty: %empty -#line 500 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location); } -#line 2504 "parser.cpp" - break; - - case 92: // expr_assign: expr_object "=" expr -#line 505 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2510 "parser.cpp" - break; - - case 93: // expr_assign: expr_object "|=" expr + case 91: // expr: expr_binary #line 507 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2516 "parser.cpp" + { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } +#line 2529 "parser.cpp" break; - case 94: // expr_assign: expr_object "&=" expr -#line 509 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2522 "parser.cpp" + case 92: // expr: expr_primitive +#line 508 "parser.ypp" + { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } +#line 2535 "parser.cpp" break; - case 95: // expr_assign: expr_object "^=" expr -#line 511 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2528 "parser.cpp" + case 93: // expr_or_empty: expr +#line 512 "parser.ypp" + { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } +#line 2541 "parser.cpp" break; - case 96: // expr_assign: expr_object "<<=" expr + case 94: // expr_or_empty: %empty #line 513 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location); } +#line 2547 "parser.cpp" + break; + + case 95: // expr_assign: expr_object "=" expr +#line 518 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2553 "parser.cpp" + break; + + case 96: // expr_assign: expr_object "|=" expr +#line 520 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2559 "parser.cpp" + break; + + case 97: // expr_assign: expr_object "&=" expr +#line 522 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2565 "parser.cpp" + break; + + case 98: // expr_assign: expr_object "^=" expr +#line 524 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2571 "parser.cpp" + break; + + case 99: // expr_assign: expr_object "<<=" expr +#line 526 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()),std::move( yystack_[0].value.as < ast::expr > ())); } -#line 2534 "parser.cpp" +#line 2577 "parser.cpp" break; - case 97: // expr_assign: expr_object ">>=" expr -#line 515 "parser.ypp" + case 100: // expr_assign: expr_object ">>=" expr +#line 528 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2540 "parser.cpp" +#line 2583 "parser.cpp" break; - case 98: // expr_assign: expr_object "+=" expr -#line 517 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2546 "parser.cpp" - break; - - case 99: // expr_assign: expr_object "-=" expr -#line 519 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2552 "parser.cpp" - break; - - case 100: // expr_assign: expr_object "*=" expr -#line 521 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2558 "parser.cpp" - break; - - case 101: // expr_assign: expr_object "/=" expr -#line 523 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2564 "parser.cpp" - break; - - case 102: // expr_assign: expr_object "%=" expr -#line 525 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2570 "parser.cpp" - break; - - case 103: // expr_increment: "++" expr_object + case 101: // expr_assign: expr_object "+=" expr #line 530 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ()), true); } -#line 2576 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2589 "parser.cpp" break; - case 104: // expr_increment: expr_object "++" + case 102: // expr_assign: expr_object "-=" expr #line 532 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2595 "parser.cpp" + break; + + case 103: // expr_assign: expr_object "*=" expr +#line 534 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2601 "parser.cpp" + break; + + case 104: // expr_assign: expr_object "/=" expr +#line 536 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2607 "parser.cpp" + break; + + case 105: // expr_assign: expr_object "%=" expr +#line 538 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2613 "parser.cpp" + break; + + case 106: // expr_increment: "++" expr_object +#line 543 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ()), true); } +#line 2619 "parser.cpp" + break; + + case 107: // expr_increment: expr_object "++" +#line 545 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ()), false); } -#line 2582 "parser.cpp" +#line 2625 "parser.cpp" break; - case 105: // expr_decrement: "--" expr_object -#line 537 "parser.ypp" + case 108: // expr_decrement: "--" expr_object +#line 550 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ()), true); } -#line 2588 "parser.cpp" +#line 2631 "parser.cpp" break; - case 106: // expr_decrement: expr_object "--" -#line 539 "parser.ypp" + case 109: // expr_decrement: expr_object "--" +#line 552 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ()), false); } -#line 2594 "parser.cpp" +#line 2637 "parser.cpp" break; - case 107: // expr_ternary: expr "?" expr ":" expr -#line 544 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2600 "parser.cpp" - break; - - case 108: // expr_binary: expr "||" expr -#line 549 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2606 "parser.cpp" - break; - - case 109: // expr_binary: expr "&&" expr -#line 551 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2612 "parser.cpp" - break; - - case 110: // expr_binary: expr "==" expr -#line 553 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2618 "parser.cpp" - break; - - case 111: // expr_binary: expr "!=" expr -#line 555 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2624 "parser.cpp" - break; - - case 112: // expr_binary: expr "<=" expr + case 110: // expr_ternary: expr "?" expr ":" expr #line 557 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2643 "parser.cpp" + break; + + case 111: // expr_binary: expr "||" expr +#line 562 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2649 "parser.cpp" + break; + + case 112: // expr_binary: expr "&&" expr +#line 564 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2655 "parser.cpp" + break; + + case 113: // expr_binary: expr "==" expr +#line 566 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2661 "parser.cpp" + break; + + case 114: // expr_binary: expr "!=" expr +#line 568 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2667 "parser.cpp" + break; + + case 115: // expr_binary: expr "<=" expr +#line 570 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2630 "parser.cpp" +#line 2673 "parser.cpp" break; - case 113: // expr_binary: expr ">=" expr -#line 559 "parser.ypp" + case 116: // expr_binary: expr ">=" expr +#line 572 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2636 "parser.cpp" +#line 2679 "parser.cpp" break; - case 114: // expr_binary: expr "<" expr -#line 561 "parser.ypp" + case 117: // expr_binary: expr "<" expr +#line 574 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2642 "parser.cpp" +#line 2685 "parser.cpp" break; - case 115: // expr_binary: expr ">" expr -#line 563 "parser.ypp" + case 118: // expr_binary: expr ">" expr +#line 576 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2648 "parser.cpp" +#line 2691 "parser.cpp" break; - case 116: // expr_binary: expr "|" expr -#line 565 "parser.ypp" + case 119: // expr_binary: expr "|" expr +#line 578 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2654 "parser.cpp" +#line 2697 "parser.cpp" break; - case 117: // expr_binary: expr "&" expr -#line 567 "parser.ypp" + case 120: // expr_binary: expr "&" expr +#line 580 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2660 "parser.cpp" +#line 2703 "parser.cpp" break; - case 118: // expr_binary: expr "^" expr -#line 569 "parser.ypp" + case 121: // expr_binary: expr "^" expr +#line 582 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2666 "parser.cpp" +#line 2709 "parser.cpp" break; - case 119: // expr_binary: expr "<<" expr -#line 571 "parser.ypp" + case 122: // expr_binary: expr "<<" expr +#line 584 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2672 "parser.cpp" +#line 2715 "parser.cpp" break; - case 120: // expr_binary: expr ">>" expr -#line 573 "parser.ypp" + case 123: // expr_binary: expr ">>" expr +#line 586 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2678 "parser.cpp" +#line 2721 "parser.cpp" break; - case 121: // expr_binary: expr "+" expr -#line 575 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2684 "parser.cpp" - break; - - case 122: // expr_binary: expr "-" expr -#line 577 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2690 "parser.cpp" - break; - - case 123: // expr_binary: expr "*" expr -#line 579 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2696 "parser.cpp" - break; - - case 124: // expr_binary: expr "/" expr -#line 581 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2702 "parser.cpp" - break; - - case 125: // expr_binary: expr "%" expr -#line 583 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2708 "parser.cpp" - break; - - case 126: // expr_primitive: expr_complement -#line 587 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_complement::ptr > ()); } -#line 2714 "parser.cpp" - break; - - case 127: // expr_primitive: expr_not + case 124: // expr_binary: expr "+" expr #line 588 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_not::ptr > ()); } -#line 2720 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2727 "parser.cpp" break; - case 128: // expr_primitive: expr_call -#line 589 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_call::ptr > ()); } -#line 2726 "parser.cpp" - break; - - case 129: // expr_primitive: expr_method + case 125: // expr_binary: expr "-" expr #line 590 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_method::ptr > ()); } -#line 2732 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2733 "parser.cpp" break; - case 130: // expr_primitive: expr_add_array -#line 591 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_add_array::ptr > ()); } -#line 2738 "parser.cpp" - break; - - case 131: // expr_primitive: expr_reference + case 126: // expr_binary: expr "*" expr #line 592 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_reference::ptr > ()); } -#line 2744 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2739 "parser.cpp" break; - case 132: // expr_primitive: expr_array -#line 593 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_array::ptr > ()); } -#line 2750 "parser.cpp" - break; - - case 133: // expr_primitive: expr_field + case 127: // expr_binary: expr "/" expr #line 594 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_field::ptr > ()); } -#line 2756 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2745 "parser.cpp" break; - case 134: // expr_primitive: expr_size -#line 595 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_size::ptr > ()); } -#line 2762 "parser.cpp" - break; - - case 135: // expr_primitive: expr_paren + case 128: // expr_binary: expr "%" expr #line 596 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_paren::ptr > ()); } -#line 2768 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2751 "parser.cpp" break; - case 136: // expr_primitive: expr_thisthread -#line 597 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_thisthread::ptr > ()); } -#line 2774 "parser.cpp" - break; - - case 137: // expr_primitive: expr_empty_array -#line 598 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_empty_array::ptr > ()); } -#line 2780 "parser.cpp" - break; - - case 138: // expr_primitive: expr_undefined -#line 599 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_undefined::ptr > ()); } -#line 2786 "parser.cpp" - break; - - case 139: // expr_primitive: expr_game + case 129: // expr_primitive: expr_complement #line 600 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_game::ptr > ()); } -#line 2792 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_complement::ptr > ()); } +#line 2757 "parser.cpp" break; - case 140: // expr_primitive: expr_self + case 130: // expr_primitive: expr_not #line 601 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_self::ptr > ()); } -#line 2798 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_not::ptr > ()); } +#line 2763 "parser.cpp" break; - case 141: // expr_primitive: expr_anim + case 131: // expr_primitive: expr_call #line 602 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_anim::ptr > ()); } -#line 2804 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_call::ptr > ()); } +#line 2769 "parser.cpp" break; - case 142: // expr_primitive: expr_level + case 132: // expr_primitive: expr_method #line 603 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_level::ptr > ()); } -#line 2810 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_method::ptr > ()); } +#line 2775 "parser.cpp" break; - case 143: // expr_primitive: expr_animation + case 133: // expr_primitive: expr_add_array #line 604 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_animation::ptr > ()); } -#line 2816 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_add_array::ptr > ()); } +#line 2781 "parser.cpp" break; - case 144: // expr_primitive: expr_animtree + case 134: // expr_primitive: expr_reference #line 605 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_animtree::ptr > ()); } -#line 2822 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_reference::ptr > ()); } +#line 2787 "parser.cpp" break; - case 145: // expr_primitive: expr_identifier + case 135: // expr_primitive: expr_array #line 606 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ()); } -#line 2828 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_array::ptr > ()); } +#line 2793 "parser.cpp" break; - case 146: // expr_primitive: expr_istring + case 136: // expr_primitive: expr_field #line 607 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_istring::ptr > ()); } -#line 2834 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_field::ptr > ()); } +#line 2799 "parser.cpp" break; - case 147: // expr_primitive: expr_string + case 137: // expr_primitive: expr_size #line 608 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_string::ptr > ()); } -#line 2840 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_size::ptr > ()); } +#line 2805 "parser.cpp" break; - case 148: // expr_primitive: expr_color + case 138: // expr_primitive: expr_paren #line 609 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_color::ptr > ()); } -#line 2846 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_paren::ptr > ()); } +#line 2811 "parser.cpp" break; - case 149: // expr_primitive: expr_vector + case 139: // expr_primitive: expr_thisthread #line 610 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_vector::ptr > ()); } -#line 2852 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_thisthread::ptr > ()); } +#line 2817 "parser.cpp" break; - case 150: // expr_primitive: expr_float + case 140: // expr_primitive: expr_empty_array #line 611 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_float::ptr > ()); } -#line 2858 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_empty_array::ptr > ()); } +#line 2823 "parser.cpp" break; - case 151: // expr_primitive: expr_integer + case 141: // expr_primitive: expr_undefined #line 612 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_integer::ptr > ()); } -#line 2864 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_undefined::ptr > ()); } +#line 2829 "parser.cpp" break; - case 152: // expr_primitive: expr_false + case 142: // expr_primitive: expr_game #line 613 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_false::ptr > ()); } -#line 2870 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_game::ptr > ()); } +#line 2835 "parser.cpp" break; - case 153: // expr_primitive: expr_true + case 143: // expr_primitive: expr_self #line 614 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_true::ptr > ()); } -#line 2876 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_self::ptr > ()); } +#line 2841 "parser.cpp" break; - case 154: // expr_complement: "~" expr + case 144: // expr_primitive: expr_anim +#line 615 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_anim::ptr > ()); } +#line 2847 "parser.cpp" + break; + + case 145: // expr_primitive: expr_level +#line 616 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_level::ptr > ()); } +#line 2853 "parser.cpp" + break; + + case 146: // expr_primitive: expr_animation +#line 617 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_animation::ptr > ()); } +#line 2859 "parser.cpp" + break; + + case 147: // expr_primitive: expr_animtree +#line 618 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_animtree::ptr > ()); } +#line 2865 "parser.cpp" + break; + + case 148: // expr_primitive: expr_identifier #line 619 "parser.ypp" - { yylhs.value.as < ast::expr_complement::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2882 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ()); } +#line 2871 "parser.cpp" break; - case 155: // expr_not: "!" expr + case 149: // expr_primitive: expr_istring +#line 620 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_istring::ptr > ()); } +#line 2877 "parser.cpp" + break; + + case 150: // expr_primitive: expr_string +#line 621 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_string::ptr > ()); } +#line 2883 "parser.cpp" + break; + + case 151: // expr_primitive: expr_color +#line 622 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_color::ptr > ()); } +#line 2889 "parser.cpp" + break; + + case 152: // expr_primitive: expr_vector +#line 623 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_vector::ptr > ()); } +#line 2895 "parser.cpp" + break; + + case 153: // expr_primitive: expr_float #line 624 "parser.ypp" - { yylhs.value.as < ast::expr_not::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2888 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_float::ptr > ()); } +#line 2901 "parser.cpp" break; - case 156: // expr_call: expr_function -#line 628 "parser.ypp" - { yylhs.value.as < ast::expr_call::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::call > ())); } -#line 2894 "parser.cpp" + case 154: // expr_primitive: expr_integer +#line 625 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_integer::ptr > ()); } +#line 2907 "parser.cpp" break; - case 157: // expr_call: expr_pointer -#line 629 "parser.ypp" - { yylhs.value.as < ast::expr_call::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::call > ())); } -#line 2900 "parser.cpp" + case 155: // expr_primitive: expr_false +#line 626 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_false::ptr > ()); } +#line 2913 "parser.cpp" break; - case 158: // expr_method: expr_object expr_function + case 156: // expr_primitive: expr_true +#line 627 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_true::ptr > ()); } +#line 2919 "parser.cpp" + break; + + case 157: // expr_complement: "~" expr #line 632 "parser.ypp" - { yylhs.value.as < ast::expr_method::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::call > ())); } -#line 2906 "parser.cpp" + { yylhs.value.as < ast::expr_complement::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2925 "parser.cpp" break; - case 159: // expr_method: expr_object expr_pointer -#line 633 "parser.ypp" - { yylhs.value.as < ast::expr_method::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::call > ())); } -#line 2912 "parser.cpp" + case 158: // expr_not: "!" expr +#line 637 "parser.ypp" + { yylhs.value.as < ast::expr_not::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2931 "parser.cpp" break; - case 160: // expr_function: expr_identifier "(" expr_arguments ")" -#line 638 "parser.ypp" - { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::normal); } -#line 2918 "parser.cpp" + case 159: // expr_call: expr_function +#line 641 "parser.ypp" + { yylhs.value.as < ast::expr_call::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::call > ())); } +#line 2937 "parser.cpp" break; - case 161: // expr_function: expr_path "::" expr_identifier "(" expr_arguments ")" -#line 640 "parser.ypp" - { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr_path::ptr > ()), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::normal); } -#line 2924 "parser.cpp" - break; - - case 162: // expr_function: "thread" expr_identifier "(" expr_arguments ")" + case 160: // expr_call: expr_pointer #line 642 "parser.ypp" - { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::thread); } -#line 2930 "parser.cpp" + { yylhs.value.as < ast::expr_call::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::call > ())); } +#line 2943 "parser.cpp" break; - case 163: // expr_function: "thread" expr_path "::" expr_identifier "(" expr_arguments ")" -#line 644 "parser.ypp" - { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr_path::ptr > ()), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::thread); } -#line 2936 "parser.cpp" + case 161: // expr_method: expr_object expr_function +#line 645 "parser.ypp" + { yylhs.value.as < ast::expr_method::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::call > ())); } +#line 2949 "parser.cpp" break; - case 164: // expr_function: "childthread" expr_identifier "(" expr_arguments ")" + case 162: // expr_method: expr_object expr_pointer #line 646 "parser.ypp" - { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::childthread); } -#line 2942 "parser.cpp" + { yylhs.value.as < ast::expr_method::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::call > ())); } +#line 2955 "parser.cpp" break; - case 165: // expr_function: "childthread" expr_path "::" expr_identifier "(" expr_arguments ")" -#line 648 "parser.ypp" - { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr_path::ptr > ()), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::childthread); } -#line 2948 "parser.cpp" + case 163: // expr_function: expr_identifier "(" expr_arguments ")" +#line 651 "parser.ypp" + { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::normal); } +#line 2961 "parser.cpp" break; - case 166: // expr_pointer: "[" "[" expr "]" "]" "(" expr_arguments ")" + case 164: // expr_function: expr_path "::" expr_identifier "(" expr_arguments ")" #line 653 "parser.ypp" - { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::normal); } -#line 2954 "parser.cpp" + { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr_path::ptr > ()), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::normal); } +#line 2967 "parser.cpp" break; - case 167: // expr_pointer: "thread" "[" "[" expr "]" "]" "(" expr_arguments ")" + case 165: // expr_function: "thread" expr_identifier "(" expr_arguments ")" #line 655 "parser.ypp" - { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::thread); } -#line 2960 "parser.cpp" + { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::thread); } +#line 2973 "parser.cpp" break; - case 168: // expr_pointer: "childthread" "[" "[" expr "]" "]" "(" expr_arguments ")" + case 166: // expr_function: "thread" expr_path "::" expr_identifier "(" expr_arguments ")" #line 657 "parser.ypp" - { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::childthread); } -#line 2966 "parser.cpp" + { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr_path::ptr > ()), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::thread); } +#line 2979 "parser.cpp" break; - case 169: // expr_pointer: "call" "[" "[" expr "]" "]" "(" expr_arguments ")" + case 167: // expr_function: "childthread" expr_identifier "(" expr_arguments ")" #line 659 "parser.ypp" + { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::childthread); } +#line 2985 "parser.cpp" + break; + + case 168: // expr_function: "childthread" expr_path "::" expr_identifier "(" expr_arguments ")" +#line 661 "parser.ypp" + { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr_path::ptr > ()), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::childthread); } +#line 2991 "parser.cpp" + break; + + case 169: // expr_pointer: "[" "[" expr "]" "]" "(" expr_arguments ")" +#line 666 "parser.ypp" + { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::normal); } +#line 2997 "parser.cpp" + break; + + case 170: // expr_pointer: "thread" "[" "[" expr "]" "]" "(" expr_arguments ")" +#line 668 "parser.ypp" + { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::thread); } +#line 3003 "parser.cpp" + break; + + case 171: // expr_pointer: "childthread" "[" "[" expr "]" "]" "(" expr_arguments ")" +#line 670 "parser.ypp" + { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::childthread); } +#line 3009 "parser.cpp" + break; + + case 172: // expr_pointer: "call" "[" "[" expr "]" "]" "(" expr_arguments ")" +#line 672 "parser.ypp" { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::builtin); } -#line 2972 "parser.cpp" +#line 3015 "parser.cpp" break; - case 170: // expr_add_array: "[" expr_arguments_no_empty "]" -#line 664 "parser.ypp" + case 173: // expr_add_array: "[" expr_arguments_no_empty "]" +#line 677 "parser.ypp" { yylhs.value.as < ast::expr_add_array::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ())); } -#line 2978 "parser.cpp" +#line 3021 "parser.cpp" break; - case 171: // expr_parameters: expr_parameters "," expr_identifier -#line 669 "parser.ypp" + case 174: // expr_parameters: expr_parameters "," expr_identifier +#line 682 "parser.ypp" { yylhs.value.as < ast::expr_parameters::ptr > () = std::move(yystack_[2].value.as < ast::expr_parameters::ptr > ()); yylhs.value.as < ast::expr_parameters::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ())); } -#line 2984 "parser.cpp" +#line 3027 "parser.cpp" break; - case 172: // expr_parameters: expr_identifier -#line 671 "parser.ypp" + case 175: // expr_parameters: expr_identifier +#line 684 "parser.ypp" { yylhs.value.as < ast::expr_parameters::ptr > () = std::make_unique(yylhs.location); yylhs.value.as < ast::expr_parameters::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ())); } -#line 2990 "parser.cpp" +#line 3033 "parser.cpp" break; - case 173: // expr_parameters: %empty -#line 673 "parser.ypp" + case 176: // expr_parameters: %empty +#line 686 "parser.ypp" { yylhs.value.as < ast::expr_parameters::ptr > () = std::make_unique(yylhs.location); } -#line 2996 "parser.cpp" +#line 3039 "parser.cpp" break; - case 174: // expr_arguments: expr_arguments_no_empty -#line 678 "parser.ypp" + case 177: // expr_arguments: expr_arguments_no_empty +#line 691 "parser.ypp" { yylhs.value.as < ast::expr_arguments::ptr > () = std::move(yystack_[0].value.as < ast::expr_arguments::ptr > ()); } -#line 3002 "parser.cpp" +#line 3045 "parser.cpp" break; - case 175: // expr_arguments: %empty -#line 680 "parser.ypp" + case 178: // expr_arguments: %empty +#line 693 "parser.ypp" { yylhs.value.as < ast::expr_arguments::ptr > () = std::make_unique(yylhs.location); } -#line 3008 "parser.cpp" +#line 3051 "parser.cpp" break; - case 176: // expr_arguments_no_empty: expr_arguments "," expr -#line 685 "parser.ypp" + case 179: // expr_arguments_no_empty: expr_arguments "," expr +#line 698 "parser.ypp" { yylhs.value.as < ast::expr_arguments::ptr > () = std::move(yystack_[2].value.as < ast::expr_arguments::ptr > ()); yylhs.value.as < ast::expr_arguments::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::expr > ())); } -#line 3014 "parser.cpp" +#line 3057 "parser.cpp" break; - case 177: // expr_arguments_no_empty: expr -#line 687 "parser.ypp" + case 180: // expr_arguments_no_empty: expr +#line 700 "parser.ypp" { yylhs.value.as < ast::expr_arguments::ptr > () = std::make_unique(yylhs.location); yylhs.value.as < ast::expr_arguments::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::expr > ())); } -#line 3020 "parser.cpp" +#line 3063 "parser.cpp" break; - case 178: // expr_reference: "::" expr_identifier -#line 692 "parser.ypp" + case 181: // expr_reference: "::" expr_identifier +#line 705 "parser.ypp" { yylhs.value.as < ast::expr_reference::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ())); } -#line 3026 "parser.cpp" +#line 3069 "parser.cpp" break; - case 179: // expr_reference: expr_path "::" expr_identifier -#line 694 "parser.ypp" + case 182: // expr_reference: expr_path "::" expr_identifier +#line 707 "parser.ypp" { yylhs.value.as < ast::expr_reference::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr_path::ptr > ()), std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ())); } -#line 3032 "parser.cpp" +#line 3075 "parser.cpp" break; - case 180: // expr_array: expr_object "[" expr "]" -#line 699 "parser.ypp" + case 183: // expr_array: expr_object "[" expr "]" +#line 712 "parser.ypp" { yylhs.value.as < ast::expr_array::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[3].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr > ())); } -#line 3038 "parser.cpp" +#line 3081 "parser.cpp" break; - case 181: // expr_field: expr_object "." expr_identifier -#line 704 "parser.ypp" + case 184: // expr_field: expr_object "." expr_identifier +#line 717 "parser.ypp" { yylhs.value.as < ast::expr_field::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ())); } -#line 3044 "parser.cpp" +#line 3087 "parser.cpp" break; - case 182: // expr_field: expr_object "field" -#line 706 "parser.ypp" + case 185: // expr_field: expr_object "field" +#line 719 "parser.ypp" { yylhs.value.as < ast::expr_field::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ()), std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ())); } -#line 3050 "parser.cpp" +#line 3093 "parser.cpp" break; - case 183: // expr_size: expr_object ".size" -#line 711 "parser.ypp" - { yylhs.value.as < ast::expr_size::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } -#line 3056 "parser.cpp" - break; - - case 184: // expr_paren: "(" expr ")" -#line 716 "parser.ypp" - { yylhs.value.as < ast::expr_paren::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } -#line 3062 "parser.cpp" - break; - - case 185: // expr_object: expr_call -#line 720 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_call::ptr > ()); } -#line 3068 "parser.cpp" - break; - - case 186: // expr_object: expr_method -#line 721 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_method::ptr > ()); } -#line 3074 "parser.cpp" - break; - - case 187: // expr_object: expr_array -#line 722 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_array::ptr > ()); } -#line 3080 "parser.cpp" - break; - - case 188: // expr_object: expr_field -#line 723 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_field::ptr > ()); } -#line 3086 "parser.cpp" - break; - - case 189: // expr_object: expr_game + case 186: // expr_size: expr_object ".size" #line 724 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_game::ptr > ()); } -#line 3092 "parser.cpp" + { yylhs.value.as < ast::expr_size::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } +#line 3099 "parser.cpp" break; - case 190: // expr_object: expr_self -#line 725 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_self::ptr > ()); } -#line 3098 "parser.cpp" + case 187: // expr_paren: "(" expr ")" +#line 729 "parser.ypp" + { yylhs.value.as < ast::expr_paren::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } +#line 3105 "parser.cpp" break; - case 191: // expr_object: expr_anim -#line 726 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_anim::ptr > ()); } -#line 3104 "parser.cpp" - break; - - case 192: // expr_object: expr_level -#line 727 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_level::ptr > ()); } -#line 3110 "parser.cpp" - break; - - case 193: // expr_object: expr_identifier -#line 728 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ()); } -#line 3116 "parser.cpp" - break; - - case 194: // expr_thisthread: "thisthread" + case 188: // expr_object: expr_call #line 733 "parser.ypp" - { yylhs.value.as < ast::expr_thisthread::ptr > () = std::make_unique(yylhs.location); } -#line 3122 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_call::ptr > ()); } +#line 3111 "parser.cpp" break; - case 195: // expr_empty_array: "[" "]" + case 189: // expr_object: expr_method +#line 734 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_method::ptr > ()); } +#line 3117 "parser.cpp" + break; + + case 190: // expr_object: expr_array +#line 735 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_array::ptr > ()); } +#line 3123 "parser.cpp" + break; + + case 191: // expr_object: expr_field +#line 736 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_field::ptr > ()); } +#line 3129 "parser.cpp" + break; + + case 192: // expr_object: expr_game +#line 737 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_game::ptr > ()); } +#line 3135 "parser.cpp" + break; + + case 193: // expr_object: expr_self #line 738 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_self::ptr > ()); } +#line 3141 "parser.cpp" + break; + + case 194: // expr_object: expr_anim +#line 739 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_anim::ptr > ()); } +#line 3147 "parser.cpp" + break; + + case 195: // expr_object: expr_level +#line 740 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_level::ptr > ()); } +#line 3153 "parser.cpp" + break; + + case 196: // expr_object: expr_identifier +#line 741 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ()); } +#line 3159 "parser.cpp" + break; + + case 197: // expr_thisthread: "thisthread" +#line 746 "parser.ypp" + { yylhs.value.as < ast::expr_thisthread::ptr > () = std::make_unique(yylhs.location); } +#line 3165 "parser.cpp" + break; + + case 198: // expr_empty_array: "[" "]" +#line 751 "parser.ypp" { yylhs.value.as < ast::expr_empty_array::ptr > () = std::make_unique(yylhs.location); } -#line 3128 "parser.cpp" +#line 3171 "parser.cpp" break; - case 196: // expr_undefined: "undefined" -#line 743 "parser.ypp" + case 199: // expr_undefined: "undefined" +#line 756 "parser.ypp" { yylhs.value.as < ast::expr_undefined::ptr > () = std::make_unique(yylhs.location); } -#line 3134 "parser.cpp" +#line 3177 "parser.cpp" break; - case 197: // expr_game: "game" -#line 748 "parser.ypp" + case 200: // expr_game: "game" +#line 761 "parser.ypp" { yylhs.value.as < ast::expr_game::ptr > () = std::make_unique(yylhs.location); } -#line 3140 "parser.cpp" +#line 3183 "parser.cpp" break; - case 198: // expr_self: "self" -#line 753 "parser.ypp" + case 201: // expr_self: "self" +#line 766 "parser.ypp" { yylhs.value.as < ast::expr_self::ptr > () = std::make_unique(yylhs.location); } -#line 3146 "parser.cpp" +#line 3189 "parser.cpp" break; - case 199: // expr_anim: "anim" -#line 758 "parser.ypp" + case 202: // expr_anim: "anim" +#line 771 "parser.ypp" { yylhs.value.as < ast::expr_anim::ptr > () = std::make_unique(yylhs.location); } -#line 3152 "parser.cpp" +#line 3195 "parser.cpp" break; - case 200: // expr_level: "level" -#line 763 "parser.ypp" + case 203: // expr_level: "level" +#line 776 "parser.ypp" { yylhs.value.as < ast::expr_level::ptr > () = std::make_unique(yylhs.location); } -#line 3158 "parser.cpp" +#line 3201 "parser.cpp" break; - case 201: // expr_animation: "%" "identifier" -#line 768 "parser.ypp" + case 204: // expr_animation: "%" "identifier" +#line 781 "parser.ypp" { yylhs.value.as < ast::expr_animation::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3164 "parser.cpp" +#line 3207 "parser.cpp" break; - case 202: // expr_animtree: "#animtree" -#line 773 "parser.ypp" + case 205: // expr_animtree: "#animtree" +#line 786 "parser.ypp" { yylhs.value.as < ast::expr_animtree::ptr > () = std::make_unique(yylhs.location); } -#line 3170 "parser.cpp" +#line 3213 "parser.cpp" break; - case 203: // expr_identifier: "identifier" -#line 778 "parser.ypp" + case 206: // expr_identifier: "identifier" +#line 791 "parser.ypp" { yylhs.value.as < ast::expr_identifier::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3176 "parser.cpp" +#line 3219 "parser.cpp" break; - case 204: // expr_path: "path" -#line 783 "parser.ypp" + case 207: // expr_path: "path" +#line 796 "parser.ypp" { yylhs.value.as < ast::expr_path::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3182 "parser.cpp" +#line 3225 "parser.cpp" break; - case 205: // expr_path: expr_identifier -#line 785 "parser.ypp" + case 208: // expr_path: expr_identifier +#line 798 "parser.ypp" { yylhs.value.as < ast::expr_path::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < ast::expr_identifier::ptr > ()->value); } -#line 3188 "parser.cpp" +#line 3231 "parser.cpp" break; - case 206: // expr_istring: "localized string" -#line 790 "parser.ypp" + case 209: // expr_istring: "localized string" +#line 803 "parser.ypp" { yylhs.value.as < ast::expr_istring::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3194 "parser.cpp" +#line 3237 "parser.cpp" break; - case 207: // expr_string: "string literal" -#line 795 "parser.ypp" + case 210: // expr_string: "string literal" +#line 808 "parser.ypp" { yylhs.value.as < ast::expr_string::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3200 "parser.cpp" +#line 3243 "parser.cpp" break; - case 208: // expr_color: "color" -#line 800 "parser.ypp" + case 211: // expr_color: "color" +#line 813 "parser.ypp" { yylhs.value.as < ast::expr_color::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3206 "parser.cpp" +#line 3249 "parser.cpp" break; - case 209: // expr_vector: "(" expr "," expr "," expr ")" -#line 805 "parser.ypp" + case 212: // expr_vector: "(" expr "," expr "," expr ")" +#line 818 "parser.ypp" { yylhs.value.as < ast::expr_vector::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[3].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr > ())); } -#line 3212 "parser.cpp" +#line 3255 "parser.cpp" break; - case 210: // expr_float: "-" "float" -#line 810 "parser.ypp" + case 213: // expr_float: "-" "float" +#line 823 "parser.ypp" { yylhs.value.as < ast::expr_float::ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } -#line 3218 "parser.cpp" +#line 3261 "parser.cpp" break; - case 211: // expr_float: "float" -#line 812 "parser.ypp" + case 214: // expr_float: "float" +#line 825 "parser.ypp" { yylhs.value.as < ast::expr_float::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3224 "parser.cpp" +#line 3267 "parser.cpp" break; - case 212: // expr_integer: "-" "integer" -#line 817 "parser.ypp" + case 215: // expr_integer: "-" "integer" +#line 830 "parser.ypp" { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } -#line 3230 "parser.cpp" +#line 3273 "parser.cpp" break; - case 213: // expr_integer: "integer" -#line 819 "parser.ypp" + case 216: // expr_integer: "integer" +#line 832 "parser.ypp" { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3236 "parser.cpp" +#line 3279 "parser.cpp" break; - case 214: // expr_false: "false" -#line 824 "parser.ypp" + case 217: // expr_false: "false" +#line 837 "parser.ypp" { yylhs.value.as < ast::expr_false::ptr > () = std::make_unique(yylhs.location); } -#line 3242 "parser.cpp" +#line 3285 "parser.cpp" break; - case 215: // expr_true: "true" -#line 829 "parser.ypp" + case 218: // expr_true: "true" +#line 842 "parser.ypp" { yylhs.value.as < ast::expr_true::ptr > () = std::make_unique(yylhs.location); } -#line 3248 "parser.cpp" +#line 3291 "parser.cpp" break; -#line 3252 "parser.cpp" +#line 3295 "parser.cpp" default: break; @@ -3447,24 +3490,24 @@ namespace xsk { namespace gsc { namespace iw6 { "color", "float", "integer", "ADD_ARRAY", "THEN", "TERN", "NEG", "ANIMREF", "PREINC", "PREDEC", "POSTINC", "POSTDEC", "$accept", "root", "program", "inline", "include", "declaration", "decl_usingtree", - "decl_constant", "decl_thread", "stmt", "stmt_dev", "stmt_block", - "stmt_list", "stmt_expr", "stmt_call", "stmt_assign", "stmt_endon", - "stmt_notify", "stmt_wait", "stmt_waittill", "stmt_waittillmatch", - "stmt_waittillframeend", "stmt_if", "stmt_ifelse", "stmt_while", - "stmt_dowhile", "stmt_for", "stmt_foreach", "stmt_switch", "stmt_case", - "stmt_default", "stmt_break", "stmt_continue", "stmt_return", - "stmt_breakpoint", "stmt_prof_begin", "stmt_prof_end", "expr", - "expr_or_empty", "expr_assign", "expr_increment", "expr_decrement", - "expr_ternary", "expr_binary", "expr_primitive", "expr_complement", - "expr_not", "expr_call", "expr_method", "expr_function", "expr_pointer", - "expr_add_array", "expr_parameters", "expr_arguments", - "expr_arguments_no_empty", "expr_reference", "expr_array", "expr_field", - "expr_size", "expr_paren", "expr_object", "expr_thisthread", - "expr_empty_array", "expr_undefined", "expr_game", "expr_self", - "expr_anim", "expr_level", "expr_animation", "expr_animtree", - "expr_identifier", "expr_path", "expr_istring", "expr_string", - "expr_color", "expr_vector", "expr_float", "expr_integer", "expr_false", - "expr_true", YY_NULLPTR + "decl_constant", "decl_thread", "stmt", "stmt_or_dev", "stmt_list", + "stmt_or_dev_list", "stmt_dev", "stmt_block", "stmt_expr", "stmt_call", + "stmt_assign", "stmt_endon", "stmt_notify", "stmt_wait", "stmt_waittill", + "stmt_waittillmatch", "stmt_waittillframeend", "stmt_if", "stmt_ifelse", + "stmt_while", "stmt_dowhile", "stmt_for", "stmt_foreach", "stmt_switch", + "stmt_case", "stmt_default", "stmt_break", "stmt_continue", + "stmt_return", "stmt_breakpoint", "stmt_prof_begin", "stmt_prof_end", + "expr", "expr_or_empty", "expr_assign", "expr_increment", + "expr_decrement", "expr_ternary", "expr_binary", "expr_primitive", + "expr_complement", "expr_not", "expr_call", "expr_method", + "expr_function", "expr_pointer", "expr_add_array", "expr_parameters", + "expr_arguments", "expr_arguments_no_empty", "expr_reference", + "expr_array", "expr_field", "expr_size", "expr_paren", "expr_object", + "expr_thisthread", "expr_empty_array", "expr_undefined", "expr_game", + "expr_self", "expr_anim", "expr_level", "expr_animation", + "expr_animtree", "expr_identifier", "expr_path", "expr_istring", + "expr_string", "expr_color", "expr_vector", "expr_float", "expr_integer", + "expr_false", "expr_true", YY_NULLPTR }; return yy_sname[yysymbol]; } @@ -3729,518 +3772,527 @@ namespace xsk { namespace gsc { namespace iw6 { } - const short parser::yypact_ninf_ = -260; + const short parser::yypact_ninf_ = -261; - const short parser::yytable_ninf_ = -206; + const short parser::yytable_ninf_ = -209; const short parser::yypact_[] = { - 8, -260, -260, -69, -69, -3, -260, 26, 8, -260, - -260, -260, -260, -260, -260, -41, -260, -260, -4, -2, - -39, -260, -260, -260, -260, -33, 1116, -260, -260, -260, - 14, -25, -260, -260, -48, -13, -260, 20, -260, -260, - -260, -260, -260, -260, -260, 1116, 986, -33, 1116, 1116, - -87, -29, -260, -260, -260, -260, 2030, -260, -260, -260, - -260, -260, 465, 533, -260, -260, -260, -260, 567, 616, - -260, -260, 645, -260, -260, -260, 669, 677, 1024, 1089, - -260, -260, 28, 17, -260, -260, -260, -260, -260, -260, - -260, -260, 51, 48, -33, 60, 70, 72, 83, 91, - 81, 96, 1316, 986, -260, 2113, 45, 99, -260, -260, - -260, -260, -260, -260, -260, 1116, 1116, 1116, 1116, 1116, - 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, - 1116, 1116, 1116, 1116, -260, 1181, -33, -260, -260, -260, - 106, 100, 1116, -33, -260, 775, -260, -260, 1116, 1116, - -33, 1116, 1116, -33, 1116, -260, 1116, 1760, 1116, -260, - 1995, 108, 108, 2144, 1172, 150, 150, 69, 69, 69, - 69, 2154, 981, 1107, 35, 35, -260, -260, -260, 1800, - -260, -33, -1, -260, 107, 821, 1116, 105, 118, 959, - 120, 122, 124, 125, -21, 117, 123, 126, 1051, 127, - 132, 141, -260, 140, 384, 384, -260, -260, -260, 867, - -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, - -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, - -260, -260, -260, 136, 145, 146, 147, 149, -260, -260, - 1230, -260, -260, -260, -260, -6, 1840, 39, 161, 1880, - 40, 166, 1920, 1959, 170, 2113, 1116, -260, 107, -260, - 1116, -260, 913, 2065, -260, 1116, 152, 1116, -9, -33, - 1116, 133, 169, 177, -260, -260, -260, -260, 2100, -260, - 1116, 1116, 1116, -260, -260, 22, 22, -260, -260, -260, - -260, -260, -260, -260, 187, 188, 195, 196, -260, -260, - 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, - 1116, 194, -260, 1116, 197, -260, 1116, 198, 1116, 200, - 2113, 41, -260, -260, 1482, 201, 1516, 199, -260, -260, - -260, 1279, -5, 1550, -260, -260, -260, 43, 47, 1760, - 1116, 1116, 1116, 1116, 2113, 2113, 2113, 2113, 2113, 2113, - 2113, 2113, 2113, 2113, 2113, 206, 53, 207, 57, 208, - 1584, 1116, -260, 959, 1116, 959, 1116, 1116, -33, 48, - 202, 203, 1618, 1360, 1404, 1448, 1116, -260, 1116, -260, - 1116, -260, 59, 224, 1652, -260, 2113, 205, 1686, 232, - -260, -260, -260, 209, 211, 1116, 213, 1116, 214, 1116, - 87, 89, 113, -260, 959, 215, -9, 959, 1116, -260, - -260, 227, -260, 228, -260, 230, -260, -260, -260, -260, - -260, 235, -260, 1720, 223, 229, 231, 959, 959, -260, - -260, -260, -260, -260 + 8, -261, -261, -33, -33, -20, -261, 14, 8, -261, + -261, -261, -261, -261, -261, -36, -261, -261, -43, -19, + -63, -261, -261, -261, -261, -46, 932, -261, -261, -261, + 10, -28, -261, -261, -49, -27, -261, 5, -261, -261, + -261, -261, -261, -261, -261, 932, 802, -46, 932, 932, + 7, -15, -261, -261, -261, -261, 2012, -261, -261, -261, + -261, -261, 133, 340, -261, -261, -261, -261, 523, 600, + -261, -261, 674, -261, -261, -261, 840, 905, 970, 1168, + -261, -261, 27, 18, -261, -261, -261, -261, -261, -261, + -261, -261, 28, 64, -46, 75, 80, 78, 83, 88, + 82, 87, 1298, 802, -261, 2095, 89, 91, -261, -261, + -261, -261, -261, -261, -261, 932, 932, 932, 932, 932, + 932, 932, 932, 932, 932, 932, 932, 932, 932, 932, + 932, 932, 932, 932, -261, 997, -46, -261, -261, -261, + 93, 92, 932, -46, -261, 65, -261, -261, 932, 932, + -46, 932, 932, -46, 932, -261, 932, 1742, 932, -261, + 1977, 66, 66, 989, 2126, 1156, 1156, 191, 191, 191, + 191, 2136, 797, 2167, 40, 40, -261, -261, -261, 1782, + -261, -46, -25, -261, 113, 1089, 932, 104, 115, 1256, + 118, 119, 126, 127, -66, 122, 125, 129, 867, 131, + 136, 142, -261, 140, 205, 205, -261, -261, 775, -261, + -261, -261, -261, -261, -261, -261, -261, -261, -261, -261, + -261, -261, -261, -261, -261, -261, -261, -261, -261, -261, + -261, -261, -261, -261, 135, 141, 145, 146, 148, -261, + -261, 1176, -261, -261, -261, -261, -21, 1822, -12, 150, + 1862, -6, 159, 1902, 1941, 155, 2095, 932, -261, 113, + -261, 932, -261, -261, 1135, 2047, -261, 932, 171, 932, + 586, -46, 932, 109, 158, 164, -261, -261, -261, -261, + 2082, -261, 932, 932, 932, -261, -261, 663, 663, -261, + -261, -261, -261, -261, -261, -261, 168, 174, 175, 177, + -261, -261, 932, 932, 932, 932, 932, 932, 932, 932, + 932, 932, 932, 176, -261, 932, 181, -261, 932, 184, + 932, 192, 2095, -2, -261, -261, -261, 1464, 195, 1498, + 154, -261, -261, -261, 1260, -18, 1532, -261, -261, -261, + 2, 4, 1742, 932, 932, 932, 932, 2095, 2095, 2095, + 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 197, 11, + 198, 22, 200, 1566, 932, -261, 1256, 932, 1256, 932, + 932, -46, 64, 201, 202, 1600, 1342, 1386, 1430, 932, + -261, 932, -261, 932, -261, 23, 218, 1634, -261, 2095, + 211, 1668, 229, -261, -261, -261, 213, 215, 932, 216, + 932, 219, 932, 59, 69, 70, -261, 1256, 228, 586, + 1256, 932, -261, -261, 209, -261, 214, -261, 238, -261, + -261, -261, -261, -261, 239, -261, 1702, 231, 233, 234, + 1256, 1256, -261, -261, -261, -261, -261 }; const unsigned char parser::yydefact_[] = { - 3, 12, 13, 0, 0, 0, 203, 0, 2, 7, - 8, 9, 14, 15, 16, 0, 204, 205, 0, 0, - 0, 1, 4, 5, 6, 173, 0, 10, 11, 207, - 0, 0, 172, 202, 0, 0, 194, 0, 215, 214, - 196, 197, 198, 199, 200, 0, 175, 0, 0, 0, - 0, 0, 206, 208, 211, 213, 0, 87, 88, 89, - 126, 127, 128, 129, 156, 157, 130, 131, 132, 133, - 134, 135, 0, 136, 137, 138, 139, 140, 141, 142, - 143, 144, 145, 0, 146, 147, 148, 149, 150, 151, - 152, 153, 0, 0, 0, 0, 205, 0, 0, 205, - 0, 0, 0, 175, 195, 177, 0, 174, 178, 155, - 154, 210, 212, 201, 18, 0, 0, 0, 0, 0, + 3, 12, 13, 0, 0, 0, 206, 0, 2, 7, + 8, 9, 14, 15, 16, 0, 207, 208, 0, 0, + 0, 1, 4, 5, 6, 176, 0, 10, 11, 210, + 0, 0, 175, 205, 0, 0, 197, 0, 218, 217, + 199, 200, 201, 202, 203, 0, 178, 0, 0, 0, + 0, 0, 209, 211, 214, 216, 0, 90, 91, 92, + 129, 130, 131, 132, 159, 160, 133, 134, 135, 136, + 137, 138, 0, 139, 140, 141, 142, 143, 144, 145, + 146, 147, 148, 0, 149, 150, 151, 152, 153, 154, + 155, 156, 0, 0, 0, 0, 208, 0, 0, 208, + 0, 0, 0, 178, 198, 180, 0, 177, 181, 158, + 157, 213, 215, 204, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 183, 0, 0, 182, 158, 159, - 205, 0, 175, 0, 17, 0, 19, 171, 0, 175, - 0, 0, 175, 0, 0, 184, 0, 177, 0, 170, - 0, 119, 120, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 117, 118, 121, 122, 123, 124, 125, 0, - 181, 0, 0, 174, 179, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 186, 0, 0, 185, 161, 162, + 208, 0, 178, 0, 17, 0, 19, 174, 0, 178, + 0, 0, 178, 0, 0, 187, 0, 180, 0, 173, + 0, 122, 123, 111, 112, 113, 114, 115, 116, 117, + 118, 119, 120, 121, 124, 125, 126, 127, 128, 0, + 184, 0, 0, 177, 182, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 48, 0, 0, 0, 50, 20, 21, 0, - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, - 42, 43, 44, 0, 0, 0, 185, 186, 187, 188, - 0, 189, 190, 191, 192, 193, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 176, 0, 180, 0, 160, - 175, 46, 0, 0, 68, 0, 0, 0, 54, 0, - 0, 0, 0, 0, 79, 80, 81, 83, 0, 84, - 175, 175, 0, 185, 186, 103, 105, 47, 49, 57, - 58, 59, 55, 56, 0, 0, 0, 0, 104, 106, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 162, 175, 0, 164, 175, 0, 0, 0, - 107, 0, 45, 63, 0, 0, 0, 0, 51, 52, - 53, 0, 0, 0, 78, 77, 82, 0, 0, 0, - 0, 0, 0, 0, 92, 98, 99, 100, 101, 102, - 93, 94, 95, 97, 96, 0, 0, 0, 0, 0, - 0, 175, 161, 0, 0, 0, 91, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 175, 163, 175, 165, - 175, 209, 0, 69, 0, 71, 90, 0, 0, 0, - 76, 85, 86, 0, 0, 175, 0, 175, 0, 175, - 0, 0, 0, 166, 0, 0, 54, 0, 0, 60, - 62, 174, 65, 174, 67, 174, 167, 168, 169, 70, - 72, 0, 74, 0, 0, 0, 0, 0, 0, 61, - 64, 66, 73, 75 + 0, 0, 53, 0, 0, 0, 44, 49, 0, 45, + 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, + 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 0, 0, 0, 188, 189, 190, + 191, 0, 192, 193, 194, 195, 196, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 179, 0, 183, 0, + 163, 178, 51, 47, 0, 0, 71, 0, 0, 0, + 57, 0, 0, 0, 0, 0, 82, 83, 84, 86, + 0, 87, 178, 178, 0, 188, 189, 106, 108, 52, + 48, 60, 61, 62, 58, 59, 0, 0, 0, 0, + 107, 109, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 165, 178, 0, 167, 178, 0, + 0, 0, 110, 0, 50, 46, 66, 0, 0, 0, + 0, 54, 55, 56, 0, 0, 0, 81, 80, 85, + 0, 0, 0, 0, 0, 0, 0, 95, 101, 102, + 103, 104, 105, 96, 97, 98, 100, 99, 0, 0, + 0, 0, 0, 0, 178, 164, 0, 0, 0, 94, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 178, + 166, 178, 168, 178, 212, 0, 72, 0, 74, 93, + 0, 0, 0, 79, 88, 89, 0, 0, 178, 0, + 178, 0, 178, 0, 0, 0, 169, 0, 0, 57, + 0, 0, 63, 65, 177, 68, 177, 70, 177, 170, + 171, 172, 73, 75, 0, 77, 0, 0, 0, 0, + 0, 0, 64, 67, 69, 76, 78 }; const short parser::yypgoto_[] = { - -260, -260, -260, 259, 281, 288, -260, -260, -260, -172, - -260, -91, 112, -108, -260, -260, -260, -260, -260, -260, - -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, - -260, -260, -260, -260, -260, -260, -260, 185, -260, -259, - -257, -250, -260, -260, -260, -260, -260, -82, -72, -66, - -58, -260, -260, 321, -45, -260, -37, 192, -260, -260, - 240, -260, -260, -260, 253, 327, 355, 365, -260, -260, - 0, 9, -260, -15, -260, -260, -260, 129, -260, -260 + -261, -261, -261, 260, 292, 293, -261, -261, -261, -132, + 96, -261, -261, -261, -91, -85, -261, -261, -261, -261, + -261, -261, -261, -261, -261, -261, -261, -261, -261, -261, + -261, -261, -261, -261, -261, -261, -261, -261, -261, 190, + -261, -260, -254, -253, -261, -261, -261, -261, -261, -37, + -5, -67, -65, -261, -261, 412, -45, -261, 207, 244, + -261, -261, 256, -261, -261, -261, 261, 333, 338, 343, + -261, -261, 0, 9, -261, -11, -261, -261, -261, 132, + -261, -261 }; const short parser::yydefgoto_[] = { 0, 7, 8, 9, 10, 11, 12, 13, 14, 206, - 207, 208, 209, 327, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, - 226, 227, 228, 229, 230, 231, 232, 105, 387, 233, - 234, 235, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 31, 106, 183, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91 + 207, 264, 208, 209, 210, 330, 211, 212, 213, 214, + 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 227, 228, 229, 230, 231, 232, 233, 105, + 390, 234, 235, 236, 57, 58, 59, 60, 61, 62, + 63, 64, 65, 66, 31, 106, 183, 67, 68, 69, + 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, + 90, 91 }; const short parser::yytable_[] = { - 15, 107, 146, 17, 17, 30, 138, 95, 15, 328, - 25, 329, 18, 19, 139, 111, 112, 266, 330, 1, - 2, 3, 4, 5, 367, 32, 21, 93, 16, 6, - 34, 35, 94, 37, 96, 99, 26, 288, 41, 42, - 43, 44, 98, 97, 100, 142, 203, 108, 20, 16, - 6, 259, 368, -205, 204, 205, 158, 27, 107, 28, - 29, 34, 35, 236, 37, 6, 92, -193, -193, 113, - -193, 271, 140, 237, -193, 101, 143, 135, 29, 142, - 136, 141, 55, -193, 16, 6, -193, -205, 16, 6, - 288, 312, 315, 362, 147, 370, 158, 158, 158, 371, - 158, 145, 158, 236, 158, 377, 6, 236, 238, 379, - 158, 403, 144, 237, 158, 148, 158, 237, 137, 16, - 6, 149, 283, 283, -193, -193, -193, 236, 131, 132, - 133, 150, 284, 284, 116, 117, 180, 237, 151, 416, - 153, 417, 152, 184, 158, 245, 158, 328, 238, 329, - 248, 154, 238, 251, 141, 159, 330, 142, 260, 181, - 129, 130, 131, 132, 133, 418, 264, 238, 238, 265, - 158, 267, 238, 268, 138, 269, 270, 274, 325, 272, - 236, 258, 139, 280, 275, 245, 283, 276, 279, 245, - 237, 383, 281, 385, 141, 282, 284, 289, 141, 129, - 130, 131, 132, 133, 245, 245, 290, 291, 292, 245, - 293, 56, 313, 141, 141, 116, 117, 316, 141, 138, - 138, 122, 123, 124, 125, 238, 319, 139, 139, 334, - 102, 238, 419, 109, 110, 422, 112, 335, 340, 341, - 140, 129, 130, 131, 132, 133, 342, 343, 404, 141, - 355, 361, 364, 357, 359, 432, 433, 376, 378, 380, - 366, 408, 245, 391, 392, 138, 406, 22, 245, 332, - 409, 141, 410, 139, 412, 414, 420, 141, 390, 424, - 425, 236, 426, 236, 429, 140, 140, 427, 157, 23, - 430, 237, 431, 237, 141, 141, 24, 262, 421, 0, - 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 0, - 179, 0, 236, 273, 283, 236, 238, 0, 238, 0, - 0, 140, 237, 246, 284, 237, 249, 239, 0, 252, - 141, 253, 0, 255, 0, 236, 236, 0, 0, 0, - 411, 0, 413, 0, 415, 237, 237, 0, 0, 0, - 0, 0, 0, 245, 0, 245, 0, 238, 389, 238, - 238, 263, 141, 0, 141, 0, 0, 239, 0, 0, - 0, 239, 0, 278, 0, 240, 0, 0, 0, 0, - 238, 238, 0, 0, 0, 0, 239, 239, 241, 0, - 0, 239, 0, 0, 245, 0, 245, 245, 0, 0, - 0, 0, 0, 141, 0, 141, 141, 0, 0, 0, - 0, 0, 0, 34, 35, 240, 37, 245, 245, 240, - 0, 41, 42, 43, 44, 0, 141, 141, 241, 203, - 0, 320, 241, 0, 285, 286, 0, 0, 0, 240, - 324, 0, 326, 0, 239, 333, 0, 241, 241, 0, - 239, 0, 241, 182, 0, 0, 0, 339, 0, 0, - 247, 0, 242, 250, 0, 0, 0, 0, 0, 0, - 0, 16, 6, 0, 0, 344, 345, 346, 347, 348, - 349, 350, 351, 352, 353, 354, 0, 0, 0, 0, - 243, 0, 240, 360, -185, -185, 0, -185, 331, 0, - 244, -185, 242, 0, 0, 241, 242, 0, 0, 0, - -185, 241, 0, -185, 0, 372, 373, 374, 375, 0, - 0, 242, 242, 0, 0, 0, 242, 0, 0, 0, - 243, 0, 0, 0, 243, 0, 0, 0, 0, 384, - 244, 386, 388, 0, 244, 239, 0, 239, 0, 243, - 243, -185, -185, -185, 243, 0, 0, 0, 0, 244, - 244, 0, -186, -186, 244, -186, 0, 0, 0, -186, - 0, 321, 0, 0, 0, 0, 0, 0, -186, 242, - 0, -186, 0, 423, 0, 242, 239, 0, 239, 239, - 0, 337, 338, 240, 0, 240, -187, -187, 0, -187, - 0, 0, 0, -187, 0, 0, 241, 243, 241, 239, - 239, 0, -187, 243, 0, -187, 0, 244, 0, -186, - -186, -186, 0, 244, 356, 0, 0, 358, 0, 0, - 0, 0, 0, 0, 240, 0, 331, 240, 0, 0, - 0, 0, 0, 0, 0, -188, -188, 241, -188, 241, - 241, 0, -188, -187, -187, -187, 0, 240, 240, 0, - 0, -188, 0, 0, -188, 0, 0, 0, 0, 0, - 241, 241, 382, 0, 34, 35, 0, 37, 0, 0, - 242, 134, 242, 0, 0, 0, 0, 400, 0, 401, - 135, 402, 0, 136, 0, 0, 0, 0, -189, -189, - 0, -189, -188, -188, -188, -189, -190, -190, 243, -190, - 243, 0, 0, -190, -189, 0, 0, -189, 244, 0, - 244, 242, -190, 242, 242, -190, 0, 0, 0, 0, - 0, 137, 16, 6, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 242, 242, 0, 0, 0, 243, - 0, 243, 243, 0, 0, -189, -189, -189, 0, 244, - 0, 244, 244, -190, -190, -190, 0, 0, 0, 0, - 0, 0, 243, 243, 0, 0, 185, 0, 0, 0, - 0, 0, 244, 244, 186, 0, 0, 187, 188, 0, + 15, 107, 146, 17, 17, 138, 95, 139, 15, 30, + 331, 370, 18, 19, 21, 25, 332, 333, 27, 1, + 2, 3, 4, 5, 93, 32, 273, 260, 98, 94, + 142, 20, 158, 29, 96, 99, 29, 55, -208, 371, + 314, 26, 28, 97, 100, 158, 317, 108, 16, 6, + 365, 158, 6, 263, 373, 158, 374, 268, 107, 158, + 101, 158, 92, 380, 16, 6, -196, -196, 158, -196, + 16, 6, 140, -196, 382, 406, 185, 143, 142, 158, + 158, 141, -196, 113, 186, -196, -208, 187, 188, 144, + 189, 190, 191, 192, 147, 193, 194, 195, 196, 197, + 198, 199, 200, 201, 34, 35, 6, 37, 237, 111, + 112, 419, 41, 42, 43, 44, 158, 145, 145, 202, + 203, 420, 421, -196, -196, -196, 158, 158, 204, 205, + 148, 149, 325, 131, 132, 133, 180, 150, 151, 152, + 238, 153, 154, 184, 142, 246, 158, 159, 237, 331, + 249, 181, 237, 252, 141, 332, 333, 129, 130, 131, + 132, 133, 16, 6, 261, 266, 267, 285, 285, 269, + 270, 237, -188, -188, 138, -188, 139, 271, 272, -188, + 238, 259, 276, 274, 238, 246, 277, 282, -188, 246, + 278, -188, 281, 283, 141, 284, 291, 328, 141, 286, + 286, 315, 292, 238, 246, 246, 293, 294, 246, 295, + 318, 321, 112, 141, 141, 369, 56, 141, 337, 343, + 138, 138, 139, 139, 338, 344, 345, 237, 346, -188, + -188, -188, 358, 285, 386, 102, 388, 360, 109, 110, + 362, 140, 407, 364, 34, 35, 367, 37, 379, 381, + 141, 383, 41, 42, 43, 44, 116, 117, 411, 238, + 203, 427, 394, 395, 246, 286, 428, 138, 22, 139, + 246, 335, 409, 141, 412, 422, 413, 415, 425, 141, + 417, 393, 129, 130, 131, 132, 133, 140, 140, 423, + 429, 430, 432, 157, 433, 434, 141, 141, 435, 436, + 23, 24, 16, 6, 290, 160, 161, 162, 163, 164, + 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, + 175, 176, 177, 178, 424, 179, 275, 0, 0, 237, + 0, 237, 0, 0, 140, 0, 0, 0, 247, 0, + 0, 250, 0, 141, 253, 0, 254, 0, 256, 0, + 0, 0, 239, 414, 0, 416, 0, 418, 0, 0, + 0, 238, 0, 238, 0, 0, 246, 0, 246, 0, + 237, 392, 285, 237, 0, 141, 265, 141, 0, -189, + -189, 0, -189, 0, 0, 0, -189, 0, 280, 240, + 0, 0, 239, 237, 237, -189, 239, 0, -189, 0, + 0, 241, 238, 0, 286, 238, 242, 246, 0, 246, + 246, 239, 239, 0, 0, 239, 141, 0, 141, 141, + 0, 0, 0, 0, 0, 238, 238, 0, 0, 240, + 246, 246, 0, 240, 0, 0, -189, -189, -189, 141, + 141, 241, 0, 0, 0, 241, 242, 322, 240, 240, + 242, 0, 240, 0, 0, 0, 0, 327, 0, 329, + 287, 288, 336, 0, 241, 242, 242, 0, 0, 242, + 0, 239, 0, 0, 342, 0, 0, 239, 243, 0, + 0, 0, 0, 244, 0, 0, 0, 0, 245, 0, + 0, 0, 347, 348, 349, 350, 351, 352, 353, 354, + 355, 356, 357, 0, 0, 0, 0, 0, 240, 0, + 363, 0, 0, 0, 240, 0, 0, 0, 243, 0, + 241, 0, 243, 244, 0, 242, 334, 244, 245, 0, + 0, 242, 245, 375, 376, 377, 378, 243, 243, 0, + 0, 243, 244, 244, 0, 0, 244, 245, 245, 0, + 0, 245, 0, 0, 182, 0, 0, 387, 0, 389, + 391, 248, -190, -190, 251, -190, 0, 0, 0, -190, + 0, 0, 0, 239, 0, 239, 0, 0, -190, 0, + 0, -190, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 243, 0, 0, + 0, 426, 244, 243, 0, 0, 0, 245, 244, 0, + 240, 0, 240, 245, 239, 0, 239, 239, 0, -190, + -190, -190, 241, 0, 241, 34, 35, 242, 37, 242, + 0, 0, 0, 41, 42, 43, 44, 239, 239, -191, + -191, 203, -191, 0, 0, 0, -191, 0, 0, 204, + 205, 240, 0, 240, 240, -191, 0, 0, -191, 0, + 0, 0, 0, 241, 0, 334, 241, 0, 242, 0, + 242, 242, 0, 323, 240, 240, 0, 0, 0, 0, + 0, 0, 0, 16, 6, 0, 241, 241, 0, 0, + 0, 242, 242, 0, 340, 341, -191, -191, -191, 243, + 0, 243, 34, 35, 244, 37, 244, 0, 0, 245, + 0, 245, 0, 34, 35, 0, 37, 0, 135, 0, + 134, 136, 0, 0, 0, 0, 0, 359, 0, 135, + 361, 0, 136, 0, 0, 0, 0, 0, 0, 0, + 243, 0, 243, 243, 0, 244, 0, 244, 244, 0, + 245, 0, 245, 245, 0, 0, 0, 0, 0, 137, + 16, 6, 0, 243, 243, 0, 0, 0, 244, 244, + 137, 16, 6, 245, 245, 0, 385, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 185, 0, 0, 0, + 0, 403, 0, 404, 186, 405, 0, 187, 188, 0, 189, 190, 191, 192, 0, 193, 194, 195, 196, 197, - 198, 199, 200, 201, 34, 35, 0, 37, 0, 0, - 0, 0, 41, 42, 43, 44, 0, 0, 145, 202, - 203, 0, 185, 261, 0, 0, 0, 0, 204, 205, - 186, 0, 0, 187, 188, 0, 189, 190, 191, 192, - 0, 193, 194, 195, 196, 197, 198, 199, 200, 201, - 34, 35, 0, 37, 0, 0, 0, 0, 41, 42, - 43, 44, 16, 6, 145, 0, 203, 0, 185, 0, - 0, 0, 0, 0, 204, 205, 186, 0, 0, 187, - 188, 0, 189, 190, 191, 192, 0, 193, 194, 195, - 196, 197, 198, 199, 200, 201, 34, 35, 0, 37, - 0, 0, 0, 0, 41, 42, 43, 44, 16, 6, - 145, 287, 203, 0, 185, 322, 0, 0, 0, 0, - 204, 205, 186, 0, 0, 187, 188, 0, 189, 190, - 191, 192, 0, 193, 194, 195, 196, 197, 198, 199, - 200, 201, 34, 35, 0, 37, 0, 0, 0, 0, - 41, 42, 43, 44, 16, 6, 145, 0, 203, 0, - 185, 0, 0, 0, 0, 0, 204, 205, 186, 0, + 198, 199, 200, 201, 34, 35, 0, 37, 33, 0, + 0, 0, 41, 42, 43, 44, 0, 0, 145, 289, + 203, 0, 0, 0, 0, 0, 0, 0, 204, 205, + 0, 34, 35, 36, 37, 38, 39, 40, 0, 41, + 42, 43, 44, 45, 0, 0, 0, 103, 104, 0, + 0, 47, 116, 117, 0, 0, 120, 121, 122, 123, + 124, 125, 16, 6, 0, 0, 0, 48, 49, -192, + -192, 0, -192, 33, 0, 0, -192, 0, 129, 130, + 131, 132, 133, 0, 50, -192, 0, 51, -192, 16, + 6, 29, 52, 53, 54, 55, 34, 35, 36, 37, + 38, 39, 40, 0, 41, 42, 43, 44, 45, 0, + 0, 0, 46, 0, 0, 0, 47, 0, 279, 0, + 0, 0, 0, 0, 0, 0, -192, -192, -192, 0, + 0, 0, 48, 49, -193, -193, 0, -193, 33, 0, + 0, -193, 0, 0, 0, 0, 0, 0, 0, 50, + -193, 0, 51, -193, 16, 6, 29, 52, 53, 54, + 55, 34, 35, 36, 37, 38, 39, 40, 0, 41, + 42, 43, 44, 45, 0, 0, 0, 46, 0, 0, + 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, + 0, -193, -193, -193, 0, 0, 0, 48, 49, -194, + -194, 0, -194, 33, 0, 0, -194, 0, 0, 0, + 0, 0, 0, 0, 50, -194, 0, 51, -194, 16, + 6, 29, 52, 53, 54, 55, 34, 35, 36, 37, + 38, 39, 40, 0, 41, 42, 43, 44, 45, 0, + 0, 0, 103, 0, 116, 117, 47, 119, 120, 121, + 122, 123, 124, 125, 0, 0, -194, -194, -194, 0, + 0, 0, 48, 49, 0, 0, 0, 126, 127, 128, + 129, 130, 131, 132, 133, 0, 0, 0, 0, 50, + 0, 0, 51, 0, 16, 6, 29, 52, 53, 54, + 55, 262, 0, 0, 0, 0, 0, 0, 186, 0, 0, 187, 188, 0, 189, 190, 191, 192, 0, 193, 194, 195, 196, 197, 198, 199, 200, 201, 34, 35, - 0, 37, 33, 0, 0, 0, 41, 42, 43, 44, - 16, 6, 145, 0, 203, 0, 0, 0, 0, 0, - 0, 0, 204, 205, 0, 34, 35, 36, 37, 38, - 39, 40, 0, 41, 42, 43, 44, 45, 0, 0, - 0, 103, 104, 0, 0, 47, 116, 117, 0, 0, - 120, 121, 122, 123, 124, 125, 16, 6, 0, 0, - 0, 48, 49, -191, -191, 0, -191, 33, 0, 0, - -191, 0, 129, 130, 131, 132, 133, 0, 50, -191, - 0, 51, -191, 16, 6, 29, 52, 53, 54, 55, - 34, 35, 36, 37, 38, 39, 40, 0, 41, 42, - 43, 44, 45, 0, 0, 0, 46, 0, 0, 0, - 47, 0, 277, 0, 0, 0, 0, 0, 0, 0, - -191, -191, -191, 0, 0, 0, 48, 49, -192, -192, - 0, -192, 33, 0, 0, -192, 0, 0, 0, 0, - 0, 0, 0, 50, -192, 0, 51, -192, 16, 6, - 29, 52, 53, 54, 55, 34, 35, 36, 37, 38, - 39, 40, 0, 41, 42, 43, 44, 45, 0, 0, - 0, 46, 116, 117, 0, 47, 120, 121, 122, 123, - 124, 125, 0, 0, 0, -192, -192, -192, 0, 0, - 0, 48, 49, 0, 0, 0, 127, 33, 129, 130, - 131, 132, 133, 0, 0, 0, 0, 0, 50, 0, - 0, 51, 0, 16, 6, 29, 52, 53, 54, 55, - 34, 35, 36, 37, 38, 39, 40, 0, 41, 42, - 43, 44, 45, 0, 0, 0, 103, 116, 117, 0, - 47, 120, 121, 122, 123, 124, 125, 294, 295, 0, - 296, 297, 0, 0, 0, 0, 48, 49, 0, 0, - 126, 127, 128, 129, 130, 131, 132, 133, 0, 34, - 35, 0, 37, 50, 0, 0, 51, 0, 16, 6, - 29, 52, 53, 54, 55, 135, 0, 0, 136, 0, - 0, 0, 0, 298, 299, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 34, 35, - 0, 37, 0, 0, 0, 0, 137, 16, 6, 0, - 0, 0, 0, 0, 135, 0, 0, 136, 0, 0, - 0, 0, 298, 299, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 300, 301, 302, 303, - 304, 305, 306, 307, 308, 309, 310, 0, 155, 0, - 0, 0, 0, 156, 0, 137, 16, 6, 115, 0, + 0, 37, 0, 0, 0, 0, 41, 42, 43, 44, + 0, 0, 145, 0, 203, 0, 0, 324, 0, 0, + 0, 0, 204, 205, 186, 0, 0, 187, 188, 0, + 189, 190, 191, 192, 0, 193, 194, 195, 196, 197, + 198, 199, 200, 201, 34, 35, 0, 37, 0, 0, + 0, 0, 41, 42, 43, 44, 16, 6, 145, 0, + 203, 0, 0, 296, 297, 0, 298, 299, 204, 205, + 0, 0, 0, 0, 0, 0, 0, -195, -195, 0, + -195, 0, 0, 0, -195, 34, 35, 0, 37, 0, + 0, 116, 117, -195, 0, 0, -195, 122, 123, 124, + 125, 135, 16, 6, 136, 0, 0, 0, 0, 300, + 301, 0, 0, 0, 0, 0, 0, 129, 130, 131, + 132, 133, 0, 302, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 312, -195, -195, -195, 0, 0, 0, + 0, 0, 137, 16, 6, 186, 0, 0, 187, 188, + 0, 189, 190, 191, 192, 0, 193, 194, 195, 196, + 197, 198, 199, 200, 201, 34, 35, 0, 37, 34, + 35, 0, 37, 41, 42, 43, 44, 0, 0, 145, + 0, 203, 0, 0, 0, 135, 0, 0, 136, 204, + 205, 0, 0, 300, 301, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, 0, 0, + 155, 0, 0, 16, 6, 156, 137, 16, 6, 0, + 115, 0, 0, 116, 117, 118, 119, 120, 121, 122, + 123, 124, 125, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 126, 127, 128, 129, + 130, 131, 132, 133, 397, 0, 0, 0, 0, 398, + 0, 0, 0, 0, 115, 0, 0, 116, 117, 118, + 119, 120, 121, 122, 123, 124, 125, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 126, 127, 128, 129, 130, 131, 132, 133, 399, 0, + 0, 0, 0, 400, 0, 0, 0, 0, 115, 0, 0, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 126, 127, 128, 129, 130, 131, - 132, 133, 394, 0, 0, 0, 0, 395, 0, 0, + 132, 133, 401, 0, 0, 0, 0, 402, 0, 0, 0, 0, 115, 0, 0, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 126, 127, - 128, 129, 130, 131, 132, 133, 396, 0, 0, 0, - 0, 397, 0, 0, 0, 0, 115, 0, 0, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 126, 127, 128, 129, 130, 131, 132, 133, - 398, 0, 0, 0, 0, 399, 0, 0, 0, 0, - 115, 0, 0, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 363, 0, 126, 127, 128, 129, - 130, 131, 132, 133, 115, 0, 0, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 365, 0, - 126, 127, 128, 129, 130, 131, 132, 133, 115, 0, - 0, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 369, 0, 126, 127, 128, 129, 130, 131, - 132, 133, 115, 0, 0, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 381, 0, 126, 127, + 0, 0, 0, 0, 0, 0, 366, 0, 126, 127, 128, 129, 130, 131, 132, 133, 115, 0, 0, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 393, 0, 126, 127, 128, 129, 130, 131, 132, 133, + 368, 0, 126, 127, 128, 129, 130, 131, 132, 133, 115, 0, 0, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 405, 0, 126, 127, 128, 129, + 0, 0, 0, 0, 372, 0, 126, 127, 128, 129, 130, 131, 132, 133, 115, 0, 0, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 407, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 384, 0, 126, 127, 128, 129, 130, 131, 132, 133, 115, 0, 0, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 428, 0, 126, 127, 128, 129, 130, 131, + 0, 0, 396, 0, 126, 127, 128, 129, 130, 131, 132, 133, 115, 0, 0, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 126, 127, - 128, 129, 130, 131, 132, 133, 254, 0, 0, 0, - 0, 0, 115, 0, 0, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 126, 127, - 128, 129, 130, 131, 132, 133, 257, 0, 0, 0, - 0, 0, 115, 0, 0, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 126, 127, - 128, 129, 130, 131, 132, 133, 311, 0, 0, 0, - 0, 0, 115, 0, 0, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 126, 127, - 128, 129, 130, 131, 132, 133, 314, 0, 0, 0, - 0, 0, 115, 0, 0, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 126, 127, - 128, 129, 130, 131, 132, 133, 317, 0, 0, 0, - 0, 0, 115, 0, 0, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 126, 127, - 128, 129, 130, 131, 132, 133, 318, 0, 0, 0, - 0, 115, 0, 0, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 126, 127, 128, - 129, 130, 131, 132, 133, 256, 0, 115, 0, 0, - 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, + 0, 0, 0, 0, 0, 0, 408, 0, 126, 127, + 128, 129, 130, 131, 132, 133, 115, 0, 0, 116, + 117, 118, 119, 120, 121, 122, 123, 124, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 126, 127, 128, 129, 130, 131, 132, - 133, 114, 115, 0, 0, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 126, 127, - 128, 129, 130, 131, 132, 133, 323, 115, 0, 0, - 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, + 410, 0, 126, 127, 128, 129, 130, 131, 132, 133, + 115, 0, 0, 116, 117, 118, 119, 120, 121, 122, + 123, 124, 125, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 431, 0, 126, 127, 128, 129, + 130, 131, 132, 133, 115, 0, 0, 116, 117, 118, + 119, 120, 121, 122, 123, 124, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 126, 127, 128, 129, 130, 131, 132, 133, 255, 0, + 0, 0, 0, 0, 115, 0, 0, 116, 117, 118, + 119, 120, 121, 122, 123, 124, 125, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 126, 127, 128, 129, 130, 131, 132, 133, 258, 0, + 0, 0, 0, 0, 115, 0, 0, 116, 117, 118, + 119, 120, 121, 122, 123, 124, 125, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 126, 127, 128, 129, 130, 131, 132, 133, 313, 0, + 0, 0, 0, 0, 115, 0, 0, 116, 117, 118, + 119, 120, 121, 122, 123, 124, 125, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 126, 127, 128, 129, 130, 131, 132, 133, 316, 0, + 0, 0, 0, 0, 115, 0, 0, 116, 117, 118, + 119, 120, 121, 122, 123, 124, 125, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 126, 127, 128, 129, 130, 131, 132, 133, 319, 0, + 0, 0, 0, 0, 115, 0, 0, 116, 117, 118, + 119, 120, 121, 122, 123, 124, 125, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 126, 127, 128, 129, 130, 131, 132, 133, 320, 0, + 0, 0, 0, 115, 0, 0, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 126, + 127, 128, 129, 130, 131, 132, 133, 257, 0, 115, + 0, 0, 116, 117, 118, 119, 120, 121, 122, 123, + 124, 125, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 126, 127, 128, 129, 130, + 131, 132, 133, 114, 115, 0, 0, 116, 117, 118, + 119, 120, 121, 122, 123, 124, 125, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 126, 127, 128, 129, 130, 131, 132, 133, 326, 115, + 0, 0, 116, 117, 118, 119, 120, 121, 122, 123, + 124, 125, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 126, 127, 128, 129, 130, + 131, 132, 133, 339, 115, 0, 0, 116, 117, 118, + 119, 120, 121, 122, 123, 124, 125, 115, 0, 0, + 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, + 126, 127, 128, 129, 130, 131, 132, 133, 0, 0, 0, 0, 0, 126, 127, 128, 129, 130, 131, 132, - 133, 336, 115, 0, 0, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 115, 0, 0, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 0, 0, 0, 0, - 0, 126, 127, 128, 129, 130, 131, 132, 133, 116, - 117, 0, 119, 120, 121, 122, 123, 124, 125, 116, - 117, 0, 0, 120, 121, 122, 123, 124, 125, 0, - 0, 0, 126, 127, 128, 129, 130, 131, 132, 133, - 0, 0, 0, 127, 128, 129, 130, 131, 132, 133 + 133, 116, 117, 0, 0, 120, 121, 122, 123, 124, + 125, 116, 117, 0, 0, 120, 121, 122, 123, 124, + 125, 0, 0, 0, 126, 127, 128, 129, 130, 131, + 132, 133, 0, 0, 0, 127, 128, 129, 130, 131, + 132, 133, 116, 117, 0, 0, 120, 121, 122, 123, + 124, 125, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 127, 0, 129, 130, + 131, 132, 133 }; const short parser::yycheck_[] = { - 0, 46, 93, 3, 4, 20, 72, 55, 8, 268, - 51, 268, 3, 4, 72, 102, 103, 189, 268, 11, - 12, 13, 14, 15, 29, 25, 0, 52, 97, 98, - 39, 40, 57, 42, 34, 35, 77, 209, 47, 48, - 49, 50, 55, 34, 35, 51, 55, 47, 51, 97, - 98, 52, 57, 59, 63, 64, 57, 61, 103, 61, - 99, 39, 40, 145, 42, 98, 52, 39, 40, 98, - 42, 92, 72, 145, 46, 55, 59, 55, 99, 51, - 58, 72, 103, 55, 97, 98, 58, 59, 97, 98, - 262, 52, 52, 52, 94, 52, 57, 57, 57, 52, - 57, 53, 57, 185, 57, 52, 98, 189, 145, 52, - 57, 52, 61, 185, 57, 55, 57, 189, 96, 97, - 98, 51, 204, 205, 96, 97, 98, 209, 93, 94, - 95, 59, 204, 205, 65, 66, 136, 209, 55, 52, - 59, 52, 51, 143, 57, 145, 57, 406, 185, 406, - 150, 55, 189, 153, 145, 56, 406, 51, 51, 59, - 91, 92, 93, 94, 95, 52, 61, 204, 205, 51, - 57, 51, 209, 51, 240, 51, 51, 60, 26, 194, - 262, 181, 240, 51, 61, 185, 268, 61, 61, 189, - 262, 363, 51, 365, 185, 55, 268, 61, 189, 91, - 92, 93, 94, 95, 204, 205, 61, 61, 61, 209, - 61, 26, 51, 204, 205, 65, 66, 51, 209, 285, - 286, 71, 72, 73, 74, 262, 56, 285, 286, 60, - 45, 268, 404, 48, 49, 407, 103, 60, 51, 51, - 240, 91, 92, 93, 94, 95, 51, 51, 24, 240, - 56, 51, 51, 56, 56, 427, 428, 51, 51, 51, - 61, 29, 262, 61, 61, 331, 61, 8, 268, 269, - 61, 262, 61, 331, 61, 61, 61, 268, 369, 52, - 52, 363, 52, 365, 61, 285, 286, 52, 103, 8, - 61, 363, 61, 365, 285, 286, 8, 185, 406, -1, - 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, -1, - 135, -1, 404, 194, 406, 407, 363, -1, 365, -1, - -1, 331, 404, 148, 406, 407, 151, 145, -1, 154, - 331, 156, -1, 158, -1, 427, 428, -1, -1, -1, - 395, -1, 397, -1, 399, 427, 428, -1, -1, -1, - -1, -1, -1, 363, -1, 365, -1, 404, 368, 406, - 407, 186, 363, -1, 365, -1, -1, 185, -1, -1, - -1, 189, -1, 198, -1, 145, -1, -1, -1, -1, - 427, 428, -1, -1, -1, -1, 204, 205, 145, -1, - -1, 209, -1, -1, 404, -1, 406, 407, -1, -1, - -1, -1, -1, 404, -1, 406, 407, -1, -1, -1, - -1, -1, -1, 39, 40, 185, 42, 427, 428, 189, - -1, 47, 48, 49, 50, -1, 427, 428, 185, 55, - -1, 256, 189, -1, 204, 205, -1, -1, -1, 209, - 265, -1, 267, -1, 262, 270, -1, 204, 205, -1, - 268, -1, 209, 142, -1, -1, -1, 282, -1, -1, - 149, -1, 145, 152, -1, -1, -1, -1, -1, -1, - -1, 97, 98, -1, -1, 300, 301, 302, 303, 304, - 305, 306, 307, 308, 309, 310, -1, -1, -1, -1, - 145, -1, 262, 318, 39, 40, -1, 42, 268, -1, - 145, 46, 185, -1, -1, 262, 189, -1, -1, -1, - 55, 268, -1, 58, -1, 340, 341, 342, 343, -1, - -1, 204, 205, -1, -1, -1, 209, -1, -1, -1, - 185, -1, -1, -1, 189, -1, -1, -1, -1, 364, - 185, 366, 367, -1, 189, 363, -1, 365, -1, 204, - 205, 96, 97, 98, 209, -1, -1, -1, -1, 204, - 205, -1, 39, 40, 209, 42, -1, -1, -1, 46, - -1, 260, -1, -1, -1, -1, -1, -1, 55, 262, - -1, 58, -1, 408, -1, 268, 404, -1, 406, 407, - -1, 280, 281, 363, -1, 365, 39, 40, -1, 42, - -1, -1, -1, 46, -1, -1, 363, 262, 365, 427, - 428, -1, 55, 268, -1, 58, -1, 262, -1, 96, - 97, 98, -1, 268, 313, -1, -1, 316, -1, -1, - -1, -1, -1, -1, 404, -1, 406, 407, -1, -1, - -1, -1, -1, -1, -1, 39, 40, 404, 42, 406, - 407, -1, 46, 96, 97, 98, -1, 427, 428, -1, - -1, 55, -1, -1, 58, -1, -1, -1, -1, -1, - 427, 428, 361, -1, 39, 40, -1, 42, -1, -1, - 363, 46, 365, -1, -1, -1, -1, 376, -1, 378, - 55, 380, -1, 58, -1, -1, -1, -1, 39, 40, - -1, 42, 96, 97, 98, 46, 39, 40, 363, 42, - 365, -1, -1, 46, 55, -1, -1, 58, 363, -1, - 365, 404, 55, 406, 407, 58, -1, -1, -1, -1, - -1, 96, 97, 98, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 427, 428, -1, -1, -1, 404, - -1, 406, 407, -1, -1, 96, 97, 98, -1, 404, - -1, 406, 407, 96, 97, 98, -1, -1, -1, -1, - -1, -1, 427, 428, -1, -1, 11, -1, -1, -1, - -1, -1, 427, 428, 19, -1, -1, 22, 23, -1, + 0, 46, 93, 3, 4, 72, 55, 72, 8, 20, + 270, 29, 3, 4, 0, 51, 270, 270, 61, 11, + 12, 13, 14, 15, 52, 25, 92, 52, 55, 57, + 51, 51, 57, 99, 34, 35, 99, 103, 59, 57, + 52, 77, 61, 34, 35, 57, 52, 47, 97, 98, + 52, 57, 98, 185, 52, 57, 52, 189, 103, 57, + 55, 57, 52, 52, 97, 98, 39, 40, 57, 42, + 97, 98, 72, 46, 52, 52, 11, 59, 51, 57, + 57, 72, 55, 98, 19, 58, 59, 22, 23, 61, + 25, 26, 27, 28, 94, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 98, 42, 145, 102, + 103, 52, 47, 48, 49, 50, 57, 53, 53, 54, + 55, 52, 52, 96, 97, 98, 57, 57, 63, 64, + 55, 51, 264, 93, 94, 95, 136, 59, 55, 51, + 145, 59, 55, 143, 51, 145, 57, 56, 185, 409, + 150, 59, 189, 153, 145, 409, 409, 91, 92, 93, + 94, 95, 97, 98, 51, 61, 51, 204, 205, 51, + 51, 208, 39, 40, 241, 42, 241, 51, 51, 46, + 185, 181, 60, 194, 189, 185, 61, 51, 55, 189, + 61, 58, 61, 51, 185, 55, 61, 26, 189, 204, + 205, 51, 61, 208, 204, 205, 61, 61, 208, 61, + 51, 56, 103, 204, 205, 61, 26, 208, 60, 51, + 287, 288, 287, 288, 60, 51, 51, 264, 51, 96, + 97, 98, 56, 270, 366, 45, 368, 56, 48, 49, + 56, 241, 24, 51, 39, 40, 51, 42, 51, 51, + 241, 51, 47, 48, 49, 50, 65, 66, 29, 264, + 55, 52, 61, 61, 264, 270, 52, 334, 8, 334, + 270, 271, 61, 264, 61, 407, 61, 61, 410, 270, + 61, 372, 91, 92, 93, 94, 95, 287, 288, 61, + 52, 52, 61, 103, 61, 61, 287, 288, 430, 431, + 8, 8, 97, 98, 208, 115, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, + 130, 131, 132, 133, 409, 135, 194, -1, -1, 366, + -1, 368, -1, -1, 334, -1, -1, -1, 148, -1, + -1, 151, -1, 334, 154, -1, 156, -1, 158, -1, + -1, -1, 145, 398, -1, 400, -1, 402, -1, -1, + -1, 366, -1, 368, -1, -1, 366, -1, 368, -1, + 407, 371, 409, 410, -1, 366, 186, 368, -1, 39, + 40, -1, 42, -1, -1, -1, 46, -1, 198, 145, + -1, -1, 185, 430, 431, 55, 189, -1, 58, -1, + -1, 145, 407, -1, 409, 410, 145, 407, -1, 409, + 410, 204, 205, -1, -1, 208, 407, -1, 409, 410, + -1, -1, -1, -1, -1, 430, 431, -1, -1, 185, + 430, 431, -1, 189, -1, -1, 96, 97, 98, 430, + 431, 185, -1, -1, -1, 189, 185, 257, 204, 205, + 189, -1, 208, -1, -1, -1, -1, 267, -1, 269, + 204, 205, 272, -1, 208, 204, 205, -1, -1, 208, + -1, 264, -1, -1, 284, -1, -1, 270, 145, -1, + -1, -1, -1, 145, -1, -1, -1, -1, 145, -1, + -1, -1, 302, 303, 304, 305, 306, 307, 308, 309, + 310, 311, 312, -1, -1, -1, -1, -1, 264, -1, + 320, -1, -1, -1, 270, -1, -1, -1, 185, -1, + 264, -1, 189, 185, -1, 264, 270, 189, 185, -1, + -1, 270, 189, 343, 344, 345, 346, 204, 205, -1, + -1, 208, 204, 205, -1, -1, 208, 204, 205, -1, + -1, 208, -1, -1, 142, -1, -1, 367, -1, 369, + 370, 149, 39, 40, 152, 42, -1, -1, -1, 46, + -1, -1, -1, 366, -1, 368, -1, -1, 55, -1, + -1, 58, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 264, -1, -1, + -1, 411, 264, 270, -1, -1, -1, 264, 270, -1, + 366, -1, 368, 270, 407, -1, 409, 410, -1, 96, + 97, 98, 366, -1, 368, 39, 40, 366, 42, 368, + -1, -1, -1, 47, 48, 49, 50, 430, 431, 39, + 40, 55, 42, -1, -1, -1, 46, -1, -1, 63, + 64, 407, -1, 409, 410, 55, -1, -1, 58, -1, + -1, -1, -1, 407, -1, 409, 410, -1, 407, -1, + 409, 410, -1, 261, 430, 431, -1, -1, -1, -1, + -1, -1, -1, 97, 98, -1, 430, 431, -1, -1, + -1, 430, 431, -1, 282, 283, 96, 97, 98, 366, + -1, 368, 39, 40, 366, 42, 368, -1, -1, 366, + -1, 368, -1, 39, 40, -1, 42, -1, 55, -1, + 46, 58, -1, -1, -1, -1, -1, 315, -1, 55, + 318, -1, 58, -1, -1, -1, -1, -1, -1, -1, + 407, -1, 409, 410, -1, 407, -1, 409, 410, -1, + 407, -1, 409, 410, -1, -1, -1, -1, -1, 96, + 97, 98, -1, 430, 431, -1, -1, -1, 430, 431, + 96, 97, 98, 430, 431, -1, 364, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 11, -1, -1, -1, + -1, 379, -1, 381, 19, 383, -1, 22, 23, -1, 25, 26, 27, 28, -1, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, -1, 42, -1, -1, + 35, 36, 37, 38, 39, 40, -1, 42, 16, -1, -1, -1, 47, 48, 49, 50, -1, -1, 53, 54, - 55, -1, 11, 12, -1, -1, -1, -1, 63, 64, - 19, -1, -1, 22, 23, -1, 25, 26, 27, 28, - -1, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, -1, 42, -1, -1, -1, -1, 47, 48, - 49, 50, 97, 98, 53, -1, 55, -1, 11, -1, - -1, -1, -1, -1, 63, 64, 19, -1, -1, 22, - 23, -1, 25, 26, 27, 28, -1, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, -1, 42, - -1, -1, -1, -1, 47, 48, 49, 50, 97, 98, - 53, 54, 55, -1, 11, 12, -1, -1, -1, -1, - 63, 64, 19, -1, -1, 22, 23, -1, 25, 26, - 27, 28, -1, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, -1, 42, -1, -1, -1, -1, - 47, 48, 49, 50, 97, 98, 53, -1, 55, -1, - 11, -1, -1, -1, -1, -1, 63, 64, 19, -1, + 55, -1, -1, -1, -1, -1, -1, -1, 63, 64, + -1, 39, 40, 41, 42, 43, 44, 45, -1, 47, + 48, 49, 50, 51, -1, -1, -1, 55, 56, -1, + -1, 59, 65, 66, -1, -1, 69, 70, 71, 72, + 73, 74, 97, 98, -1, -1, -1, 75, 76, 39, + 40, -1, 42, 16, -1, -1, 46, -1, 91, 92, + 93, 94, 95, -1, 92, 55, -1, 95, 58, 97, + 98, 99, 100, 101, 102, 103, 39, 40, 41, 42, + 43, 44, 45, -1, 47, 48, 49, 50, 51, -1, + -1, -1, 55, -1, -1, -1, 59, -1, 61, -1, + -1, -1, -1, -1, -1, -1, 96, 97, 98, -1, + -1, -1, 75, 76, 39, 40, -1, 42, 16, -1, + -1, 46, -1, -1, -1, -1, -1, -1, -1, 92, + 55, -1, 95, 58, 97, 98, 99, 100, 101, 102, + 103, 39, 40, 41, 42, 43, 44, 45, -1, 47, + 48, 49, 50, 51, -1, -1, -1, 55, -1, -1, + -1, 59, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 96, 97, 98, -1, -1, -1, 75, 76, 39, + 40, -1, 42, 16, -1, -1, 46, -1, -1, -1, + -1, -1, -1, -1, 92, 55, -1, 95, 58, 97, + 98, 99, 100, 101, 102, 103, 39, 40, 41, 42, + 43, 44, 45, -1, 47, 48, 49, 50, 51, -1, + -1, -1, 55, -1, 65, 66, 59, 68, 69, 70, + 71, 72, 73, 74, -1, -1, 96, 97, 98, -1, + -1, -1, 75, 76, -1, -1, -1, 88, 89, 90, + 91, 92, 93, 94, 95, -1, -1, -1, -1, 92, + -1, -1, 95, -1, 97, 98, 99, 100, 101, 102, + 103, 12, -1, -1, -1, -1, -1, -1, 19, -1, -1, 22, 23, -1, 25, 26, 27, 28, -1, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - -1, 42, 16, -1, -1, -1, 47, 48, 49, 50, - 97, 98, 53, -1, 55, -1, -1, -1, -1, -1, - -1, -1, 63, 64, -1, 39, 40, 41, 42, 43, - 44, 45, -1, 47, 48, 49, 50, 51, -1, -1, - -1, 55, 56, -1, -1, 59, 65, 66, -1, -1, - 69, 70, 71, 72, 73, 74, 97, 98, -1, -1, - -1, 75, 76, 39, 40, -1, 42, 16, -1, -1, - 46, -1, 91, 92, 93, 94, 95, -1, 92, 55, - -1, 95, 58, 97, 98, 99, 100, 101, 102, 103, - 39, 40, 41, 42, 43, 44, 45, -1, 47, 48, - 49, 50, 51, -1, -1, -1, 55, -1, -1, -1, - 59, -1, 61, -1, -1, -1, -1, -1, -1, -1, - 96, 97, 98, -1, -1, -1, 75, 76, 39, 40, - -1, 42, 16, -1, -1, 46, -1, -1, -1, -1, - -1, -1, -1, 92, 55, -1, 95, 58, 97, 98, - 99, 100, 101, 102, 103, 39, 40, 41, 42, 43, - 44, 45, -1, 47, 48, 49, 50, 51, -1, -1, - -1, 55, 65, 66, -1, 59, 69, 70, 71, 72, - 73, 74, -1, -1, -1, 96, 97, 98, -1, -1, - -1, 75, 76, -1, -1, -1, 89, 16, 91, 92, - 93, 94, 95, -1, -1, -1, -1, -1, 92, -1, - -1, 95, -1, 97, 98, 99, 100, 101, 102, 103, - 39, 40, 41, 42, 43, 44, 45, -1, 47, 48, - 49, 50, 51, -1, -1, -1, 55, 65, 66, -1, - 59, 69, 70, 71, 72, 73, 74, 17, 18, -1, - 20, 21, -1, -1, -1, -1, 75, 76, -1, -1, - 88, 89, 90, 91, 92, 93, 94, 95, -1, 39, - 40, -1, 42, 92, -1, -1, 95, -1, 97, 98, - 99, 100, 101, 102, 103, 55, -1, -1, 58, -1, - -1, -1, -1, 63, 64, -1, -1, -1, -1, -1, + -1, 42, -1, -1, -1, -1, 47, 48, 49, 50, + -1, -1, 53, -1, 55, -1, -1, 12, -1, -1, + -1, -1, 63, 64, 19, -1, -1, 22, 23, -1, + 25, 26, 27, 28, -1, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, -1, 42, -1, -1, + -1, -1, 47, 48, 49, 50, 97, 98, 53, -1, + 55, -1, -1, 17, 18, -1, 20, 21, 63, 64, + -1, -1, -1, -1, -1, -1, -1, 39, 40, -1, + 42, -1, -1, -1, 46, 39, 40, -1, 42, -1, + -1, 65, 66, 55, -1, -1, 58, 71, 72, 73, + 74, 55, 97, 98, 58, -1, -1, -1, -1, 63, + 64, -1, -1, -1, -1, -1, -1, 91, 92, 93, + 94, 95, -1, 77, 78, 79, 80, 81, 82, 83, + 84, 85, 86, 87, 96, 97, 98, -1, -1, -1, + -1, -1, 96, 97, 98, 19, -1, -1, 22, 23, + -1, 25, 26, 27, 28, -1, 30, 31, 32, 33, + 34, 35, 36, 37, 38, 39, 40, -1, 42, 39, + 40, -1, 42, 47, 48, 49, 50, -1, -1, 53, + -1, 55, -1, -1, -1, 55, -1, -1, 58, 63, + 64, -1, -1, 63, 64, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 39, 40, - -1, 42, -1, -1, -1, -1, 96, 97, 98, -1, - -1, -1, -1, -1, 55, -1, -1, 58, -1, -1, - -1, -1, 63, 64, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 77, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, -1, 52, -1, - -1, -1, -1, 57, -1, 96, 97, 98, 62, -1, + 80, 81, 82, 83, 84, 85, 86, 87, -1, -1, + 52, -1, -1, 97, 98, 57, 96, 97, 98, -1, + 62, -1, -1, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 88, 89, 90, 91, + 92, 93, 94, 95, 52, -1, -1, -1, -1, 57, + -1, -1, -1, -1, 62, -1, -1, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 88, 89, 90, 91, 92, 93, 94, 95, 52, -1, + -1, -1, -1, 57, -1, -1, -1, -1, 62, -1, -1, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 88, 89, 90, 91, 92, 93, 94, 95, 52, -1, -1, -1, -1, 57, -1, -1, -1, -1, 62, -1, -1, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 88, 89, - 90, 91, 92, 93, 94, 95, 52, -1, -1, -1, - -1, 57, -1, -1, -1, -1, 62, -1, -1, 65, + -1, -1, -1, -1, -1, -1, 52, -1, 88, 89, + 90, 91, 92, 93, 94, 95, 62, -1, -1, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 88, 89, 90, 91, 92, 93, 94, 95, - 52, -1, -1, -1, -1, 57, -1, -1, -1, -1, + 52, -1, 88, 89, 90, 91, 92, 93, 94, 95, 62, -1, -1, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 52, -1, 88, 89, 90, 91, @@ -4263,107 +4315,104 @@ namespace xsk { namespace gsc { namespace iw6 { -1, -1, -1, -1, 52, -1, 88, 89, 90, 91, 92, 93, 94, 95, 62, -1, -1, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 52, -1, - 88, 89, 90, 91, 92, 93, 94, 95, 62, -1, - -1, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 52, -1, 88, 89, 90, 91, 92, 93, - 94, 95, 62, -1, -1, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 88, 89, - 90, 91, 92, 93, 94, 95, 56, -1, -1, -1, - -1, -1, 62, -1, -1, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 88, 89, - 90, 91, 92, 93, 94, 95, 56, -1, -1, -1, - -1, -1, 62, -1, -1, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 88, 89, - 90, 91, 92, 93, 94, 95, 56, -1, -1, -1, - -1, -1, 62, -1, -1, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 88, 89, - 90, 91, 92, 93, 94, 95, 56, -1, -1, -1, - -1, -1, 62, -1, -1, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 88, 89, - 90, 91, 92, 93, 94, 95, 56, -1, -1, -1, - -1, -1, 62, -1, -1, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 88, 89, - 90, 91, 92, 93, 94, 95, 57, -1, -1, -1, - -1, 62, -1, -1, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 88, 89, 90, - 91, 92, 93, 94, 95, 60, -1, 62, -1, -1, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 88, 89, 90, 91, 92, 93, 94, - 95, 61, 62, -1, -1, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 88, 89, - 90, 91, 92, 93, 94, 95, 61, 62, -1, -1, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 88, 89, 90, 91, 92, 93, 94, 95, 56, -1, + -1, -1, -1, -1, 62, -1, -1, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 88, 89, 90, 91, 92, 93, 94, 95, 56, -1, + -1, -1, -1, -1, 62, -1, -1, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 88, 89, 90, 91, 92, 93, 94, 95, 56, -1, + -1, -1, -1, -1, 62, -1, -1, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 88, 89, 90, 91, 92, 93, 94, 95, 56, -1, + -1, -1, -1, -1, 62, -1, -1, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 88, 89, 90, 91, 92, 93, 94, 95, 56, -1, + -1, -1, -1, -1, 62, -1, -1, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 88, 89, 90, 91, 92, 93, 94, 95, 57, -1, + -1, -1, -1, 62, -1, -1, 65, 66, 67, 68, + 69, 70, 71, 72, 73, 74, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 88, + 89, 90, 91, 92, 93, 94, 95, 60, -1, 62, + -1, -1, 65, 66, 67, 68, 69, 70, 71, 72, + 73, 74, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 88, 89, 90, 91, 92, + 93, 94, 95, 61, 62, -1, -1, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 88, 89, 90, 91, 92, 93, 94, 95, 61, 62, + -1, -1, 65, 66, 67, 68, 69, 70, 71, 72, + 73, 74, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 88, 89, 90, 91, 92, + 93, 94, 95, 61, 62, -1, -1, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, 62, -1, -1, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 88, 89, 90, 91, 92, 93, 94, 95, -1, -1, -1, -1, -1, 88, 89, 90, 91, 92, 93, 94, - 95, 61, 62, -1, -1, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, 62, -1, -1, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 88, 89, - 90, 91, 92, 93, 94, 95, -1, -1, -1, -1, - -1, 88, 89, 90, 91, 92, 93, 94, 95, 65, - 66, -1, 68, 69, 70, 71, 72, 73, 74, 65, - 66, -1, -1, 69, 70, 71, 72, 73, 74, -1, - -1, -1, 88, 89, 90, 91, 92, 93, 94, 95, - -1, -1, -1, 89, 90, 91, 92, 93, 94, 95 + 95, 65, 66, -1, -1, 69, 70, 71, 72, 73, + 74, 65, 66, -1, -1, 69, 70, 71, 72, 73, + 74, -1, -1, -1, 88, 89, 90, 91, 92, 93, + 94, 95, -1, -1, -1, 89, 90, 91, 92, 93, + 94, 95, 65, 66, -1, -1, 69, 70, 71, 72, + 73, 74, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 89, -1, 91, 92, + 93, 94, 95 }; const unsigned char parser::yystos_[] = { 0, 11, 12, 13, 14, 15, 98, 114, 115, 116, - 117, 118, 119, 120, 121, 183, 97, 183, 184, 184, + 117, 118, 119, 120, 121, 185, 97, 185, 186, 186, 51, 0, 116, 117, 118, 51, 77, 61, 61, 99, - 186, 165, 183, 16, 39, 40, 41, 42, 43, 44, + 188, 167, 185, 16, 39, 40, 41, 42, 43, 44, 45, 47, 48, 49, 50, 51, 55, 59, 75, 76, - 92, 95, 100, 101, 102, 103, 150, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, 168, 169, 170, - 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, - 191, 192, 52, 52, 57, 55, 183, 184, 55, 183, - 184, 55, 150, 55, 56, 150, 166, 167, 183, 150, - 150, 102, 103, 98, 61, 62, 65, 66, 67, 68, + 92, 95, 100, 101, 102, 103, 152, 157, 158, 159, + 160, 161, 162, 163, 164, 165, 166, 170, 171, 172, + 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, + 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, + 193, 194, 52, 52, 57, 55, 185, 186, 55, 185, + 186, 55, 152, 55, 56, 152, 168, 169, 185, 152, + 152, 102, 103, 98, 61, 62, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 88, 89, 90, 91, - 92, 93, 94, 95, 46, 55, 58, 96, 162, 163, - 183, 184, 51, 59, 61, 53, 124, 183, 55, 51, - 59, 55, 51, 59, 55, 52, 57, 150, 57, 56, - 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, - 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, - 183, 59, 166, 167, 183, 11, 19, 22, 23, 25, + 92, 93, 94, 95, 46, 55, 58, 96, 164, 165, + 185, 186, 51, 59, 61, 53, 127, 185, 55, 51, + 59, 55, 51, 59, 55, 52, 57, 152, 57, 56, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 185, 59, 168, 169, 185, 11, 19, 22, 23, 25, 26, 27, 28, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 54, 55, 63, 64, 122, 123, 124, 125, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 152, 153, 154, 160, 161, 169, 170, - 173, 177, 178, 179, 180, 183, 150, 166, 183, 150, - 166, 183, 150, 150, 56, 150, 60, 56, 183, 52, - 51, 12, 125, 150, 61, 51, 122, 51, 51, 51, - 51, 92, 186, 190, 60, 61, 61, 61, 150, 61, - 51, 51, 55, 160, 161, 173, 173, 54, 122, 61, - 61, 61, 61, 61, 17, 18, 20, 21, 63, 64, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 56, 52, 51, 56, 52, 51, 56, 57, 56, - 150, 166, 12, 61, 150, 26, 150, 126, 152, 153, - 154, 173, 183, 150, 60, 60, 61, 166, 166, 150, - 51, 51, 51, 51, 150, 150, 150, 150, 150, 150, - 150, 150, 150, 150, 150, 56, 166, 56, 166, 56, - 150, 51, 52, 52, 51, 52, 61, 29, 57, 52, - 52, 52, 150, 150, 150, 150, 51, 52, 51, 52, - 51, 52, 166, 122, 150, 122, 150, 151, 150, 183, - 124, 61, 61, 52, 52, 57, 52, 57, 52, 57, - 166, 166, 166, 52, 24, 52, 61, 52, 29, 61, - 61, 167, 61, 167, 61, 167, 52, 52, 52, 122, - 61, 126, 122, 150, 52, 52, 52, 52, 52, 61, - 61, 61, 122, 122 + 37, 38, 54, 55, 63, 64, 122, 123, 125, 126, + 127, 129, 130, 131, 132, 133, 134, 135, 136, 137, + 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, + 148, 149, 150, 151, 154, 155, 156, 162, 163, 171, + 172, 175, 179, 180, 181, 182, 185, 152, 168, 185, + 152, 168, 185, 152, 152, 56, 152, 60, 56, 185, + 52, 51, 12, 122, 124, 152, 61, 51, 122, 51, + 51, 51, 51, 92, 188, 192, 60, 61, 61, 61, + 152, 61, 51, 51, 55, 162, 163, 175, 175, 54, + 123, 61, 61, 61, 61, 61, 17, 18, 20, 21, + 63, 64, 77, 78, 79, 80, 81, 82, 83, 84, + 85, 86, 87, 56, 52, 51, 56, 52, 51, 56, + 57, 56, 152, 168, 12, 122, 61, 152, 26, 152, + 128, 154, 155, 156, 175, 185, 152, 60, 60, 61, + 168, 168, 152, 51, 51, 51, 51, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 56, 168, + 56, 168, 56, 152, 51, 52, 52, 51, 52, 61, + 29, 57, 52, 52, 52, 152, 152, 152, 152, 51, + 52, 51, 52, 51, 52, 168, 122, 152, 122, 152, + 153, 152, 185, 127, 61, 61, 52, 52, 57, 52, + 57, 52, 57, 168, 168, 168, 52, 24, 52, 61, + 52, 29, 61, 61, 169, 61, 169, 61, 169, 52, + 52, 52, 122, 61, 128, 122, 152, 52, 52, 52, + 52, 52, 61, 61, 61, 122, 122 }; const unsigned char @@ -4373,24 +4422,24 @@ namespace xsk { namespace gsc { namespace iw6 { 116, 117, 118, 118, 118, 118, 118, 119, 120, 121, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, - 122, 122, 122, 122, 122, 123, 123, 124, 124, 125, - 125, 126, 126, 126, 126, 127, 127, 128, 128, 128, - 129, 130, 130, 131, 132, 132, 133, 133, 134, 135, - 136, 137, 138, 139, 140, 140, 141, 142, 142, 143, - 144, 145, 146, 146, 147, 148, 149, 150, 150, 150, - 151, 151, 152, 152, 152, 152, 152, 152, 152, 152, - 152, 152, 152, 153, 153, 154, 154, 155, 156, 156, - 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, - 156, 156, 156, 156, 156, 156, 157, 157, 157, 157, - 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, - 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, - 157, 157, 157, 157, 158, 159, 160, 160, 161, 161, - 162, 162, 162, 162, 162, 162, 163, 163, 163, 163, - 164, 165, 165, 165, 166, 166, 167, 167, 168, 168, - 169, 170, 170, 171, 172, 173, 173, 173, 173, 173, - 173, 173, 173, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, 184, 185, 186, 187, 188, - 189, 189, 190, 190, 191, 192 + 122, 122, 122, 122, 123, 123, 124, 124, 125, 125, + 126, 126, 127, 127, 128, 128, 128, 128, 129, 129, + 130, 130, 130, 131, 132, 132, 133, 134, 134, 135, + 135, 136, 137, 138, 139, 140, 141, 142, 142, 143, + 144, 144, 145, 146, 147, 148, 148, 149, 150, 151, + 152, 152, 152, 153, 153, 154, 154, 154, 154, 154, + 154, 154, 154, 154, 154, 154, 155, 155, 156, 156, + 157, 158, 158, 158, 158, 158, 158, 158, 158, 158, + 158, 158, 158, 158, 158, 158, 158, 158, 158, 159, + 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, + 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, + 159, 159, 159, 159, 159, 159, 159, 160, 161, 162, + 162, 163, 163, 164, 164, 164, 164, 164, 164, 165, + 165, 165, 165, 166, 167, 167, 167, 168, 168, 169, + 169, 170, 170, 171, 172, 172, 173, 174, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 176, 177, 178, + 179, 180, 181, 182, 183, 184, 185, 186, 186, 187, + 188, 189, 190, 191, 191, 192, 192, 193, 194 }; const signed char @@ -4400,24 +4449,24 @@ namespace xsk { namespace gsc { namespace iw6 { 3, 3, 1, 1, 1, 1, 1, 5, 4, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 3, 2, 3, 2, 2, - 1, 1, 1, 1, 0, 2, 2, 2, 2, 2, - 6, 8, 6, 3, 8, 6, 8, 6, 2, 5, - 7, 5, 7, 9, 7, 9, 5, 3, 3, 2, - 2, 2, 3, 2, 2, 5, 5, 1, 1, 1, - 1, 0, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 2, 2, 2, 2, 5, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, + 3, 2, 3, 2, 1, 1, 1, 0, 2, 2, + 2, 2, 2, 6, 8, 6, 3, 8, 6, 8, + 6, 2, 5, 7, 5, 7, 9, 7, 9, 5, + 3, 3, 2, 2, 2, 3, 2, 2, 5, 5, + 1, 1, 1, 1, 0, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, + 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 2, 2, 1, 1, 2, 2, - 4, 6, 5, 7, 5, 7, 8, 9, 9, 9, - 3, 3, 1, 0, 1, 0, 3, 1, 2, 3, - 4, 3, 2, 2, 3, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, - 1, 2, 1, 1, 1, 1, 1, 1, 1, 7, - 2, 1, 2, 1, 1, 1 + 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, + 1, 2, 2, 4, 6, 5, 7, 5, 7, 8, + 9, 9, 9, 3, 3, 1, 0, 1, 0, 3, + 1, 2, 3, 4, 3, 2, 2, 3, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, + 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, + 1, 1, 7, 2, 1, 2, 1, 1, 1 }; @@ -4427,28 +4476,28 @@ namespace xsk { namespace gsc { namespace iw6 { const short parser::yyrline_[] = { - 0, 252, 252, 253, 257, 259, 261, 263, 265, 267, - 272, 276, 281, 282, 283, 284, 285, 289, 294, 299, - 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, - 324, 325, 326, 327, 328, 332, 333, 337, 338, 342, - 344, 349, 351, 353, 356, 360, 362, 367, 369, 371, - 376, 381, 383, 388, 393, 395, 400, 402, 407, 412, - 417, 422, 427, 432, 437, 439, 444, 449, 451, 456, - 461, 466, 471, 473, 478, 483, 488, 493, 494, 495, - 499, 500, 504, 506, 508, 510, 512, 514, 516, 518, - 520, 522, 524, 529, 531, 536, 538, 543, 548, 550, - 552, 554, 556, 558, 560, 562, 564, 566, 568, 570, - 572, 574, 576, 578, 580, 582, 587, 588, 589, 590, - 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, + 0, 254, 254, 255, 259, 261, 263, 265, 267, 269, + 274, 278, 283, 284, 285, 286, 287, 291, 296, 301, + 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, + 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, + 326, 327, 328, 329, 333, 334, 338, 340, 345, 347, + 352, 353, 357, 358, 362, 364, 366, 369, 373, 375, + 380, 382, 384, 389, 394, 396, 401, 406, 408, 413, + 415, 420, 425, 430, 435, 440, 445, 450, 452, 457, + 462, 464, 469, 474, 479, 484, 486, 491, 496, 501, + 506, 507, 508, 512, 513, 517, 519, 521, 523, 525, + 527, 529, 531, 533, 535, 537, 542, 544, 549, 551, + 556, 561, 563, 565, 567, 569, 571, 573, 575, 577, + 579, 581, 583, 585, 587, 589, 591, 593, 595, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, - 611, 612, 613, 614, 618, 623, 628, 629, 632, 633, - 637, 639, 641, 643, 645, 647, 652, 654, 656, 658, - 663, 668, 670, 673, 677, 680, 684, 686, 691, 693, - 698, 703, 705, 710, 715, 720, 721, 722, 723, 724, - 725, 726, 727, 728, 732, 737, 742, 747, 752, 757, - 762, 767, 772, 777, 782, 784, 789, 794, 799, 804, - 809, 811, 816, 818, 823, 828 + 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, + 621, 622, 623, 624, 625, 626, 627, 631, 636, 641, + 642, 645, 646, 650, 652, 654, 656, 658, 660, 665, + 667, 669, 671, 676, 681, 683, 686, 690, 693, 697, + 699, 704, 706, 711, 716, 718, 723, 728, 733, 734, + 735, 736, 737, 738, 739, 740, 741, 745, 750, 755, + 760, 765, 770, 775, 780, 785, 790, 795, 797, 802, + 807, 812, 817, 822, 824, 829, 831, 836, 841 }; void @@ -4481,9 +4530,9 @@ namespace xsk { namespace gsc { namespace iw6 { #line 13 "parser.ypp" } } } // xsk::gsc::iw6 -#line 4485 "parser.cpp" +#line 4534 "parser.cpp" -#line 832 "parser.ypp" +#line 845 "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 f5b85ea4..56035e4b 100644 --- a/src/iw6/xsk/parser.hpp +++ b/src/iw6/xsk/parser.hpp @@ -535,6 +535,7 @@ namespace xsk { namespace gsc { namespace iw6 { char dummy39[sizeof (ast::program::ptr)]; // stmt + // stmt_or_dev char dummy40[sizeof (ast::stmt)]; // stmt_assign @@ -558,61 +559,64 @@ namespace xsk { namespace gsc { namespace iw6 { // stmt_default char dummy47[sizeof (ast::stmt_default::ptr)]; + // stmt_dev + char dummy48[sizeof (ast::stmt_dev::ptr)]; + // stmt_dowhile - char dummy48[sizeof (ast::stmt_dowhile::ptr)]; + char dummy49[sizeof (ast::stmt_dowhile::ptr)]; // stmt_endon - char dummy49[sizeof (ast::stmt_endon::ptr)]; + char dummy50[sizeof (ast::stmt_endon::ptr)]; // stmt_expr - char dummy50[sizeof (ast::stmt_expr::ptr)]; + char dummy51[sizeof (ast::stmt_expr::ptr)]; // stmt_for - char dummy51[sizeof (ast::stmt_for::ptr)]; + char dummy52[sizeof (ast::stmt_for::ptr)]; // stmt_foreach - char dummy52[sizeof (ast::stmt_foreach::ptr)]; + char dummy53[sizeof (ast::stmt_foreach::ptr)]; // stmt_if - char dummy53[sizeof (ast::stmt_if::ptr)]; + char dummy54[sizeof (ast::stmt_if::ptr)]; // stmt_ifelse - char dummy54[sizeof (ast::stmt_ifelse::ptr)]; + char dummy55[sizeof (ast::stmt_ifelse::ptr)]; - // stmt_dev - // stmt_block // stmt_list - char dummy55[sizeof (ast::stmt_list::ptr)]; + // stmt_or_dev_list + // stmt_block + char dummy56[sizeof (ast::stmt_list::ptr)]; // stmt_notify - char dummy56[sizeof (ast::stmt_notify::ptr)]; + char dummy57[sizeof (ast::stmt_notify::ptr)]; // stmt_prof_begin - char dummy57[sizeof (ast::stmt_prof_begin::ptr)]; + char dummy58[sizeof (ast::stmt_prof_begin::ptr)]; // stmt_prof_end - char dummy58[sizeof (ast::stmt_prof_end::ptr)]; + char dummy59[sizeof (ast::stmt_prof_end::ptr)]; // stmt_return - char dummy59[sizeof (ast::stmt_return::ptr)]; + char dummy60[sizeof (ast::stmt_return::ptr)]; // stmt_switch - char dummy60[sizeof (ast::stmt_switch::ptr)]; + char dummy61[sizeof (ast::stmt_switch::ptr)]; // stmt_wait - char dummy61[sizeof (ast::stmt_wait::ptr)]; + char dummy62[sizeof (ast::stmt_wait::ptr)]; // stmt_waittill - char dummy62[sizeof (ast::stmt_waittill::ptr)]; + char dummy63[sizeof (ast::stmt_waittill::ptr)]; // stmt_waittillframeend - char dummy63[sizeof (ast::stmt_waittillframeend::ptr)]; + char dummy64[sizeof (ast::stmt_waittillframeend::ptr)]; // stmt_waittillmatch - char dummy64[sizeof (ast::stmt_waittillmatch::ptr)]; + char dummy65[sizeof (ast::stmt_waittillmatch::ptr)]; // stmt_while - char dummy65[sizeof (ast::stmt_while::ptr)]; + char dummy66[sizeof (ast::stmt_while::ptr)]; // "field" // "path" @@ -622,7 +626,7 @@ namespace xsk { namespace gsc { namespace iw6 { // "color" // "float" // "integer" - char dummy66[sizeof (std::string)]; + char dummy67[sizeof (std::string)]; }; /// The size of the largest semantic type. @@ -925,76 +929,78 @@ namespace xsk { namespace gsc { namespace iw6 { S_decl_constant = 120, // decl_constant S_decl_thread = 121, // decl_thread S_stmt = 122, // stmt - S_stmt_dev = 123, // stmt_dev - S_stmt_block = 124, // stmt_block - S_stmt_list = 125, // stmt_list - S_stmt_expr = 126, // stmt_expr - S_stmt_call = 127, // stmt_call - S_stmt_assign = 128, // stmt_assign - S_stmt_endon = 129, // stmt_endon - S_stmt_notify = 130, // stmt_notify - S_stmt_wait = 131, // stmt_wait - S_stmt_waittill = 132, // stmt_waittill - S_stmt_waittillmatch = 133, // stmt_waittillmatch - S_stmt_waittillframeend = 134, // stmt_waittillframeend - S_stmt_if = 135, // stmt_if - S_stmt_ifelse = 136, // stmt_ifelse - S_stmt_while = 137, // stmt_while - S_stmt_dowhile = 138, // stmt_dowhile - S_stmt_for = 139, // stmt_for - S_stmt_foreach = 140, // stmt_foreach - S_stmt_switch = 141, // stmt_switch - S_stmt_case = 142, // stmt_case - S_stmt_default = 143, // stmt_default - S_stmt_break = 144, // stmt_break - S_stmt_continue = 145, // stmt_continue - S_stmt_return = 146, // stmt_return - S_stmt_breakpoint = 147, // stmt_breakpoint - S_stmt_prof_begin = 148, // stmt_prof_begin - S_stmt_prof_end = 149, // stmt_prof_end - S_expr = 150, // expr - S_expr_or_empty = 151, // expr_or_empty - S_expr_assign = 152, // expr_assign - S_expr_increment = 153, // expr_increment - S_expr_decrement = 154, // expr_decrement - S_expr_ternary = 155, // expr_ternary - S_expr_binary = 156, // expr_binary - S_expr_primitive = 157, // expr_primitive - S_expr_complement = 158, // expr_complement - S_expr_not = 159, // expr_not - S_expr_call = 160, // expr_call - S_expr_method = 161, // expr_method - S_expr_function = 162, // expr_function - S_expr_pointer = 163, // expr_pointer - S_expr_add_array = 164, // expr_add_array - S_expr_parameters = 165, // expr_parameters - S_expr_arguments = 166, // expr_arguments - S_expr_arguments_no_empty = 167, // expr_arguments_no_empty - S_expr_reference = 168, // expr_reference - S_expr_array = 169, // expr_array - S_expr_field = 170, // expr_field - S_expr_size = 171, // expr_size - S_expr_paren = 172, // expr_paren - S_expr_object = 173, // expr_object - S_expr_thisthread = 174, // expr_thisthread - S_expr_empty_array = 175, // expr_empty_array - S_expr_undefined = 176, // expr_undefined - S_expr_game = 177, // expr_game - S_expr_self = 178, // expr_self - S_expr_anim = 179, // expr_anim - S_expr_level = 180, // expr_level - S_expr_animation = 181, // expr_animation - S_expr_animtree = 182, // expr_animtree - S_expr_identifier = 183, // expr_identifier - S_expr_path = 184, // expr_path - S_expr_istring = 185, // expr_istring - S_expr_string = 186, // expr_string - S_expr_color = 187, // expr_color - S_expr_vector = 188, // expr_vector - S_expr_float = 189, // expr_float - S_expr_integer = 190, // expr_integer - S_expr_false = 191, // expr_false - S_expr_true = 192 // expr_true + S_stmt_or_dev = 123, // stmt_or_dev + S_stmt_list = 124, // stmt_list + S_stmt_or_dev_list = 125, // stmt_or_dev_list + S_stmt_dev = 126, // stmt_dev + S_stmt_block = 127, // stmt_block + S_stmt_expr = 128, // stmt_expr + S_stmt_call = 129, // stmt_call + S_stmt_assign = 130, // stmt_assign + S_stmt_endon = 131, // stmt_endon + S_stmt_notify = 132, // stmt_notify + S_stmt_wait = 133, // stmt_wait + S_stmt_waittill = 134, // stmt_waittill + S_stmt_waittillmatch = 135, // stmt_waittillmatch + S_stmt_waittillframeend = 136, // stmt_waittillframeend + S_stmt_if = 137, // stmt_if + S_stmt_ifelse = 138, // stmt_ifelse + S_stmt_while = 139, // stmt_while + S_stmt_dowhile = 140, // stmt_dowhile + S_stmt_for = 141, // stmt_for + S_stmt_foreach = 142, // stmt_foreach + S_stmt_switch = 143, // stmt_switch + S_stmt_case = 144, // stmt_case + S_stmt_default = 145, // stmt_default + S_stmt_break = 146, // stmt_break + S_stmt_continue = 147, // stmt_continue + S_stmt_return = 148, // stmt_return + S_stmt_breakpoint = 149, // stmt_breakpoint + S_stmt_prof_begin = 150, // stmt_prof_begin + S_stmt_prof_end = 151, // stmt_prof_end + S_expr = 152, // expr + S_expr_or_empty = 153, // expr_or_empty + S_expr_assign = 154, // expr_assign + S_expr_increment = 155, // expr_increment + S_expr_decrement = 156, // expr_decrement + S_expr_ternary = 157, // expr_ternary + S_expr_binary = 158, // expr_binary + S_expr_primitive = 159, // expr_primitive + S_expr_complement = 160, // expr_complement + S_expr_not = 161, // expr_not + S_expr_call = 162, // expr_call + S_expr_method = 163, // expr_method + S_expr_function = 164, // expr_function + S_expr_pointer = 165, // expr_pointer + S_expr_add_array = 166, // expr_add_array + S_expr_parameters = 167, // expr_parameters + S_expr_arguments = 168, // expr_arguments + S_expr_arguments_no_empty = 169, // expr_arguments_no_empty + S_expr_reference = 170, // expr_reference + S_expr_array = 171, // expr_array + S_expr_field = 172, // expr_field + S_expr_size = 173, // expr_size + S_expr_paren = 174, // expr_paren + S_expr_object = 175, // expr_object + S_expr_thisthread = 176, // expr_thisthread + S_expr_empty_array = 177, // expr_empty_array + S_expr_undefined = 178, // expr_undefined + S_expr_game = 179, // expr_game + S_expr_self = 180, // expr_self + S_expr_anim = 181, // expr_anim + S_expr_level = 182, // expr_level + S_expr_animation = 183, // expr_animation + S_expr_animtree = 184, // expr_animtree + S_expr_identifier = 185, // expr_identifier + S_expr_path = 186, // expr_path + S_expr_istring = 187, // expr_istring + S_expr_string = 188, // expr_string + S_expr_color = 189, // expr_color + S_expr_vector = 190, // expr_vector + S_expr_float = 191, // expr_float + S_expr_integer = 192, // expr_integer + S_expr_false = 193, // expr_false + S_expr_true = 194 // expr_true }; }; @@ -1198,6 +1204,7 @@ namespace xsk { namespace gsc { namespace iw6 { break; case symbol_kind::S_stmt: // stmt + case symbol_kind::S_stmt_or_dev: // stmt_or_dev value.move< ast::stmt > (std::move (that.value)); break; @@ -1229,6 +1236,10 @@ namespace xsk { namespace gsc { namespace iw6 { value.move< ast::stmt_default::ptr > (std::move (that.value)); break; + case symbol_kind::S_stmt_dev: // stmt_dev + value.move< ast::stmt_dev::ptr > (std::move (that.value)); + break; + case symbol_kind::S_stmt_dowhile: // stmt_dowhile value.move< ast::stmt_dowhile::ptr > (std::move (that.value)); break; @@ -1257,9 +1268,9 @@ namespace xsk { namespace gsc { namespace iw6 { value.move< ast::stmt_ifelse::ptr > (std::move (that.value)); break; - case symbol_kind::S_stmt_dev: // stmt_dev - case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list + case symbol_kind::S_stmt_or_dev_list: // stmt_or_dev_list + case symbol_kind::S_stmt_block: // stmt_block value.move< ast::stmt_list::ptr > (std::move (that.value)); break; @@ -1995,6 +2006,20 @@ namespace xsk { namespace gsc { namespace iw6 { {} #endif +#if 201103L <= YY_CPLUSPLUS + basic_symbol (typename Base::kind_type t, ast::stmt_dev::ptr&& v, location_type&& l) + : Base (t) + , value (std::move (v)) + , location (std::move (l)) + {} +#else + basic_symbol (typename Base::kind_type t, const ast::stmt_dev::ptr& v, const location_type& l) + : Base (t) + , value (v) + , location (l) + {} +#endif + #if 201103L <= YY_CPLUSPLUS basic_symbol (typename Base::kind_type t, ast::stmt_dowhile::ptr&& v, location_type&& l) : Base (t) @@ -2450,6 +2475,7 @@ switch (yykind) break; case symbol_kind::S_stmt: // stmt + case symbol_kind::S_stmt_or_dev: // stmt_or_dev value.template destroy< ast::stmt > (); break; @@ -2481,6 +2507,10 @@ switch (yykind) value.template destroy< ast::stmt_default::ptr > (); break; + case symbol_kind::S_stmt_dev: // stmt_dev + value.template destroy< ast::stmt_dev::ptr > (); + break; + case symbol_kind::S_stmt_dowhile: // stmt_dowhile value.template destroy< ast::stmt_dowhile::ptr > (); break; @@ -2509,9 +2539,9 @@ switch (yykind) value.template destroy< ast::stmt_ifelse::ptr > (); break; - case symbol_kind::S_stmt_dev: // stmt_dev - case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list + case symbol_kind::S_stmt_or_dev_list: // stmt_or_dev_list + case symbol_kind::S_stmt_block: // stmt_block value.template destroy< ast::stmt_list::ptr > (); break; @@ -4761,8 +4791,8 @@ switch (yykind) /// Constants. enum { - yylast_ = 2249, ///< Last index in yytable_. - yynnts_ = 80, ///< Number of nonterminal symbols. + yylast_ = 2262, ///< Last index in yytable_. + yynnts_ = 82, ///< Number of nonterminal symbols. yyfinal_ = 21 ///< Termination state number. }; @@ -4956,6 +4986,7 @@ switch (yykind) break; case symbol_kind::S_stmt: // stmt + case symbol_kind::S_stmt_or_dev: // stmt_or_dev value.copy< ast::stmt > (YY_MOVE (that.value)); break; @@ -4987,6 +5018,10 @@ switch (yykind) value.copy< ast::stmt_default::ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_stmt_dev: // stmt_dev + value.copy< ast::stmt_dev::ptr > (YY_MOVE (that.value)); + break; + case symbol_kind::S_stmt_dowhile: // stmt_dowhile value.copy< ast::stmt_dowhile::ptr > (YY_MOVE (that.value)); break; @@ -5015,9 +5050,9 @@ switch (yykind) value.copy< ast::stmt_ifelse::ptr > (YY_MOVE (that.value)); break; - case symbol_kind::S_stmt_dev: // stmt_dev - case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list + case symbol_kind::S_stmt_or_dev_list: // stmt_or_dev_list + case symbol_kind::S_stmt_block: // stmt_block value.copy< ast::stmt_list::ptr > (YY_MOVE (that.value)); break; @@ -5268,6 +5303,7 @@ switch (yykind) break; case symbol_kind::S_stmt: // stmt + case symbol_kind::S_stmt_or_dev: // stmt_or_dev value.move< ast::stmt > (YY_MOVE (s.value)); break; @@ -5299,6 +5335,10 @@ switch (yykind) value.move< ast::stmt_default::ptr > (YY_MOVE (s.value)); break; + case symbol_kind::S_stmt_dev: // stmt_dev + value.move< ast::stmt_dev::ptr > (YY_MOVE (s.value)); + break; + case symbol_kind::S_stmt_dowhile: // stmt_dowhile value.move< ast::stmt_dowhile::ptr > (YY_MOVE (s.value)); break; @@ -5327,9 +5367,9 @@ switch (yykind) value.move< ast::stmt_ifelse::ptr > (YY_MOVE (s.value)); break; - case symbol_kind::S_stmt_dev: // stmt_dev - case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list + case symbol_kind::S_stmt_or_dev_list: // stmt_or_dev_list + case symbol_kind::S_stmt_block: // stmt_block value.move< ast::stmt_list::ptr > (YY_MOVE (s.value)); break; @@ -5447,7 +5487,7 @@ switch (yykind) #line 13 "parser.ypp" } } } // xsk::gsc::iw6 -#line 5451 "parser.hpp" +#line 5491 "parser.hpp" diff --git a/src/iw6/xsk/resolver.cpp b/src/iw6/xsk/resolver.cpp index 5068ae66..3d551779 100644 --- a/src/iw6/xsk/resolver.cpp +++ b/src/iw6/xsk/resolver.cpp @@ -46,7 +46,7 @@ auto resolver::opcode_name(std::uint8_t id) -> std::string auto resolver::function_id(const std::string& name) -> std::uint16_t { - if(name.starts_with("_func_")) + if (name.starts_with("_func_")) { return std::stoul(name.substr(6), nullptr, 16); } @@ -75,7 +75,7 @@ auto resolver::function_name(std::uint16_t id) -> std::string auto resolver::method_id(const std::string& name) -> std::uint16_t { - if(name.starts_with("_meth_")) + if (name.starts_with("_meth_")) { return std::stoul(name.substr(6), nullptr, 16); } @@ -104,7 +104,7 @@ auto resolver::method_name(std::uint16_t id) -> std::string auto resolver::file_id(const std::string& name) -> std::uint16_t { - if(name.starts_with("_id_")) + if (name.starts_with("_id_")) { return std::stoul(name.substr(4), nullptr, 16); } @@ -133,7 +133,7 @@ auto resolver::file_name(std::uint16_t id) -> std::string auto resolver::token_id(const std::string& name) -> std::uint16_t { - if(name.starts_with("_id_")) + if (name.starts_with("_id_")) { return std::stoul(name.substr(4), nullptr, 16); } @@ -162,7 +162,7 @@ auto resolver::token_name(std::uint16_t id) -> std::string auto resolver::find_function(const std::string& name) -> bool { - if(name.starts_with("_func_")) return true; + if (name.starts_with("_func_")) return true; const auto itr = function_map_rev.find(name); @@ -176,7 +176,7 @@ auto resolver::find_function(const std::string& name) -> bool auto resolver::find_method(const std::string& name) -> bool { - if(name.starts_with("_meth_")) return true; + if (name.starts_with("_meth_")) return true; const auto itr = method_map_rev.find(name); @@ -190,7 +190,7 @@ auto resolver::find_method(const std::string& name) -> bool auto resolver::make_token(std::string_view str) -> std::string { - if(str.starts_with("_id_") || str.starts_with("_func_") || str.starts_with("_meth_")) + if (str.starts_with("_id_") || str.starts_with("_func_") || str.starts_with("_meth_")) { return std::string(str); } @@ -213,7 +213,7 @@ auto resolver::file_data(const std::string& name) -> std::tuplefirst ,reinterpret_cast(itr->second.data()), itr->second.size() }; } @@ -222,7 +222,7 @@ auto resolver::file_data(const std::string& name) -> std::tuplefirst, reinterpret_cast(res.first->second.data()), res.first->second.size() }; } @@ -16742,7 +16742,7 @@ struct __init__ __init__() { static bool init = false; - if(init) return; + if (init) return; init = true; opcode_map.reserve(opcode_list.size()); @@ -16756,31 +16756,31 @@ struct __init__ token_map.reserve(token_list.size()); token_map_rev.reserve(token_list.size()); - for(const auto& entry : opcode_list) + for (const auto& entry : opcode_list) { opcode_map.insert({ entry.first, entry.second }); opcode_map_rev.insert({ entry.second, entry.first }); } - for(const auto& entry : function_list) + for (const auto& entry : function_list) { function_map.insert({ entry.first, entry.second }); function_map_rev.insert({ entry.second, entry.first }); } - for(const auto& entry : method_list) + for (const auto& entry : method_list) { method_map.insert({ entry.first, entry.second }); method_map_rev.insert({ entry.second, entry.first }); } - for(const auto& entry : file_list) + for (const auto& entry : file_list) { file_map.insert({ entry.first, entry.second }); file_map_rev.insert({ entry.second, entry.first }); } - for(const auto& entry : token_list) + for (const auto& entry : token_list) { token_map.insert({ entry.first, entry.second }); token_map_rev.insert({ entry.second, entry.first }); diff --git a/src/iw7/xsk/assembler.cpp b/src/iw7/xsk/assembler.cpp index f52c4c5e..291d3b26 100644 --- a/src/iw7/xsk/assembler.cpp +++ b/src/iw7/xsk/assembler.cpp @@ -570,4 +570,4 @@ auto assembler::resolve_label(const std::string& name) -> std::int32_t throw asm_error("Couldn't resolve label address of '" + name + "'!"); } -} // namespace xsk::gsc::iw7 +} // namespace xsk::gsc::iw7 diff --git a/src/iw7/xsk/compiler.cpp b/src/iw7/xsk/compiler.cpp index 8da065d0..ff8d3fbe 100644 --- a/src/iw7/xsk/compiler.cpp +++ b/src/iw7/xsk/compiler.cpp @@ -152,7 +152,7 @@ void compiler::emit_declaration(const ast::decl& decl) void compiler::emit_decl_usingtree(const ast::decl_usingtree::ptr& animtree) { - if(developer_thread_) + if (developer_thread_) throw comp_error(animtree->loc(), "cannot put #using_animtree inside /# ... #/ comment"); animtrees_.push_back({ animtree->name->value, false }); @@ -195,6 +195,9 @@ void compiler::emit_stmt(const ast::stmt& stmt, const block::ptr& blk, bool last case ast::kind::stmt_list: emit_stmt_list(stmt.as_list, blk, last); break; + case ast::kind::stmt_dev: + emit_stmt_dev(stmt.as_dev, blk, last); + break; case ast::kind::stmt_expr: emit_stmt_expr(stmt.as_expr, blk); break; @@ -281,6 +284,11 @@ void compiler::emit_stmt_list(const ast::stmt_list::ptr& stmt, const block::ptr& } } +void compiler::emit_stmt_dev(const ast::stmt_dev::ptr& stmt, const block::ptr& blk, bool last) +{ + emit_stmt_list(stmt->list, blk, last); +} + void compiler::emit_stmt_expr(const ast::stmt_expr::ptr& stmt, const block::ptr& blk) { switch (stmt->expr.kind()) @@ -572,6 +580,8 @@ void compiler::emit_stmt_dowhile(const ast::stmt_dowhile::ptr& stmt, const block emit_stmt(stmt->stmt, stmt->blk, false); + insert_label(continue_loc); + bool const_cond = is_constant_condition(stmt->test); if (!const_cond) @@ -580,7 +590,6 @@ void compiler::emit_stmt_dowhile(const ast::stmt_dowhile::ptr& stmt, const block emit_opcode(opcode::OP_JumpOnFalse, break_loc); } - insert_label(continue_loc); emit_opcode(opcode::OP_jumpback, begin_loc); insert_label(break_loc); @@ -1001,9 +1010,6 @@ void compiler::emit_expr(const ast::expr& expr, const block::ptr& blk) case ast::kind::expr_string: emit_expr_string(expr.as_string); break; - case ast::kind::expr_color: - emit_expr_color(expr.as_color); - break; case ast::kind::expr_vector: emit_expr_vector(expr.as_vector, blk); break; @@ -1953,30 +1959,6 @@ void compiler::emit_expr_string(const ast::expr_string::ptr& expr) emit_opcode(opcode::OP_GetString, expr->value); } -void compiler::emit_expr_color(const ast::expr_color::ptr& expr) -{ - std::vector data; - std::string x, y, z; - - if (expr->value.size() == 3) - { - x = "0x" + expr->value.substr(0, 1) + expr->value.substr(0, 1); - y = "0x" + expr->value.substr(1, 1) + expr->value.substr(1, 1); - z = "0x" + expr->value.substr(2, 1) + expr->value.substr(2, 1); - } - else - { - x = "0x" + expr->value.substr(0, 2); - y = "0x" + expr->value.substr(2, 2); - z = "0x" + expr->value.substr(4, 2); - } - - data.push_back(utils::string::hex_to_dec(x.data())); - data.push_back(utils::string::hex_to_dec(y.data())); - data.push_back(utils::string::hex_to_dec(z.data())); - emit_opcode(opcode::OP_GetVector, data); -} - void compiler::emit_expr_float(const ast::expr_float::ptr& expr) { emit_opcode(opcode::OP_GetFloat, expr->value); @@ -2101,6 +2083,9 @@ void compiler::process_stmt(const ast::stmt& stmt, const block::ptr& blk) case ast::kind::stmt_list: process_stmt_list(stmt.as_list, blk); break; + case ast::kind::stmt_dev: + process_stmt_dev(stmt.as_dev, blk); + break; case ast::kind::stmt_expr: process_stmt_expr(stmt.as_expr, blk); break; @@ -2165,6 +2150,11 @@ void compiler::process_stmt_list(const ast::stmt_list::ptr& stmt, const block::p } } +void compiler::process_stmt_dev(const ast::stmt_dev::ptr& stmt, const block::ptr& blk) +{ + process_stmt_list(stmt->list, blk); +} + void compiler::process_stmt_expr(const ast::stmt_expr::ptr& stmt, const block::ptr& blk) { switch (stmt->expr.kind()) diff --git a/src/iw7/xsk/compiler.hpp b/src/iw7/xsk/compiler.hpp index 1022d009..258a06f2 100644 --- a/src/iw7/xsk/compiler.hpp +++ b/src/iw7/xsk/compiler.hpp @@ -48,6 +48,7 @@ private: void emit_decl_thread(const ast::decl_thread::ptr& thread); void emit_stmt(const ast::stmt& stmt, const block::ptr& blk, bool last); void emit_stmt_list(const ast::stmt_list::ptr& stmt, const block::ptr& blk, bool last); + void emit_stmt_dev(const ast::stmt_dev::ptr& stmt, const block::ptr& blk, bool last); void emit_stmt_expr(const ast::stmt_expr::ptr& stmt, const block::ptr& blk); void emit_stmt_call(const ast::stmt_call::ptr& stmt, const block::ptr& blk); void emit_stmt_assign(const ast::stmt_assign::ptr& stmt, const block::ptr& blk); @@ -109,7 +110,6 @@ private: void emit_expr_animtree(const ast::expr_animtree::ptr& expr); void emit_expr_istring(const ast::expr_istring::ptr& expr); void emit_expr_string(const ast::expr_string::ptr& expr); - void emit_expr_color(const ast::expr_color::ptr& expr); void emit_expr_float(const ast::expr_float::ptr& expr); void emit_expr_integer(const ast::expr_integer::ptr& expr); void emit_expr_false(const ast::expr_false::ptr& expr); @@ -122,6 +122,7 @@ private: void process_thread(const ast::decl_thread::ptr& decl, const block::ptr& blk); void process_stmt(const ast::stmt& stmt, const block::ptr& blk); void process_stmt_list(const ast::stmt_list::ptr& stmt, const block::ptr& blk); + void process_stmt_dev(const ast::stmt_dev::ptr& stmt, const block::ptr& blk); void process_stmt_expr(const ast::stmt_expr::ptr& stmt, const block::ptr& blk); void process_stmt_assign(const ast::stmt_assign::ptr& stmt, const block::ptr& blk); void process_stmt_waittill(const ast::stmt_waittill::ptr& stmt, const block::ptr& blk); diff --git a/src/iw7/xsk/decompiler.cpp b/src/iw7/xsk/decompiler.cpp index d9e19081..a514f536 100644 --- a/src/iw7/xsk/decompiler.cpp +++ b/src/iw7/xsk/decompiler.cpp @@ -75,7 +75,7 @@ void decompiler::decompile_function(const function::ptr& func) // hotfix empty else block at func end if (stmt->list.size() > 0 && stmt->list.back() == ast::kind::asm_jump) { - if(stmt->list.back().as_jump->value == blk.loc_end) + if (stmt->list.back().as_jump->value == blk.loc_end) stmt->list.pop_back(); } @@ -255,7 +255,7 @@ void decompiler::decompile_instruction(const instruction::ptr& inst) auto name = std::make_unique(loc, inst->data[1]); auto node = std::make_unique(loc, std::move(path), std::move(name)); stack_.push(std::move(node)); - }; + } break; case opcode::OP_CreateLocalVariable: { @@ -1651,7 +1651,7 @@ void decompiler::decompile_instruction(const instruction::ptr& inst) { auto expr = std::make_unique(loc, inst->data[0]); func_->stmt->list.push_back(ast::stmt(std::move(expr))); - if(stack_.size() != 0) tern_labels_.push_back(inst->data[0]); + if (stack_.size() != 0) tern_labels_.push_back(inst->data[0]); } break; case opcode::OP_jumpback: @@ -1850,7 +1850,7 @@ void decompiler::decompile_ifelses(const ast::stmt_list::ptr& stmt) { auto& entry = stmt->list.at(i); - if(entry == ast::kind::asm_jump_cond) + if (entry == ast::kind::asm_jump_cond) { auto j = (entry.as_cond->value == blocks_.back().loc_end) ? (stmt->list.size() - 1) : (find_location_index(stmt, entry.as_cond->value) - 1); auto last_loc = blocks_.back().loc_end; @@ -2129,7 +2129,7 @@ void decompiler::decompile_loop(const ast::stmt_list::ptr& block, std::uint32_t { auto ref = block->list.at(start).loc().label(); - if(!find_location_reference(block, 0, start, ref)) + if (!find_location_reference(block, 0, start, ref)) { decompile_foreach(block, start, end); return; @@ -2138,29 +2138,29 @@ void decompiler::decompile_loop(const ast::stmt_list::ptr& block, std::uint32_t } } - if(start > 0) // while at func start + if (start > 0) // while at func start { auto index = 1; - while(block->list.at(start - index) == ast::kind::asm_create) + while (block->list.at(start - index) == ast::kind::asm_create) { - if(start - index > 0) + if (start - index > 0) index++; else break; } - if(block->list.at(start - index) == ast::kind::stmt_assign) + if (block->list.at(start - index) == ast::kind::stmt_assign) { auto ref = block->list.at(end).loc().label(); auto ref2 = block->list.at(start).loc().label(); - if(find_location_reference(block, start, end, ref)) + if (find_location_reference(block, start, end, ref)) { // continue is at jumpback, not post-expr decompile_while(block, start, end); return; } - else if(find_location_reference(block, 0, start, ref2)) + else if (find_location_reference(block, 0, start, ref2)) { // begin is at condition, not pre-expr decompile_while(block, start, end); @@ -2400,7 +2400,7 @@ void decompiler::decompile_switch(const ast::stmt_list::ptr& stmt, std::uint32_t auto list = std::make_unique(loc); list->is_case = true; auto def_stmt = ast::stmt(std::make_unique(loc_pos, std::move(list))); - while(stmt->list.at(loc_idx) == ast::kind::stmt_case) + while (stmt->list.at(loc_idx) == ast::kind::stmt_case) loc_idx++; stmt->list.insert(stmt->list.begin() + loc_idx, std::move(def_stmt)); idx += 2; @@ -2501,7 +2501,7 @@ auto decompiler::find_location_index(const ast::stmt_list::ptr& stmt, const std: for (auto& entry : stmt->list) { - if(entry.loc().label() == location) + if (entry.loc().label() == location) return index; index++; @@ -2767,7 +2767,7 @@ void decompiler::process_stmt_ifelse(const ast::stmt_ifelse::ptr& stmt, const bl { abort = stmt->blk_if->abort; - if(abort == abort_t::abort_none) + if (abort == abort_t::abort_none) childs.push_back(stmt->blk_if.get()); } diff --git a/src/iw7/xsk/lexer.cpp b/src/iw7/xsk/lexer.cpp index 1e758226..d3d30b7b 100644 --- a/src/iw7/xsk/lexer.cpp +++ b/src/iw7/xsk/lexer.cpp @@ -72,12 +72,12 @@ buffer::buffer() : length(0) buffer::~buffer() { - if(data) std::free(data); + if (data) std::free(data); } bool buffer::push(char c) { - if(length >= max_buf_size) + if (length >= max_buf_size) return false; data[length++] = c; @@ -89,7 +89,7 @@ reader::reader() : state(reader::end), buffer_pos(0), bytes_remaining(0), void reader::init(const char* data, size_t size) { - if(data && size) + if (data && size) { state = reader::ok; buffer_pos = data; @@ -111,7 +111,7 @@ void reader::advance() { ++buffer_pos; - if(bytes_remaining-- == 1) + if (bytes_remaining-- == 1) { state = reader::end; bytes_remaining = 0; @@ -561,7 +561,7 @@ lex_name: advance(); } - if(state_ == state::field) + if (state_ == state::field) { if (path) throw comp_error(loc_, "invalid field token '\\'"); diff --git a/src/iw7/xsk/parser.cpp b/src/iw7/xsk/parser.cpp index badb18cb..1570bc91 100644 --- a/src/iw7/xsk/parser.cpp +++ b/src/iw7/xsk/parser.cpp @@ -382,6 +382,7 @@ namespace xsk { namespace gsc { namespace iw7 { break; case symbol_kind::S_stmt: // stmt + case symbol_kind::S_stmt_or_dev: // stmt_or_dev value.YY_MOVE_OR_COPY< ast::stmt > (YY_MOVE (that.value)); break; @@ -413,6 +414,10 @@ namespace xsk { namespace gsc { namespace iw7 { value.YY_MOVE_OR_COPY< ast::stmt_default::ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_stmt_dev: // stmt_dev + value.YY_MOVE_OR_COPY< ast::stmt_dev::ptr > (YY_MOVE (that.value)); + break; + case symbol_kind::S_stmt_dowhile: // stmt_dowhile value.YY_MOVE_OR_COPY< ast::stmt_dowhile::ptr > (YY_MOVE (that.value)); break; @@ -441,9 +446,9 @@ namespace xsk { namespace gsc { namespace iw7 { value.YY_MOVE_OR_COPY< ast::stmt_ifelse::ptr > (YY_MOVE (that.value)); break; - case symbol_kind::S_stmt_dev: // stmt_dev - case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list + case symbol_kind::S_stmt_or_dev_list: // stmt_or_dev_list + case symbol_kind::S_stmt_block: // stmt_block value.YY_MOVE_OR_COPY< ast::stmt_list::ptr > (YY_MOVE (that.value)); break; @@ -680,6 +685,7 @@ namespace xsk { namespace gsc { namespace iw7 { break; case symbol_kind::S_stmt: // stmt + case symbol_kind::S_stmt_or_dev: // stmt_or_dev value.move< ast::stmt > (YY_MOVE (that.value)); break; @@ -711,6 +717,10 @@ namespace xsk { namespace gsc { namespace iw7 { value.move< ast::stmt_default::ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_stmt_dev: // stmt_dev + value.move< ast::stmt_dev::ptr > (YY_MOVE (that.value)); + break; + case symbol_kind::S_stmt_dowhile: // stmt_dowhile value.move< ast::stmt_dowhile::ptr > (YY_MOVE (that.value)); break; @@ -739,9 +749,9 @@ namespace xsk { namespace gsc { namespace iw7 { value.move< ast::stmt_ifelse::ptr > (YY_MOVE (that.value)); break; - case symbol_kind::S_stmt_dev: // stmt_dev - case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list + case symbol_kind::S_stmt_or_dev_list: // stmt_or_dev_list + case symbol_kind::S_stmt_block: // stmt_block value.move< ast::stmt_list::ptr > (YY_MOVE (that.value)); break; @@ -978,6 +988,7 @@ namespace xsk { namespace gsc { namespace iw7 { break; case symbol_kind::S_stmt: // stmt + case symbol_kind::S_stmt_or_dev: // stmt_or_dev value.copy< ast::stmt > (that.value); break; @@ -1009,6 +1020,10 @@ namespace xsk { namespace gsc { namespace iw7 { value.copy< ast::stmt_default::ptr > (that.value); break; + case symbol_kind::S_stmt_dev: // stmt_dev + value.copy< ast::stmt_dev::ptr > (that.value); + break; + case symbol_kind::S_stmt_dowhile: // stmt_dowhile value.copy< ast::stmt_dowhile::ptr > (that.value); break; @@ -1037,9 +1052,9 @@ namespace xsk { namespace gsc { namespace iw7 { value.copy< ast::stmt_ifelse::ptr > (that.value); break; - case symbol_kind::S_stmt_dev: // stmt_dev - case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list + case symbol_kind::S_stmt_or_dev_list: // stmt_or_dev_list + case symbol_kind::S_stmt_block: // stmt_block value.copy< ast::stmt_list::ptr > (that.value); break; @@ -1275,6 +1290,7 @@ namespace xsk { namespace gsc { namespace iw7 { break; case symbol_kind::S_stmt: // stmt + case symbol_kind::S_stmt_or_dev: // stmt_or_dev value.move< ast::stmt > (that.value); break; @@ -1306,6 +1322,10 @@ namespace xsk { namespace gsc { namespace iw7 { value.move< ast::stmt_default::ptr > (that.value); break; + case symbol_kind::S_stmt_dev: // stmt_dev + value.move< ast::stmt_dev::ptr > (that.value); + break; + case symbol_kind::S_stmt_dowhile: // stmt_dowhile value.move< ast::stmt_dowhile::ptr > (that.value); break; @@ -1334,9 +1354,9 @@ namespace xsk { namespace gsc { namespace iw7 { value.move< ast::stmt_ifelse::ptr > (that.value); break; - case symbol_kind::S_stmt_dev: // stmt_dev - case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list + case symbol_kind::S_stmt_or_dev_list: // stmt_or_dev_list + case symbol_kind::S_stmt_block: // stmt_block value.move< ast::stmt_list::ptr > (that.value); break; @@ -1827,6 +1847,7 @@ namespace xsk { namespace gsc { namespace iw7 { break; case symbol_kind::S_stmt: // stmt + case symbol_kind::S_stmt_or_dev: // stmt_or_dev yylhs.value.emplace< ast::stmt > (); break; @@ -1858,6 +1879,10 @@ namespace xsk { namespace gsc { namespace iw7 { yylhs.value.emplace< ast::stmt_default::ptr > (); break; + case symbol_kind::S_stmt_dev: // stmt_dev + yylhs.value.emplace< ast::stmt_dev::ptr > (); + break; + case symbol_kind::S_stmt_dowhile: // stmt_dowhile yylhs.value.emplace< ast::stmt_dowhile::ptr > (); break; @@ -1886,9 +1911,9 @@ namespace xsk { namespace gsc { namespace iw7 { yylhs.value.emplace< ast::stmt_ifelse::ptr > (); break; - case symbol_kind::S_stmt_dev: // stmt_dev - case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list + case symbol_kind::S_stmt_or_dev_list: // stmt_or_dev_list + case symbol_kind::S_stmt_block: // stmt_block yylhs.value.emplace< ast::stmt_list::ptr > (); break; @@ -1964,1291 +1989,1309 @@ namespace xsk { namespace gsc { namespace iw7 { switch (yyn) { case 2: // root: program -#line 252 "parser.ypp" +#line 254 "parser.ypp" { ast = std::move(yystack_[0].value.as < ast::program::ptr > ()); } -#line 1970 "parser.cpp" +#line 1995 "parser.cpp" break; case 3: // root: %empty -#line 253 "parser.ypp" +#line 255 "parser.ypp" { ast = std::make_unique(yylhs.location); } -#line 1976 "parser.cpp" +#line 2001 "parser.cpp" break; case 4: // program: program inline -#line 258 "parser.ypp" +#line 260 "parser.ypp" { yylhs.value.as < ast::program::ptr > () = std::move(yystack_[1].value.as < ast::program::ptr > ()); } -#line 1982 "parser.cpp" +#line 2007 "parser.cpp" break; case 5: // program: program include -#line 260 "parser.ypp" +#line 262 "parser.ypp" { yylhs.value.as < ast::program::ptr > () = std::move(yystack_[1].value.as < ast::program::ptr > ()); yylhs.value.as < ast::program::ptr > ()->includes.push_back(std::move(yystack_[0].value.as < ast::include::ptr > ())); } -#line 1988 "parser.cpp" +#line 2013 "parser.cpp" break; case 6: // program: program declaration -#line 262 "parser.ypp" +#line 264 "parser.ypp" { yylhs.value.as < ast::program::ptr > () = std::move(yystack_[1].value.as < ast::program::ptr > ()); yylhs.value.as < ast::program::ptr > ()->declarations.push_back(std::move(yystack_[0].value.as < ast::decl > ())); } -#line 1994 "parser.cpp" +#line 2019 "parser.cpp" break; case 7: // program: inline -#line 264 "parser.ypp" +#line 266 "parser.ypp" { yylhs.value.as < ast::program::ptr > () = std::make_unique(yylhs.location); } -#line 2000 "parser.cpp" +#line 2025 "parser.cpp" break; case 8: // program: include -#line 266 "parser.ypp" +#line 268 "parser.ypp" { yylhs.value.as < ast::program::ptr > () = std::make_unique(yylhs.location); yylhs.value.as < ast::program::ptr > ()->includes.push_back(std::move(yystack_[0].value.as < ast::include::ptr > ())); } -#line 2006 "parser.cpp" +#line 2031 "parser.cpp" break; case 9: // program: declaration -#line 268 "parser.ypp" +#line 270 "parser.ypp" { yylhs.value.as < ast::program::ptr > () = std::make_unique(yylhs.location); yylhs.value.as < ast::program::ptr > ()->declarations.push_back(std::move(yystack_[0].value.as < ast::decl > ())); } -#line 2012 "parser.cpp" +#line 2037 "parser.cpp" break; case 10: // inline: "#inline" expr_path ";" -#line 272 "parser.ypp" +#line 274 "parser.ypp" { lexer.push_header(yystack_[1].value.as < ast::expr_path::ptr > ()->value); } -#line 2018 "parser.cpp" +#line 2043 "parser.cpp" break; case 11: // include: "#include" expr_path ";" -#line 277 "parser.ypp" +#line 279 "parser.ypp" { yylhs.value.as < ast::include::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr_path::ptr > ())); } -#line 2024 "parser.cpp" +#line 2049 "parser.cpp" break; case 12: // declaration: "/#" -#line 281 "parser.ypp" +#line 283 "parser.ypp" { yylhs.value.as < ast::decl > ().as_dev_begin = std::make_unique(yylhs.location); } -#line 2030 "parser.cpp" +#line 2055 "parser.cpp" break; case 13: // declaration: "#/" -#line 282 "parser.ypp" +#line 284 "parser.ypp" { yylhs.value.as < ast::decl > ().as_dev_end = std::make_unique(yylhs.location); } -#line 2036 "parser.cpp" +#line 2061 "parser.cpp" break; case 14: // declaration: decl_usingtree -#line 283 "parser.ypp" +#line 285 "parser.ypp" { yylhs.value.as < ast::decl > ().as_usingtree = std::move(yystack_[0].value.as < ast::decl_usingtree::ptr > ()); } -#line 2042 "parser.cpp" +#line 2067 "parser.cpp" break; case 15: // declaration: decl_constant -#line 284 "parser.ypp" +#line 286 "parser.ypp" { yylhs.value.as < ast::decl > ().as_constant = std::move(yystack_[0].value.as < ast::decl_constant::ptr > ()); } -#line 2048 "parser.cpp" +#line 2073 "parser.cpp" break; case 16: // declaration: decl_thread -#line 285 "parser.ypp" +#line 287 "parser.ypp" { yylhs.value.as < ast::decl > ().as_thread = std::move(yystack_[0].value.as < ast::decl_thread::ptr > ()); } -#line 2054 "parser.cpp" +#line 2079 "parser.cpp" break; case 17: // decl_usingtree: "#using_animtree" "(" expr_string ")" ";" -#line 290 "parser.ypp" +#line 292 "parser.ypp" { lexer.ban_header(yylhs.location); yylhs.value.as < ast::decl_usingtree::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr_string::ptr > ())); } -#line 2060 "parser.cpp" +#line 2085 "parser.cpp" break; case 18: // decl_constant: expr_identifier "=" expr ";" -#line 295 "parser.ypp" +#line 297 "parser.ypp" { yylhs.value.as < ast::decl_constant::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr > ())); } -#line 2066 "parser.cpp" +#line 2091 "parser.cpp" break; case 19: // decl_thread: expr_identifier "(" expr_parameters ")" stmt_block -#line 300 "parser.ypp" +#line 302 "parser.ypp" { lexer.ban_header(yylhs.location); yylhs.value.as < ast::decl_thread::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[2].value.as < ast::expr_parameters::ptr > ()), std::move(yystack_[0].value.as < ast::stmt_list::ptr > ())); } -#line 2072 "parser.cpp" +#line 2097 "parser.cpp" break; - case 20: // stmt: stmt_dev -#line 304 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_list = std::move(yystack_[0].value.as < ast::stmt_list::ptr > ()); } -#line 2078 "parser.cpp" - break; - - case 21: // stmt: stmt_block -#line 305 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_list = std::move(yystack_[0].value.as < ast::stmt_list::ptr > ()); } -#line 2084 "parser.cpp" - break; - - case 22: // stmt: stmt_call + case 20: // stmt: stmt_block #line 306 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_call = std::move(yystack_[0].value.as < ast::stmt_call::ptr > ()); } -#line 2090 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_list = std::move(yystack_[0].value.as < ast::stmt_list::ptr > ()); } +#line 2103 "parser.cpp" break; - case 23: // stmt: stmt_assign + case 21: // stmt: stmt_call #line 307 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_assign = std::move(yystack_[0].value.as < ast::stmt_assign::ptr > ()); } -#line 2096 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_call = std::move(yystack_[0].value.as < ast::stmt_call::ptr > ()); } +#line 2109 "parser.cpp" break; - case 24: // stmt: stmt_endon + case 22: // stmt: stmt_assign #line 308 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_endon = std::move(yystack_[0].value.as < ast::stmt_endon::ptr > ()); } -#line 2102 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_assign = std::move(yystack_[0].value.as < ast::stmt_assign::ptr > ()); } +#line 2115 "parser.cpp" break; - case 25: // stmt: stmt_notify + case 23: // stmt: stmt_endon #line 309 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_notify = std::move(yystack_[0].value.as < ast::stmt_notify::ptr > ()); } -#line 2108 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_endon = std::move(yystack_[0].value.as < ast::stmt_endon::ptr > ()); } +#line 2121 "parser.cpp" break; - case 26: // stmt: stmt_wait + case 24: // stmt: stmt_notify #line 310 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_wait = std::move(yystack_[0].value.as < ast::stmt_wait::ptr > ()); } -#line 2114 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_notify = std::move(yystack_[0].value.as < ast::stmt_notify::ptr > ()); } +#line 2127 "parser.cpp" break; - case 27: // stmt: stmt_waittill + case 25: // stmt: stmt_wait #line 311 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_waittill = std::move(yystack_[0].value.as < ast::stmt_waittill::ptr > ()); } -#line 2120 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_wait = std::move(yystack_[0].value.as < ast::stmt_wait::ptr > ()); } +#line 2133 "parser.cpp" break; - case 28: // stmt: stmt_waittillmatch + case 26: // stmt: stmt_waittill #line 312 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_waittillmatch = std::move(yystack_[0].value.as < ast::stmt_waittillmatch::ptr > ()); } -#line 2126 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_waittill = std::move(yystack_[0].value.as < ast::stmt_waittill::ptr > ()); } +#line 2139 "parser.cpp" break; - case 29: // stmt: stmt_waittillframeend + case 27: // stmt: stmt_waittillmatch #line 313 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_waittillframeend = std::move(yystack_[0].value.as < ast::stmt_waittillframeend::ptr > ()); } -#line 2132 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_waittillmatch = std::move(yystack_[0].value.as < ast::stmt_waittillmatch::ptr > ()); } +#line 2145 "parser.cpp" break; - case 30: // stmt: stmt_if + case 28: // stmt: stmt_waittillframeend #line 314 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_if = std::move(yystack_[0].value.as < ast::stmt_if::ptr > ()); } -#line 2138 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_waittillframeend = std::move(yystack_[0].value.as < ast::stmt_waittillframeend::ptr > ()); } +#line 2151 "parser.cpp" break; - case 31: // stmt: stmt_ifelse + case 29: // stmt: stmt_if #line 315 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_ifelse = std::move(yystack_[0].value.as < ast::stmt_ifelse::ptr > ()); } -#line 2144 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_if = std::move(yystack_[0].value.as < ast::stmt_if::ptr > ()); } +#line 2157 "parser.cpp" break; - case 32: // stmt: stmt_while + case 30: // stmt: stmt_ifelse #line 316 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_while = std::move(yystack_[0].value.as < ast::stmt_while::ptr > ()); } -#line 2150 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_ifelse = std::move(yystack_[0].value.as < ast::stmt_ifelse::ptr > ()); } +#line 2163 "parser.cpp" break; - case 33: // stmt: stmt_dowhile + case 31: // stmt: stmt_while #line 317 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_dowhile = std::move(yystack_[0].value.as < ast::stmt_dowhile::ptr > ()); } -#line 2156 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_while = std::move(yystack_[0].value.as < ast::stmt_while::ptr > ()); } +#line 2169 "parser.cpp" break; - case 34: // stmt: stmt_for + case 32: // stmt: stmt_dowhile #line 318 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_for = std::move(yystack_[0].value.as < ast::stmt_for::ptr > ()); } -#line 2162 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_dowhile = std::move(yystack_[0].value.as < ast::stmt_dowhile::ptr > ()); } +#line 2175 "parser.cpp" break; - case 35: // stmt: stmt_foreach + case 33: // stmt: stmt_for #line 319 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_foreach = std::move(yystack_[0].value.as < ast::stmt_foreach::ptr > ()); } -#line 2168 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_for = std::move(yystack_[0].value.as < ast::stmt_for::ptr > ()); } +#line 2181 "parser.cpp" break; - case 36: // stmt: stmt_switch + case 34: // stmt: stmt_foreach #line 320 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_switch = std::move(yystack_[0].value.as < ast::stmt_switch::ptr > ()); } -#line 2174 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_foreach = std::move(yystack_[0].value.as < ast::stmt_foreach::ptr > ()); } +#line 2187 "parser.cpp" break; - case 37: // stmt: stmt_case + case 35: // stmt: stmt_switch #line 321 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_case = std::move(yystack_[0].value.as < ast::stmt_case::ptr > ()); } -#line 2180 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_switch = std::move(yystack_[0].value.as < ast::stmt_switch::ptr > ()); } +#line 2193 "parser.cpp" break; - case 38: // stmt: stmt_default + case 36: // stmt: stmt_case #line 322 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_default = std::move(yystack_[0].value.as < ast::stmt_default::ptr > ()); } -#line 2186 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_case = std::move(yystack_[0].value.as < ast::stmt_case::ptr > ()); } +#line 2199 "parser.cpp" break; - case 39: // stmt: stmt_break + case 37: // stmt: stmt_default #line 323 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_break = std::move(yystack_[0].value.as < ast::stmt_break::ptr > ()); } -#line 2192 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_default = std::move(yystack_[0].value.as < ast::stmt_default::ptr > ()); } +#line 2205 "parser.cpp" break; - case 40: // stmt: stmt_continue + case 38: // stmt: stmt_break #line 324 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_continue = std::move(yystack_[0].value.as < ast::stmt_continue::ptr > ()); } -#line 2198 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_break = std::move(yystack_[0].value.as < ast::stmt_break::ptr > ()); } +#line 2211 "parser.cpp" break; - case 41: // stmt: stmt_return + case 39: // stmt: stmt_continue #line 325 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_return = std::move(yystack_[0].value.as < ast::stmt_return::ptr > ()); } -#line 2204 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_continue = std::move(yystack_[0].value.as < ast::stmt_continue::ptr > ()); } +#line 2217 "parser.cpp" break; - case 42: // stmt: stmt_breakpoint + case 40: // stmt: stmt_return #line 326 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_breakpoint = std::move(yystack_[0].value.as < ast::stmt_breakpoint::ptr > ()); } -#line 2210 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_return = std::move(yystack_[0].value.as < ast::stmt_return::ptr > ()); } +#line 2223 "parser.cpp" break; - case 43: // stmt: stmt_prof_begin + case 41: // stmt: stmt_breakpoint #line 327 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_prof_begin = std::move(yystack_[0].value.as < ast::stmt_prof_begin::ptr > ()); } -#line 2216 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_breakpoint = std::move(yystack_[0].value.as < ast::stmt_breakpoint::ptr > ()); } +#line 2229 "parser.cpp" break; - case 44: // stmt: stmt_prof_end + case 42: // stmt: stmt_prof_begin #line 328 "parser.ypp" + { yylhs.value.as < ast::stmt > ().as_prof_begin = std::move(yystack_[0].value.as < ast::stmt_prof_begin::ptr > ()); } +#line 2235 "parser.cpp" + break; + + case 43: // stmt: stmt_prof_end +#line 329 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_prof_end = std::move(yystack_[0].value.as < ast::stmt_prof_end::ptr > ()); } -#line 2222 "parser.cpp" +#line 2241 "parser.cpp" break; - case 45: // stmt_dev: "/#" stmt_list "#/" -#line 332 "parser.ypp" - { yylhs.value.as < ast::stmt_list::ptr > () = std::move(yystack_[1].value.as < ast::stmt_list::ptr > ()); } -#line 2228 "parser.cpp" - break; - - case 46: // stmt_dev: "/#" "#/" + case 44: // stmt_or_dev: stmt #line 333 "parser.ypp" - { yylhs.value.as < ast::stmt_list::ptr > () = std::make_unique(yylhs.location); } -#line 2234 "parser.cpp" + { yylhs.value.as < ast::stmt > () = std::move(yystack_[0].value.as < ast::stmt > ()); } +#line 2247 "parser.cpp" break; - case 47: // stmt_block: "{" stmt_list "}" -#line 337 "parser.ypp" - { yylhs.value.as < ast::stmt_list::ptr > () = std::move(yystack_[1].value.as < ast::stmt_list::ptr > ()); } -#line 2240 "parser.cpp" + case 45: // stmt_or_dev: stmt_dev +#line 334 "parser.ypp" + { yylhs.value.as < ast::stmt > ().as_dev = std::move(yystack_[0].value.as < ast::stmt_dev::ptr > ()); } +#line 2253 "parser.cpp" break; - case 48: // stmt_block: "{" "}" -#line 338 "parser.ypp" - { yylhs.value.as < ast::stmt_list::ptr > () = std::make_unique(yylhs.location); } -#line 2246 "parser.cpp" - break; - - case 49: // stmt_list: stmt_list stmt -#line 343 "parser.ypp" + case 46: // stmt_list: stmt_list stmt +#line 339 "parser.ypp" { yylhs.value.as < ast::stmt_list::ptr > () = std::move(yystack_[1].value.as < ast::stmt_list::ptr > ()); yylhs.value.as < ast::stmt_list::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2252 "parser.cpp" +#line 2259 "parser.cpp" break; - case 50: // stmt_list: stmt -#line 345 "parser.ypp" + case 47: // stmt_list: stmt +#line 341 "parser.ypp" { yylhs.value.as < ast::stmt_list::ptr > () = std::make_unique(yylhs.location); yylhs.value.as < ast::stmt_list::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2258 "parser.cpp" +#line 2265 "parser.cpp" break; - case 51: // stmt_expr: expr_assign -#line 350 "parser.ypp" - { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2264 "parser.cpp" + case 48: // stmt_or_dev_list: stmt_or_dev_list stmt_or_dev +#line 346 "parser.ypp" + { yylhs.value.as < ast::stmt_list::ptr > () = std::move(yystack_[1].value.as < ast::stmt_list::ptr > ()); yylhs.value.as < ast::stmt_list::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::stmt > ())); } +#line 2271 "parser.cpp" break; - case 52: // stmt_expr: expr_increment + case 49: // stmt_or_dev_list: stmt_or_dev +#line 348 "parser.ypp" + { yylhs.value.as < ast::stmt_list::ptr > () = std::make_unique(yylhs.location); yylhs.value.as < ast::stmt_list::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::stmt > ())); } +#line 2277 "parser.cpp" + break; + + case 50: // stmt_dev: "/#" stmt_list "#/" #line 352 "parser.ypp" - { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2270 "parser.cpp" + { yylhs.value.as < ast::stmt_dev::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::stmt_list::ptr > ())); } +#line 2283 "parser.cpp" break; - case 53: // stmt_expr: expr_decrement -#line 354 "parser.ypp" - { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2276 "parser.cpp" + case 51: // stmt_dev: "/#" "#/" +#line 353 "parser.ypp" + { yylhs.value.as < ast::stmt_dev::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } +#line 2289 "parser.cpp" break; - case 54: // stmt_expr: %empty -#line 356 "parser.ypp" - { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } -#line 2282 "parser.cpp" + case 52: // stmt_block: "{" stmt_or_dev_list "}" +#line 357 "parser.ypp" + { yylhs.value.as < ast::stmt_list::ptr > () = std::move(yystack_[1].value.as < ast::stmt_list::ptr > ()); } +#line 2295 "parser.cpp" break; - case 55: // stmt_call: expr_call ";" -#line 361 "parser.ypp" - { yylhs.value.as < ast::stmt_call::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[1].value.as < ast::expr_call::ptr > ()))); } -#line 2288 "parser.cpp" + case 53: // stmt_block: "{" "}" +#line 358 "parser.ypp" + { yylhs.value.as < ast::stmt_list::ptr > () = std::make_unique(yylhs.location); } +#line 2301 "parser.cpp" break; - case 56: // stmt_call: expr_method ";" + case 54: // stmt_expr: expr_assign #line 363 "parser.ypp" + { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2307 "parser.cpp" + break; + + case 55: // stmt_expr: expr_increment +#line 365 "parser.ypp" + { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2313 "parser.cpp" + break; + + case 56: // stmt_expr: expr_decrement +#line 367 "parser.ypp" + { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2319 "parser.cpp" + break; + + case 57: // stmt_expr: %empty +#line 369 "parser.ypp" + { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } +#line 2325 "parser.cpp" + break; + + case 58: // stmt_call: expr_call ";" +#line 374 "parser.ypp" + { yylhs.value.as < ast::stmt_call::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[1].value.as < ast::expr_call::ptr > ()))); } +#line 2331 "parser.cpp" + break; + + case 59: // stmt_call: expr_method ";" +#line 376 "parser.ypp" { yylhs.value.as < ast::stmt_call::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[1].value.as < ast::expr_method::ptr > ()))); } -#line 2294 "parser.cpp" +#line 2337 "parser.cpp" break; - case 57: // stmt_assign: expr_assign ";" -#line 368 "parser.ypp" + case 60: // stmt_assign: expr_assign ";" +#line 381 "parser.ypp" { yylhs.value.as < ast::stmt_assign::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } -#line 2300 "parser.cpp" +#line 2343 "parser.cpp" break; - case 58: // stmt_assign: expr_increment ";" -#line 370 "parser.ypp" + case 61: // stmt_assign: expr_increment ";" +#line 383 "parser.ypp" { yylhs.value.as < ast::stmt_assign::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } -#line 2306 "parser.cpp" +#line 2349 "parser.cpp" break; - case 59: // stmt_assign: expr_decrement ";" -#line 372 "parser.ypp" + case 62: // stmt_assign: expr_decrement ";" +#line 385 "parser.ypp" { yylhs.value.as < ast::stmt_assign::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } -#line 2312 "parser.cpp" +#line 2355 "parser.cpp" break; - case 60: // stmt_endon: expr_object "endon" "(" expr ")" ";" -#line 377 "parser.ypp" + case 63: // stmt_endon: expr_object "endon" "(" expr ")" ";" +#line 390 "parser.ypp" { yylhs.value.as < ast::stmt_endon::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr > ())); } -#line 2318 "parser.cpp" +#line 2361 "parser.cpp" break; - case 61: // stmt_notify: expr_object "notify" "(" expr "," expr_arguments_no_empty ")" ";" -#line 382 "parser.ypp" + case 64: // stmt_notify: expr_object "notify" "(" expr "," expr_arguments_no_empty ")" ";" +#line 395 "parser.ypp" { yylhs.value.as < ast::stmt_notify::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < ast::expr > ()), std::move(yystack_[4].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr_arguments::ptr > ())); } -#line 2324 "parser.cpp" +#line 2367 "parser.cpp" break; - case 62: // stmt_notify: expr_object "notify" "(" expr ")" ";" -#line 384 "parser.ypp" + case 65: // stmt_notify: expr_object "notify" "(" expr ")" ";" +#line 397 "parser.ypp" { yylhs.value.as < ast::stmt_notify::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr > ()), std::make_unique(yylhs.location)); } -#line 2330 "parser.cpp" +#line 2373 "parser.cpp" break; - case 63: // stmt_wait: "wait" expr ";" -#line 389 "parser.ypp" + case 66: // stmt_wait: "wait" expr ";" +#line 402 "parser.ypp" { yylhs.value.as < ast::stmt_wait::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } -#line 2336 "parser.cpp" +#line 2379 "parser.cpp" break; - case 64: // stmt_waittill: expr_object "waittill" "(" expr "," expr_arguments_no_empty ")" ";" -#line 394 "parser.ypp" + case 67: // stmt_waittill: expr_object "waittill" "(" expr "," expr_arguments_no_empty ")" ";" +#line 407 "parser.ypp" { yylhs.value.as < ast::stmt_waittill::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < ast::expr > ()), std::move(yystack_[4].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr_arguments::ptr > ())); } -#line 2342 "parser.cpp" +#line 2385 "parser.cpp" break; - case 65: // stmt_waittill: expr_object "waittill" "(" expr ")" ";" -#line 396 "parser.ypp" + case 68: // stmt_waittill: expr_object "waittill" "(" expr ")" ";" +#line 409 "parser.ypp" { yylhs.value.as < ast::stmt_waittill::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr > ()), std::make_unique(yylhs.location)); } -#line 2348 "parser.cpp" +#line 2391 "parser.cpp" break; - case 66: // stmt_waittillmatch: expr_object "waittillmatch" "(" expr "," expr_arguments_no_empty ")" ";" -#line 401 "parser.ypp" + case 69: // stmt_waittillmatch: expr_object "waittillmatch" "(" expr "," expr_arguments_no_empty ")" ";" +#line 414 "parser.ypp" { yylhs.value.as < ast::stmt_waittillmatch::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < ast::expr > ()), std::move(yystack_[4].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr_arguments::ptr > ())); } -#line 2354 "parser.cpp" +#line 2397 "parser.cpp" break; - case 67: // stmt_waittillmatch: expr_object "waittillmatch" "(" expr ")" ";" -#line 403 "parser.ypp" + case 70: // stmt_waittillmatch: expr_object "waittillmatch" "(" expr ")" ";" +#line 416 "parser.ypp" { yylhs.value.as < ast::stmt_waittillmatch::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr > ()), std::make_unique(yylhs.location)); } -#line 2360 "parser.cpp" +#line 2403 "parser.cpp" break; - case 68: // stmt_waittillframeend: "waittillframeend" ";" -#line 408 "parser.ypp" + case 71: // stmt_waittillframeend: "waittillframeend" ";" +#line 421 "parser.ypp" { yylhs.value.as < ast::stmt_waittillframeend::ptr > () = std::make_unique(yylhs.location); } -#line 2366 "parser.cpp" +#line 2409 "parser.cpp" break; - case 69: // stmt_if: "if" "(" expr ")" stmt -#line 413 "parser.ypp" + case 72: // stmt_if: "if" "(" expr ")" stmt +#line 426 "parser.ypp" { yylhs.value.as < ast::stmt_if::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2372 "parser.cpp" +#line 2415 "parser.cpp" break; - case 70: // stmt_ifelse: "if" "(" expr ")" stmt "else" stmt -#line 418 "parser.ypp" + case 73: // stmt_ifelse: "if" "(" expr ")" stmt "else" stmt +#line 431 "parser.ypp" { yylhs.value.as < ast::stmt_ifelse::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::stmt > ()), std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2378 "parser.cpp" +#line 2421 "parser.cpp" break; - case 71: // stmt_while: "while" "(" expr ")" stmt -#line 423 "parser.ypp" + case 74: // stmt_while: "while" "(" expr ")" stmt +#line 436 "parser.ypp" { yylhs.value.as < ast::stmt_while::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2384 "parser.cpp" +#line 2427 "parser.cpp" break; - case 72: // stmt_dowhile: "do" stmt "while" "(" expr ")" ";" -#line 428 "parser.ypp" + case 75: // stmt_dowhile: "do" stmt "while" "(" expr ")" ";" +#line 441 "parser.ypp" { yylhs.value.as < ast::stmt_dowhile::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[5].value.as < ast::stmt > ())); } -#line 2390 "parser.cpp" +#line 2433 "parser.cpp" break; - case 73: // stmt_for: "for" "(" stmt_expr ";" expr_or_empty ";" stmt_expr ")" stmt -#line 433 "parser.ypp" + case 76: // stmt_for: "for" "(" stmt_expr ";" expr_or_empty ";" stmt_expr ")" stmt +#line 446 "parser.ypp" { yylhs.value.as < ast::stmt_for::ptr > () = std::make_unique(yylhs.location, ast::stmt(std::move(yystack_[6].value.as < ast::stmt_expr::ptr > ())), std::move(yystack_[4].value.as < ast::expr > ()), ast::stmt(std::move(yystack_[2].value.as < ast::stmt_expr::ptr > ())), std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2396 "parser.cpp" +#line 2439 "parser.cpp" break; - case 74: // stmt_foreach: "foreach" "(" expr_identifier "in" expr ")" stmt -#line 438 "parser.ypp" + case 77: // stmt_foreach: "foreach" "(" expr_identifier "in" expr ")" stmt +#line 451 "parser.ypp" { yylhs.value.as < ast::stmt_foreach::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[4].value.as < ast::expr_identifier::ptr > ())), std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2402 "parser.cpp" +#line 2445 "parser.cpp" break; - case 75: // stmt_foreach: "foreach" "(" expr_identifier "," expr_identifier "in" expr ")" stmt -#line 440 "parser.ypp" + case 78: // stmt_foreach: "foreach" "(" expr_identifier "," expr_identifier "in" expr ")" stmt +#line 453 "parser.ypp" { yylhs.value.as < ast::stmt_foreach::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[6].value.as < ast::expr_identifier::ptr > ())), ast::expr(std::move(yystack_[4].value.as < ast::expr_identifier::ptr > ())), std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2408 "parser.cpp" +#line 2451 "parser.cpp" break; - case 76: // stmt_switch: "switch" "(" expr ")" stmt_block -#line 445 "parser.ypp" + case 79: // stmt_switch: "switch" "(" expr ")" stmt_block +#line 458 "parser.ypp" { yylhs.value.as < ast::stmt_switch::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::stmt_list::ptr > ())); } -#line 2414 "parser.cpp" +#line 2457 "parser.cpp" break; - case 77: // stmt_case: "case" expr_integer ":" -#line 450 "parser.ypp" + case 80: // stmt_case: "case" expr_integer ":" +#line 463 "parser.ypp" { yylhs.value.as < ast::stmt_case::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[1].value.as < ast::expr_integer::ptr > ())), std::make_unique(yylhs.location)); } -#line 2420 "parser.cpp" +#line 2463 "parser.cpp" break; - case 78: // stmt_case: "case" expr_string ":" -#line 452 "parser.ypp" + case 81: // stmt_case: "case" expr_string ":" +#line 465 "parser.ypp" { yylhs.value.as < ast::stmt_case::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[1].value.as < ast::expr_string::ptr > ())), std::make_unique(yylhs.location)); } -#line 2426 "parser.cpp" +#line 2469 "parser.cpp" break; - case 79: // stmt_default: "default" ":" -#line 457 "parser.ypp" + case 82: // stmt_default: "default" ":" +#line 470 "parser.ypp" { yylhs.value.as < ast::stmt_default::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } -#line 2432 "parser.cpp" +#line 2475 "parser.cpp" break; - case 80: // stmt_break: "break" ";" -#line 462 "parser.ypp" + case 83: // stmt_break: "break" ";" +#line 475 "parser.ypp" { yylhs.value.as < ast::stmt_break::ptr > () = std::make_unique(yylhs.location); } -#line 2438 "parser.cpp" +#line 2481 "parser.cpp" break; - case 81: // stmt_continue: "continue" ";" -#line 467 "parser.ypp" + case 84: // stmt_continue: "continue" ";" +#line 480 "parser.ypp" { yylhs.value.as < ast::stmt_continue::ptr > () = std::make_unique(yylhs.location); } -#line 2444 "parser.cpp" +#line 2487 "parser.cpp" break; - case 82: // stmt_return: "return" expr ";" -#line 472 "parser.ypp" + case 85: // stmt_return: "return" expr ";" +#line 485 "parser.ypp" { yylhs.value.as < ast::stmt_return::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } -#line 2450 "parser.cpp" +#line 2493 "parser.cpp" break; - case 83: // stmt_return: "return" ";" -#line 474 "parser.ypp" + case 86: // stmt_return: "return" ";" +#line 487 "parser.ypp" { yylhs.value.as < ast::stmt_return::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } -#line 2456 "parser.cpp" +#line 2499 "parser.cpp" break; - case 84: // stmt_breakpoint: "breakpoint" ";" -#line 479 "parser.ypp" + case 87: // stmt_breakpoint: "breakpoint" ";" +#line 492 "parser.ypp" { yylhs.value.as < ast::stmt_breakpoint::ptr > () = std::make_unique(yylhs.location); } -#line 2462 "parser.cpp" +#line 2505 "parser.cpp" break; - case 85: // stmt_prof_begin: "prof_begin" "(" expr_arguments ")" ";" -#line 484 "parser.ypp" + case 88: // stmt_prof_begin: "prof_begin" "(" expr_arguments ")" ";" +#line 497 "parser.ypp" { yylhs.value.as < ast::stmt_prof_begin::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr_arguments::ptr > ())); } -#line 2468 "parser.cpp" +#line 2511 "parser.cpp" break; - case 86: // stmt_prof_end: "prof_end" "(" expr_arguments ")" ";" -#line 489 "parser.ypp" + case 89: // stmt_prof_end: "prof_end" "(" expr_arguments ")" ";" +#line 502 "parser.ypp" { yylhs.value.as < ast::stmt_prof_end::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr_arguments::ptr > ())); } -#line 2474 "parser.cpp" +#line 2517 "parser.cpp" break; - case 87: // expr: expr_ternary -#line 493 "parser.ypp" + case 90: // expr: expr_ternary +#line 506 "parser.ypp" { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } -#line 2480 "parser.cpp" +#line 2523 "parser.cpp" break; - case 88: // expr: expr_binary -#line 494 "parser.ypp" - { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } -#line 2486 "parser.cpp" - break; - - case 89: // expr: expr_primitive -#line 495 "parser.ypp" - { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } -#line 2492 "parser.cpp" - break; - - case 90: // expr_or_empty: expr -#line 499 "parser.ypp" - { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } -#line 2498 "parser.cpp" - break; - - case 91: // expr_or_empty: %empty -#line 500 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location); } -#line 2504 "parser.cpp" - break; - - case 92: // expr_assign: expr_object "=" expr -#line 505 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2510 "parser.cpp" - break; - - case 93: // expr_assign: expr_object "|=" expr + case 91: // expr: expr_binary #line 507 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2516 "parser.cpp" + { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } +#line 2529 "parser.cpp" break; - case 94: // expr_assign: expr_object "&=" expr -#line 509 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2522 "parser.cpp" + case 92: // expr: expr_primitive +#line 508 "parser.ypp" + { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } +#line 2535 "parser.cpp" break; - case 95: // expr_assign: expr_object "^=" expr -#line 511 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2528 "parser.cpp" + case 93: // expr_or_empty: expr +#line 512 "parser.ypp" + { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } +#line 2541 "parser.cpp" break; - case 96: // expr_assign: expr_object "<<=" expr + case 94: // expr_or_empty: %empty #line 513 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location); } +#line 2547 "parser.cpp" + break; + + case 95: // expr_assign: expr_object "=" expr +#line 518 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2553 "parser.cpp" + break; + + case 96: // expr_assign: expr_object "|=" expr +#line 520 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2559 "parser.cpp" + break; + + case 97: // expr_assign: expr_object "&=" expr +#line 522 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2565 "parser.cpp" + break; + + case 98: // expr_assign: expr_object "^=" expr +#line 524 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2571 "parser.cpp" + break; + + case 99: // expr_assign: expr_object "<<=" expr +#line 526 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()),std::move( yystack_[0].value.as < ast::expr > ())); } -#line 2534 "parser.cpp" +#line 2577 "parser.cpp" break; - case 97: // expr_assign: expr_object ">>=" expr -#line 515 "parser.ypp" + case 100: // expr_assign: expr_object ">>=" expr +#line 528 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2540 "parser.cpp" +#line 2583 "parser.cpp" break; - case 98: // expr_assign: expr_object "+=" expr -#line 517 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2546 "parser.cpp" - break; - - case 99: // expr_assign: expr_object "-=" expr -#line 519 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2552 "parser.cpp" - break; - - case 100: // expr_assign: expr_object "*=" expr -#line 521 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2558 "parser.cpp" - break; - - case 101: // expr_assign: expr_object "/=" expr -#line 523 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2564 "parser.cpp" - break; - - case 102: // expr_assign: expr_object "%=" expr -#line 525 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2570 "parser.cpp" - break; - - case 103: // expr_increment: "++" expr_object + case 101: // expr_assign: expr_object "+=" expr #line 530 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ()), true); } -#line 2576 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2589 "parser.cpp" break; - case 104: // expr_increment: expr_object "++" + case 102: // expr_assign: expr_object "-=" expr #line 532 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2595 "parser.cpp" + break; + + case 103: // expr_assign: expr_object "*=" expr +#line 534 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2601 "parser.cpp" + break; + + case 104: // expr_assign: expr_object "/=" expr +#line 536 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2607 "parser.cpp" + break; + + case 105: // expr_assign: expr_object "%=" expr +#line 538 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2613 "parser.cpp" + break; + + case 106: // expr_increment: "++" expr_object +#line 543 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ()), true); } +#line 2619 "parser.cpp" + break; + + case 107: // expr_increment: expr_object "++" +#line 545 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ()), false); } -#line 2582 "parser.cpp" +#line 2625 "parser.cpp" break; - case 105: // expr_decrement: "--" expr_object -#line 537 "parser.ypp" + case 108: // expr_decrement: "--" expr_object +#line 550 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ()), true); } -#line 2588 "parser.cpp" +#line 2631 "parser.cpp" break; - case 106: // expr_decrement: expr_object "--" -#line 539 "parser.ypp" + case 109: // expr_decrement: expr_object "--" +#line 552 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ()), false); } -#line 2594 "parser.cpp" +#line 2637 "parser.cpp" break; - case 107: // expr_ternary: expr "?" expr ":" expr -#line 544 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2600 "parser.cpp" - break; - - case 108: // expr_binary: expr "||" expr -#line 549 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2606 "parser.cpp" - break; - - case 109: // expr_binary: expr "&&" expr -#line 551 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2612 "parser.cpp" - break; - - case 110: // expr_binary: expr "==" expr -#line 553 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2618 "parser.cpp" - break; - - case 111: // expr_binary: expr "!=" expr -#line 555 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2624 "parser.cpp" - break; - - case 112: // expr_binary: expr "<=" expr + case 110: // expr_ternary: expr "?" expr ":" expr #line 557 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2643 "parser.cpp" + break; + + case 111: // expr_binary: expr "||" expr +#line 562 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2649 "parser.cpp" + break; + + case 112: // expr_binary: expr "&&" expr +#line 564 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2655 "parser.cpp" + break; + + case 113: // expr_binary: expr "==" expr +#line 566 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2661 "parser.cpp" + break; + + case 114: // expr_binary: expr "!=" expr +#line 568 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2667 "parser.cpp" + break; + + case 115: // expr_binary: expr "<=" expr +#line 570 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2630 "parser.cpp" +#line 2673 "parser.cpp" break; - case 113: // expr_binary: expr ">=" expr -#line 559 "parser.ypp" + case 116: // expr_binary: expr ">=" expr +#line 572 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2636 "parser.cpp" +#line 2679 "parser.cpp" break; - case 114: // expr_binary: expr "<" expr -#line 561 "parser.ypp" + case 117: // expr_binary: expr "<" expr +#line 574 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2642 "parser.cpp" +#line 2685 "parser.cpp" break; - case 115: // expr_binary: expr ">" expr -#line 563 "parser.ypp" + case 118: // expr_binary: expr ">" expr +#line 576 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2648 "parser.cpp" +#line 2691 "parser.cpp" break; - case 116: // expr_binary: expr "|" expr -#line 565 "parser.ypp" + case 119: // expr_binary: expr "|" expr +#line 578 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2654 "parser.cpp" +#line 2697 "parser.cpp" break; - case 117: // expr_binary: expr "&" expr -#line 567 "parser.ypp" + case 120: // expr_binary: expr "&" expr +#line 580 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2660 "parser.cpp" +#line 2703 "parser.cpp" break; - case 118: // expr_binary: expr "^" expr -#line 569 "parser.ypp" + case 121: // expr_binary: expr "^" expr +#line 582 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2666 "parser.cpp" +#line 2709 "parser.cpp" break; - case 119: // expr_binary: expr "<<" expr -#line 571 "parser.ypp" + case 122: // expr_binary: expr "<<" expr +#line 584 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2672 "parser.cpp" +#line 2715 "parser.cpp" break; - case 120: // expr_binary: expr ">>" expr -#line 573 "parser.ypp" + case 123: // expr_binary: expr ">>" expr +#line 586 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2678 "parser.cpp" +#line 2721 "parser.cpp" break; - case 121: // expr_binary: expr "+" expr -#line 575 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2684 "parser.cpp" - break; - - case 122: // expr_binary: expr "-" expr -#line 577 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2690 "parser.cpp" - break; - - case 123: // expr_binary: expr "*" expr -#line 579 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2696 "parser.cpp" - break; - - case 124: // expr_binary: expr "/" expr -#line 581 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2702 "parser.cpp" - break; - - case 125: // expr_binary: expr "%" expr -#line 583 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2708 "parser.cpp" - break; - - case 126: // expr_primitive: expr_complement -#line 587 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_complement::ptr > ()); } -#line 2714 "parser.cpp" - break; - - case 127: // expr_primitive: expr_not + case 124: // expr_binary: expr "+" expr #line 588 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_not::ptr > ()); } -#line 2720 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2727 "parser.cpp" break; - case 128: // expr_primitive: expr_call -#line 589 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_call::ptr > ()); } -#line 2726 "parser.cpp" - break; - - case 129: // expr_primitive: expr_method + case 125: // expr_binary: expr "-" expr #line 590 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_method::ptr > ()); } -#line 2732 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2733 "parser.cpp" break; - case 130: // expr_primitive: expr_add_array -#line 591 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_add_array::ptr > ()); } -#line 2738 "parser.cpp" - break; - - case 131: // expr_primitive: expr_reference + case 126: // expr_binary: expr "*" expr #line 592 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_reference::ptr > ()); } -#line 2744 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2739 "parser.cpp" break; - case 132: // expr_primitive: expr_array -#line 593 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_array::ptr > ()); } -#line 2750 "parser.cpp" - break; - - case 133: // expr_primitive: expr_field + case 127: // expr_binary: expr "/" expr #line 594 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_field::ptr > ()); } -#line 2756 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2745 "parser.cpp" break; - case 134: // expr_primitive: expr_size -#line 595 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_size::ptr > ()); } -#line 2762 "parser.cpp" - break; - - case 135: // expr_primitive: expr_paren + case 128: // expr_binary: expr "%" expr #line 596 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_paren::ptr > ()); } -#line 2768 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2751 "parser.cpp" break; - case 136: // expr_primitive: expr_thisthread -#line 597 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_thisthread::ptr > ()); } -#line 2774 "parser.cpp" - break; - - case 137: // expr_primitive: expr_empty_array -#line 598 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_empty_array::ptr > ()); } -#line 2780 "parser.cpp" - break; - - case 138: // expr_primitive: expr_undefined -#line 599 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_undefined::ptr > ()); } -#line 2786 "parser.cpp" - break; - - case 139: // expr_primitive: expr_game + case 129: // expr_primitive: expr_complement #line 600 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_game::ptr > ()); } -#line 2792 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_complement::ptr > ()); } +#line 2757 "parser.cpp" break; - case 140: // expr_primitive: expr_self + case 130: // expr_primitive: expr_not #line 601 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_self::ptr > ()); } -#line 2798 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_not::ptr > ()); } +#line 2763 "parser.cpp" break; - case 141: // expr_primitive: expr_anim + case 131: // expr_primitive: expr_call #line 602 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_anim::ptr > ()); } -#line 2804 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_call::ptr > ()); } +#line 2769 "parser.cpp" break; - case 142: // expr_primitive: expr_level + case 132: // expr_primitive: expr_method #line 603 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_level::ptr > ()); } -#line 2810 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_method::ptr > ()); } +#line 2775 "parser.cpp" break; - case 143: // expr_primitive: expr_animation + case 133: // expr_primitive: expr_add_array #line 604 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_animation::ptr > ()); } -#line 2816 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_add_array::ptr > ()); } +#line 2781 "parser.cpp" break; - case 144: // expr_primitive: expr_animtree + case 134: // expr_primitive: expr_reference #line 605 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_animtree::ptr > ()); } -#line 2822 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_reference::ptr > ()); } +#line 2787 "parser.cpp" break; - case 145: // expr_primitive: expr_identifier + case 135: // expr_primitive: expr_array #line 606 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ()); } -#line 2828 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_array::ptr > ()); } +#line 2793 "parser.cpp" break; - case 146: // expr_primitive: expr_istring + case 136: // expr_primitive: expr_field #line 607 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_istring::ptr > ()); } -#line 2834 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_field::ptr > ()); } +#line 2799 "parser.cpp" break; - case 147: // expr_primitive: expr_string + case 137: // expr_primitive: expr_size #line 608 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_string::ptr > ()); } -#line 2840 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_size::ptr > ()); } +#line 2805 "parser.cpp" break; - case 148: // expr_primitive: expr_color + case 138: // expr_primitive: expr_paren #line 609 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_color::ptr > ()); } -#line 2846 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_paren::ptr > ()); } +#line 2811 "parser.cpp" break; - case 149: // expr_primitive: expr_vector + case 139: // expr_primitive: expr_thisthread #line 610 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_vector::ptr > ()); } -#line 2852 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_thisthread::ptr > ()); } +#line 2817 "parser.cpp" break; - case 150: // expr_primitive: expr_float + case 140: // expr_primitive: expr_empty_array #line 611 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_float::ptr > ()); } -#line 2858 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_empty_array::ptr > ()); } +#line 2823 "parser.cpp" break; - case 151: // expr_primitive: expr_integer + case 141: // expr_primitive: expr_undefined #line 612 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_integer::ptr > ()); } -#line 2864 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_undefined::ptr > ()); } +#line 2829 "parser.cpp" break; - case 152: // expr_primitive: expr_false + case 142: // expr_primitive: expr_game #line 613 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_false::ptr > ()); } -#line 2870 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_game::ptr > ()); } +#line 2835 "parser.cpp" break; - case 153: // expr_primitive: expr_true + case 143: // expr_primitive: expr_self #line 614 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_true::ptr > ()); } -#line 2876 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_self::ptr > ()); } +#line 2841 "parser.cpp" break; - case 154: // expr_complement: "~" expr + case 144: // expr_primitive: expr_anim +#line 615 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_anim::ptr > ()); } +#line 2847 "parser.cpp" + break; + + case 145: // expr_primitive: expr_level +#line 616 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_level::ptr > ()); } +#line 2853 "parser.cpp" + break; + + case 146: // expr_primitive: expr_animation +#line 617 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_animation::ptr > ()); } +#line 2859 "parser.cpp" + break; + + case 147: // expr_primitive: expr_animtree +#line 618 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_animtree::ptr > ()); } +#line 2865 "parser.cpp" + break; + + case 148: // expr_primitive: expr_identifier #line 619 "parser.ypp" - { yylhs.value.as < ast::expr_complement::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2882 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ()); } +#line 2871 "parser.cpp" break; - case 155: // expr_not: "!" expr + case 149: // expr_primitive: expr_istring +#line 620 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_istring::ptr > ()); } +#line 2877 "parser.cpp" + break; + + case 150: // expr_primitive: expr_string +#line 621 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_string::ptr > ()); } +#line 2883 "parser.cpp" + break; + + case 151: // expr_primitive: expr_color +#line 622 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_color::ptr > ()); } +#line 2889 "parser.cpp" + break; + + case 152: // expr_primitive: expr_vector +#line 623 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_vector::ptr > ()); } +#line 2895 "parser.cpp" + break; + + case 153: // expr_primitive: expr_float #line 624 "parser.ypp" - { yylhs.value.as < ast::expr_not::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2888 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_float::ptr > ()); } +#line 2901 "parser.cpp" break; - case 156: // expr_call: expr_function -#line 628 "parser.ypp" - { yylhs.value.as < ast::expr_call::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::call > ())); } -#line 2894 "parser.cpp" + case 154: // expr_primitive: expr_integer +#line 625 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_integer::ptr > ()); } +#line 2907 "parser.cpp" break; - case 157: // expr_call: expr_pointer -#line 629 "parser.ypp" - { yylhs.value.as < ast::expr_call::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::call > ())); } -#line 2900 "parser.cpp" + case 155: // expr_primitive: expr_false +#line 626 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_false::ptr > ()); } +#line 2913 "parser.cpp" break; - case 158: // expr_method: expr_object expr_function + case 156: // expr_primitive: expr_true +#line 627 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_true::ptr > ()); } +#line 2919 "parser.cpp" + break; + + case 157: // expr_complement: "~" expr #line 632 "parser.ypp" - { yylhs.value.as < ast::expr_method::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::call > ())); } -#line 2906 "parser.cpp" + { yylhs.value.as < ast::expr_complement::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2925 "parser.cpp" break; - case 159: // expr_method: expr_object expr_pointer -#line 633 "parser.ypp" - { yylhs.value.as < ast::expr_method::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::call > ())); } -#line 2912 "parser.cpp" + case 158: // expr_not: "!" expr +#line 637 "parser.ypp" + { yylhs.value.as < ast::expr_not::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2931 "parser.cpp" break; - case 160: // expr_function: expr_identifier "(" expr_arguments ")" -#line 638 "parser.ypp" - { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::normal); } -#line 2918 "parser.cpp" + case 159: // expr_call: expr_function +#line 641 "parser.ypp" + { yylhs.value.as < ast::expr_call::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::call > ())); } +#line 2937 "parser.cpp" break; - case 161: // expr_function: expr_path "::" expr_identifier "(" expr_arguments ")" -#line 640 "parser.ypp" - { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr_path::ptr > ()), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::normal); } -#line 2924 "parser.cpp" - break; - - case 162: // expr_function: "thread" expr_identifier "(" expr_arguments ")" + case 160: // expr_call: expr_pointer #line 642 "parser.ypp" - { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::thread); } -#line 2930 "parser.cpp" + { yylhs.value.as < ast::expr_call::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::call > ())); } +#line 2943 "parser.cpp" break; - case 163: // expr_function: "thread" expr_path "::" expr_identifier "(" expr_arguments ")" -#line 644 "parser.ypp" - { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr_path::ptr > ()), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::thread); } -#line 2936 "parser.cpp" + case 161: // expr_method: expr_object expr_function +#line 645 "parser.ypp" + { yylhs.value.as < ast::expr_method::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::call > ())); } +#line 2949 "parser.cpp" break; - case 164: // expr_function: "childthread" expr_identifier "(" expr_arguments ")" + case 162: // expr_method: expr_object expr_pointer #line 646 "parser.ypp" - { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::childthread); } -#line 2942 "parser.cpp" + { yylhs.value.as < ast::expr_method::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::call > ())); } +#line 2955 "parser.cpp" break; - case 165: // expr_function: "childthread" expr_path "::" expr_identifier "(" expr_arguments ")" -#line 648 "parser.ypp" - { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr_path::ptr > ()), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::childthread); } -#line 2948 "parser.cpp" + case 163: // expr_function: expr_identifier "(" expr_arguments ")" +#line 651 "parser.ypp" + { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::normal); } +#line 2961 "parser.cpp" break; - case 166: // expr_pointer: "[" "[" expr "]" "]" "(" expr_arguments ")" + case 164: // expr_function: expr_path "::" expr_identifier "(" expr_arguments ")" #line 653 "parser.ypp" - { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::normal); } -#line 2954 "parser.cpp" + { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr_path::ptr > ()), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::normal); } +#line 2967 "parser.cpp" break; - case 167: // expr_pointer: "thread" "[" "[" expr "]" "]" "(" expr_arguments ")" + case 165: // expr_function: "thread" expr_identifier "(" expr_arguments ")" #line 655 "parser.ypp" - { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::thread); } -#line 2960 "parser.cpp" + { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::thread); } +#line 2973 "parser.cpp" break; - case 168: // expr_pointer: "childthread" "[" "[" expr "]" "]" "(" expr_arguments ")" + case 166: // expr_function: "thread" expr_path "::" expr_identifier "(" expr_arguments ")" #line 657 "parser.ypp" - { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::childthread); } -#line 2966 "parser.cpp" + { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr_path::ptr > ()), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::thread); } +#line 2979 "parser.cpp" break; - case 169: // expr_pointer: "call" "[" "[" expr "]" "]" "(" expr_arguments ")" + case 167: // expr_function: "childthread" expr_identifier "(" expr_arguments ")" #line 659 "parser.ypp" + { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::childthread); } +#line 2985 "parser.cpp" + break; + + case 168: // expr_function: "childthread" expr_path "::" expr_identifier "(" expr_arguments ")" +#line 661 "parser.ypp" + { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr_path::ptr > ()), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::childthread); } +#line 2991 "parser.cpp" + break; + + case 169: // expr_pointer: "[" "[" expr "]" "]" "(" expr_arguments ")" +#line 666 "parser.ypp" + { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::normal); } +#line 2997 "parser.cpp" + break; + + case 170: // expr_pointer: "thread" "[" "[" expr "]" "]" "(" expr_arguments ")" +#line 668 "parser.ypp" + { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::thread); } +#line 3003 "parser.cpp" + break; + + case 171: // expr_pointer: "childthread" "[" "[" expr "]" "]" "(" expr_arguments ")" +#line 670 "parser.ypp" + { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::childthread); } +#line 3009 "parser.cpp" + break; + + case 172: // expr_pointer: "call" "[" "[" expr "]" "]" "(" expr_arguments ")" +#line 672 "parser.ypp" { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::builtin); } -#line 2972 "parser.cpp" +#line 3015 "parser.cpp" break; - case 170: // expr_add_array: "[" expr_arguments_no_empty "]" -#line 664 "parser.ypp" + case 173: // expr_add_array: "[" expr_arguments_no_empty "]" +#line 677 "parser.ypp" { yylhs.value.as < ast::expr_add_array::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ())); } -#line 2978 "parser.cpp" +#line 3021 "parser.cpp" break; - case 171: // expr_parameters: expr_parameters "," expr_identifier -#line 669 "parser.ypp" + case 174: // expr_parameters: expr_parameters "," expr_identifier +#line 682 "parser.ypp" { yylhs.value.as < ast::expr_parameters::ptr > () = std::move(yystack_[2].value.as < ast::expr_parameters::ptr > ()); yylhs.value.as < ast::expr_parameters::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ())); } -#line 2984 "parser.cpp" +#line 3027 "parser.cpp" break; - case 172: // expr_parameters: expr_identifier -#line 671 "parser.ypp" + case 175: // expr_parameters: expr_identifier +#line 684 "parser.ypp" { yylhs.value.as < ast::expr_parameters::ptr > () = std::make_unique(yylhs.location); yylhs.value.as < ast::expr_parameters::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ())); } -#line 2990 "parser.cpp" +#line 3033 "parser.cpp" break; - case 173: // expr_parameters: %empty -#line 673 "parser.ypp" + case 176: // expr_parameters: %empty +#line 686 "parser.ypp" { yylhs.value.as < ast::expr_parameters::ptr > () = std::make_unique(yylhs.location); } -#line 2996 "parser.cpp" +#line 3039 "parser.cpp" break; - case 174: // expr_arguments: expr_arguments_no_empty -#line 678 "parser.ypp" + case 177: // expr_arguments: expr_arguments_no_empty +#line 691 "parser.ypp" { yylhs.value.as < ast::expr_arguments::ptr > () = std::move(yystack_[0].value.as < ast::expr_arguments::ptr > ()); } -#line 3002 "parser.cpp" +#line 3045 "parser.cpp" break; - case 175: // expr_arguments: %empty -#line 680 "parser.ypp" + case 178: // expr_arguments: %empty +#line 693 "parser.ypp" { yylhs.value.as < ast::expr_arguments::ptr > () = std::make_unique(yylhs.location); } -#line 3008 "parser.cpp" +#line 3051 "parser.cpp" break; - case 176: // expr_arguments_no_empty: expr_arguments "," expr -#line 685 "parser.ypp" + case 179: // expr_arguments_no_empty: expr_arguments "," expr +#line 698 "parser.ypp" { yylhs.value.as < ast::expr_arguments::ptr > () = std::move(yystack_[2].value.as < ast::expr_arguments::ptr > ()); yylhs.value.as < ast::expr_arguments::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::expr > ())); } -#line 3014 "parser.cpp" +#line 3057 "parser.cpp" break; - case 177: // expr_arguments_no_empty: expr -#line 687 "parser.ypp" + case 180: // expr_arguments_no_empty: expr +#line 700 "parser.ypp" { yylhs.value.as < ast::expr_arguments::ptr > () = std::make_unique(yylhs.location); yylhs.value.as < ast::expr_arguments::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::expr > ())); } -#line 3020 "parser.cpp" +#line 3063 "parser.cpp" break; - case 178: // expr_reference: "::" expr_identifier -#line 692 "parser.ypp" + case 181: // expr_reference: "::" expr_identifier +#line 705 "parser.ypp" { yylhs.value.as < ast::expr_reference::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ())); } -#line 3026 "parser.cpp" +#line 3069 "parser.cpp" break; - case 179: // expr_reference: expr_path "::" expr_identifier -#line 694 "parser.ypp" + case 182: // expr_reference: expr_path "::" expr_identifier +#line 707 "parser.ypp" { yylhs.value.as < ast::expr_reference::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr_path::ptr > ()), std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ())); } -#line 3032 "parser.cpp" +#line 3075 "parser.cpp" break; - case 180: // expr_array: expr_object "[" expr "]" -#line 699 "parser.ypp" + case 183: // expr_array: expr_object "[" expr "]" +#line 712 "parser.ypp" { yylhs.value.as < ast::expr_array::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[3].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr > ())); } -#line 3038 "parser.cpp" +#line 3081 "parser.cpp" break; - case 181: // expr_field: expr_object "." expr_identifier -#line 704 "parser.ypp" + case 184: // expr_field: expr_object "." expr_identifier +#line 717 "parser.ypp" { yylhs.value.as < ast::expr_field::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ())); } -#line 3044 "parser.cpp" +#line 3087 "parser.cpp" break; - case 182: // expr_field: expr_object "field" -#line 706 "parser.ypp" + case 185: // expr_field: expr_object "field" +#line 719 "parser.ypp" { yylhs.value.as < ast::expr_field::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ()), std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ())); } -#line 3050 "parser.cpp" +#line 3093 "parser.cpp" break; - case 183: // expr_size: expr_object ".size" -#line 711 "parser.ypp" - { yylhs.value.as < ast::expr_size::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } -#line 3056 "parser.cpp" - break; - - case 184: // expr_paren: "(" expr ")" -#line 716 "parser.ypp" - { yylhs.value.as < ast::expr_paren::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } -#line 3062 "parser.cpp" - break; - - case 185: // expr_object: expr_call -#line 720 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_call::ptr > ()); } -#line 3068 "parser.cpp" - break; - - case 186: // expr_object: expr_method -#line 721 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_method::ptr > ()); } -#line 3074 "parser.cpp" - break; - - case 187: // expr_object: expr_array -#line 722 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_array::ptr > ()); } -#line 3080 "parser.cpp" - break; - - case 188: // expr_object: expr_field -#line 723 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_field::ptr > ()); } -#line 3086 "parser.cpp" - break; - - case 189: // expr_object: expr_game + case 186: // expr_size: expr_object ".size" #line 724 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_game::ptr > ()); } -#line 3092 "parser.cpp" + { yylhs.value.as < ast::expr_size::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } +#line 3099 "parser.cpp" break; - case 190: // expr_object: expr_self -#line 725 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_self::ptr > ()); } -#line 3098 "parser.cpp" + case 187: // expr_paren: "(" expr ")" +#line 729 "parser.ypp" + { yylhs.value.as < ast::expr_paren::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } +#line 3105 "parser.cpp" break; - case 191: // expr_object: expr_anim -#line 726 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_anim::ptr > ()); } -#line 3104 "parser.cpp" - break; - - case 192: // expr_object: expr_level -#line 727 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_level::ptr > ()); } -#line 3110 "parser.cpp" - break; - - case 193: // expr_object: expr_identifier -#line 728 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ()); } -#line 3116 "parser.cpp" - break; - - case 194: // expr_thisthread: "thisthread" + case 188: // expr_object: expr_call #line 733 "parser.ypp" - { yylhs.value.as < ast::expr_thisthread::ptr > () = std::make_unique(yylhs.location); } -#line 3122 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_call::ptr > ()); } +#line 3111 "parser.cpp" break; - case 195: // expr_empty_array: "[" "]" + case 189: // expr_object: expr_method +#line 734 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_method::ptr > ()); } +#line 3117 "parser.cpp" + break; + + case 190: // expr_object: expr_array +#line 735 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_array::ptr > ()); } +#line 3123 "parser.cpp" + break; + + case 191: // expr_object: expr_field +#line 736 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_field::ptr > ()); } +#line 3129 "parser.cpp" + break; + + case 192: // expr_object: expr_game +#line 737 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_game::ptr > ()); } +#line 3135 "parser.cpp" + break; + + case 193: // expr_object: expr_self #line 738 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_self::ptr > ()); } +#line 3141 "parser.cpp" + break; + + case 194: // expr_object: expr_anim +#line 739 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_anim::ptr > ()); } +#line 3147 "parser.cpp" + break; + + case 195: // expr_object: expr_level +#line 740 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_level::ptr > ()); } +#line 3153 "parser.cpp" + break; + + case 196: // expr_object: expr_identifier +#line 741 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ()); } +#line 3159 "parser.cpp" + break; + + case 197: // expr_thisthread: "thisthread" +#line 746 "parser.ypp" + { yylhs.value.as < ast::expr_thisthread::ptr > () = std::make_unique(yylhs.location); } +#line 3165 "parser.cpp" + break; + + case 198: // expr_empty_array: "[" "]" +#line 751 "parser.ypp" { yylhs.value.as < ast::expr_empty_array::ptr > () = std::make_unique(yylhs.location); } -#line 3128 "parser.cpp" +#line 3171 "parser.cpp" break; - case 196: // expr_undefined: "undefined" -#line 743 "parser.ypp" + case 199: // expr_undefined: "undefined" +#line 756 "parser.ypp" { yylhs.value.as < ast::expr_undefined::ptr > () = std::make_unique(yylhs.location); } -#line 3134 "parser.cpp" +#line 3177 "parser.cpp" break; - case 197: // expr_game: "game" -#line 748 "parser.ypp" + case 200: // expr_game: "game" +#line 761 "parser.ypp" { yylhs.value.as < ast::expr_game::ptr > () = std::make_unique(yylhs.location); } -#line 3140 "parser.cpp" +#line 3183 "parser.cpp" break; - case 198: // expr_self: "self" -#line 753 "parser.ypp" + case 201: // expr_self: "self" +#line 766 "parser.ypp" { yylhs.value.as < ast::expr_self::ptr > () = std::make_unique(yylhs.location); } -#line 3146 "parser.cpp" +#line 3189 "parser.cpp" break; - case 199: // expr_anim: "anim" -#line 758 "parser.ypp" + case 202: // expr_anim: "anim" +#line 771 "parser.ypp" { yylhs.value.as < ast::expr_anim::ptr > () = std::make_unique(yylhs.location); } -#line 3152 "parser.cpp" +#line 3195 "parser.cpp" break; - case 200: // expr_level: "level" -#line 763 "parser.ypp" + case 203: // expr_level: "level" +#line 776 "parser.ypp" { yylhs.value.as < ast::expr_level::ptr > () = std::make_unique(yylhs.location); } -#line 3158 "parser.cpp" +#line 3201 "parser.cpp" break; - case 201: // expr_animation: "%" "identifier" -#line 768 "parser.ypp" + case 204: // expr_animation: "%" "identifier" +#line 781 "parser.ypp" { yylhs.value.as < ast::expr_animation::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3164 "parser.cpp" +#line 3207 "parser.cpp" break; - case 202: // expr_animtree: "#animtree" -#line 773 "parser.ypp" + case 205: // expr_animtree: "#animtree" +#line 786 "parser.ypp" { yylhs.value.as < ast::expr_animtree::ptr > () = std::make_unique(yylhs.location); } -#line 3170 "parser.cpp" +#line 3213 "parser.cpp" break; - case 203: // expr_identifier: "identifier" -#line 778 "parser.ypp" + case 206: // expr_identifier: "identifier" +#line 791 "parser.ypp" { yylhs.value.as < ast::expr_identifier::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3176 "parser.cpp" +#line 3219 "parser.cpp" break; - case 204: // expr_path: "path" -#line 783 "parser.ypp" + case 207: // expr_path: "path" +#line 796 "parser.ypp" { yylhs.value.as < ast::expr_path::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3182 "parser.cpp" +#line 3225 "parser.cpp" break; - case 205: // expr_path: expr_identifier -#line 785 "parser.ypp" + case 208: // expr_path: expr_identifier +#line 798 "parser.ypp" { yylhs.value.as < ast::expr_path::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < ast::expr_identifier::ptr > ()->value); } -#line 3188 "parser.cpp" +#line 3231 "parser.cpp" break; - case 206: // expr_istring: "localized string" -#line 790 "parser.ypp" + case 209: // expr_istring: "localized string" +#line 803 "parser.ypp" { yylhs.value.as < ast::expr_istring::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3194 "parser.cpp" +#line 3237 "parser.cpp" break; - case 207: // expr_string: "string literal" -#line 795 "parser.ypp" + case 210: // expr_string: "string literal" +#line 808 "parser.ypp" { yylhs.value.as < ast::expr_string::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3200 "parser.cpp" +#line 3243 "parser.cpp" break; - case 208: // expr_color: "color" -#line 800 "parser.ypp" + case 211: // expr_color: "color" +#line 813 "parser.ypp" { yylhs.value.as < ast::expr_color::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3206 "parser.cpp" +#line 3249 "parser.cpp" break; - case 209: // expr_vector: "(" expr "," expr "," expr ")" -#line 805 "parser.ypp" + case 212: // expr_vector: "(" expr "," expr "," expr ")" +#line 818 "parser.ypp" { yylhs.value.as < ast::expr_vector::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[3].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr > ())); } -#line 3212 "parser.cpp" +#line 3255 "parser.cpp" break; - case 210: // expr_float: "-" "float" -#line 810 "parser.ypp" + case 213: // expr_float: "-" "float" +#line 823 "parser.ypp" { yylhs.value.as < ast::expr_float::ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } -#line 3218 "parser.cpp" +#line 3261 "parser.cpp" break; - case 211: // expr_float: "float" -#line 812 "parser.ypp" + case 214: // expr_float: "float" +#line 825 "parser.ypp" { yylhs.value.as < ast::expr_float::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3224 "parser.cpp" +#line 3267 "parser.cpp" break; - case 212: // expr_integer: "-" "integer" -#line 817 "parser.ypp" + case 215: // expr_integer: "-" "integer" +#line 830 "parser.ypp" { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } -#line 3230 "parser.cpp" +#line 3273 "parser.cpp" break; - case 213: // expr_integer: "integer" -#line 819 "parser.ypp" + case 216: // expr_integer: "integer" +#line 832 "parser.ypp" { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3236 "parser.cpp" +#line 3279 "parser.cpp" break; - case 214: // expr_false: "false" -#line 824 "parser.ypp" + case 217: // expr_false: "false" +#line 837 "parser.ypp" { yylhs.value.as < ast::expr_false::ptr > () = std::make_unique(yylhs.location); } -#line 3242 "parser.cpp" +#line 3285 "parser.cpp" break; - case 215: // expr_true: "true" -#line 829 "parser.ypp" + case 218: // expr_true: "true" +#line 842 "parser.ypp" { yylhs.value.as < ast::expr_true::ptr > () = std::make_unique(yylhs.location); } -#line 3248 "parser.cpp" +#line 3291 "parser.cpp" break; -#line 3252 "parser.cpp" +#line 3295 "parser.cpp" default: break; @@ -3447,24 +3490,24 @@ namespace xsk { namespace gsc { namespace iw7 { "color", "float", "integer", "ADD_ARRAY", "THEN", "TERN", "NEG", "ANIMREF", "PREINC", "PREDEC", "POSTINC", "POSTDEC", "$accept", "root", "program", "inline", "include", "declaration", "decl_usingtree", - "decl_constant", "decl_thread", "stmt", "stmt_dev", "stmt_block", - "stmt_list", "stmt_expr", "stmt_call", "stmt_assign", "stmt_endon", - "stmt_notify", "stmt_wait", "stmt_waittill", "stmt_waittillmatch", - "stmt_waittillframeend", "stmt_if", "stmt_ifelse", "stmt_while", - "stmt_dowhile", "stmt_for", "stmt_foreach", "stmt_switch", "stmt_case", - "stmt_default", "stmt_break", "stmt_continue", "stmt_return", - "stmt_breakpoint", "stmt_prof_begin", "stmt_prof_end", "expr", - "expr_or_empty", "expr_assign", "expr_increment", "expr_decrement", - "expr_ternary", "expr_binary", "expr_primitive", "expr_complement", - "expr_not", "expr_call", "expr_method", "expr_function", "expr_pointer", - "expr_add_array", "expr_parameters", "expr_arguments", - "expr_arguments_no_empty", "expr_reference", "expr_array", "expr_field", - "expr_size", "expr_paren", "expr_object", "expr_thisthread", - "expr_empty_array", "expr_undefined", "expr_game", "expr_self", - "expr_anim", "expr_level", "expr_animation", "expr_animtree", - "expr_identifier", "expr_path", "expr_istring", "expr_string", - "expr_color", "expr_vector", "expr_float", "expr_integer", "expr_false", - "expr_true", YY_NULLPTR + "decl_constant", "decl_thread", "stmt", "stmt_or_dev", "stmt_list", + "stmt_or_dev_list", "stmt_dev", "stmt_block", "stmt_expr", "stmt_call", + "stmt_assign", "stmt_endon", "stmt_notify", "stmt_wait", "stmt_waittill", + "stmt_waittillmatch", "stmt_waittillframeend", "stmt_if", "stmt_ifelse", + "stmt_while", "stmt_dowhile", "stmt_for", "stmt_foreach", "stmt_switch", + "stmt_case", "stmt_default", "stmt_break", "stmt_continue", + "stmt_return", "stmt_breakpoint", "stmt_prof_begin", "stmt_prof_end", + "expr", "expr_or_empty", "expr_assign", "expr_increment", + "expr_decrement", "expr_ternary", "expr_binary", "expr_primitive", + "expr_complement", "expr_not", "expr_call", "expr_method", + "expr_function", "expr_pointer", "expr_add_array", "expr_parameters", + "expr_arguments", "expr_arguments_no_empty", "expr_reference", + "expr_array", "expr_field", "expr_size", "expr_paren", "expr_object", + "expr_thisthread", "expr_empty_array", "expr_undefined", "expr_game", + "expr_self", "expr_anim", "expr_level", "expr_animation", + "expr_animtree", "expr_identifier", "expr_path", "expr_istring", + "expr_string", "expr_color", "expr_vector", "expr_float", "expr_integer", + "expr_false", "expr_true", YY_NULLPTR }; return yy_sname[yysymbol]; } @@ -3729,518 +3772,527 @@ namespace xsk { namespace gsc { namespace iw7 { } - const short parser::yypact_ninf_ = -260; + const short parser::yypact_ninf_ = -261; - const short parser::yytable_ninf_ = -206; + const short parser::yytable_ninf_ = -209; const short parser::yypact_[] = { - 8, -260, -260, -69, -69, -3, -260, 26, 8, -260, - -260, -260, -260, -260, -260, -41, -260, -260, -4, -2, - -39, -260, -260, -260, -260, -33, 1116, -260, -260, -260, - 14, -25, -260, -260, -48, -13, -260, 20, -260, -260, - -260, -260, -260, -260, -260, 1116, 986, -33, 1116, 1116, - -87, -29, -260, -260, -260, -260, 2030, -260, -260, -260, - -260, -260, 465, 533, -260, -260, -260, -260, 567, 616, - -260, -260, 645, -260, -260, -260, 669, 677, 1024, 1089, - -260, -260, 28, 17, -260, -260, -260, -260, -260, -260, - -260, -260, 51, 48, -33, 60, 70, 72, 83, 91, - 81, 96, 1316, 986, -260, 2113, 45, 99, -260, -260, - -260, -260, -260, -260, -260, 1116, 1116, 1116, 1116, 1116, - 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, - 1116, 1116, 1116, 1116, -260, 1181, -33, -260, -260, -260, - 106, 100, 1116, -33, -260, 775, -260, -260, 1116, 1116, - -33, 1116, 1116, -33, 1116, -260, 1116, 1760, 1116, -260, - 1995, 108, 108, 2144, 1172, 150, 150, 69, 69, 69, - 69, 2154, 981, 1107, 35, 35, -260, -260, -260, 1800, - -260, -33, -1, -260, 107, 821, 1116, 105, 118, 959, - 120, 122, 124, 125, -21, 117, 123, 126, 1051, 127, - 132, 141, -260, 140, 384, 384, -260, -260, -260, 867, - -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, - -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, - -260, -260, -260, 136, 145, 146, 147, 149, -260, -260, - 1230, -260, -260, -260, -260, -6, 1840, 39, 161, 1880, - 40, 166, 1920, 1959, 170, 2113, 1116, -260, 107, -260, - 1116, -260, 913, 2065, -260, 1116, 152, 1116, -9, -33, - 1116, 133, 169, 177, -260, -260, -260, -260, 2100, -260, - 1116, 1116, 1116, -260, -260, 22, 22, -260, -260, -260, - -260, -260, -260, -260, 187, 188, 195, 196, -260, -260, - 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, - 1116, 194, -260, 1116, 197, -260, 1116, 198, 1116, 200, - 2113, 41, -260, -260, 1482, 201, 1516, 199, -260, -260, - -260, 1279, -5, 1550, -260, -260, -260, 43, 47, 1760, - 1116, 1116, 1116, 1116, 2113, 2113, 2113, 2113, 2113, 2113, - 2113, 2113, 2113, 2113, 2113, 206, 53, 207, 57, 208, - 1584, 1116, -260, 959, 1116, 959, 1116, 1116, -33, 48, - 202, 203, 1618, 1360, 1404, 1448, 1116, -260, 1116, -260, - 1116, -260, 59, 224, 1652, -260, 2113, 205, 1686, 232, - -260, -260, -260, 209, 211, 1116, 213, 1116, 214, 1116, - 87, 89, 113, -260, 959, 215, -9, 959, 1116, -260, - -260, 227, -260, 228, -260, 230, -260, -260, -260, -260, - -260, 235, -260, 1720, 223, 229, 231, 959, 959, -260, - -260, -260, -260, -260 + 8, -261, -261, -33, -33, -20, -261, 14, 8, -261, + -261, -261, -261, -261, -261, -36, -261, -261, -43, -19, + -63, -261, -261, -261, -261, -46, 932, -261, -261, -261, + 10, -28, -261, -261, -49, -27, -261, 5, -261, -261, + -261, -261, -261, -261, -261, 932, 802, -46, 932, 932, + 7, -15, -261, -261, -261, -261, 2012, -261, -261, -261, + -261, -261, 133, 340, -261, -261, -261, -261, 523, 600, + -261, -261, 674, -261, -261, -261, 840, 905, 970, 1168, + -261, -261, 27, 18, -261, -261, -261, -261, -261, -261, + -261, -261, 28, 64, -46, 75, 80, 78, 83, 88, + 82, 87, 1298, 802, -261, 2095, 89, 91, -261, -261, + -261, -261, -261, -261, -261, 932, 932, 932, 932, 932, + 932, 932, 932, 932, 932, 932, 932, 932, 932, 932, + 932, 932, 932, 932, -261, 997, -46, -261, -261, -261, + 93, 92, 932, -46, -261, 65, -261, -261, 932, 932, + -46, 932, 932, -46, 932, -261, 932, 1742, 932, -261, + 1977, 66, 66, 989, 2126, 1156, 1156, 191, 191, 191, + 191, 2136, 797, 2167, 40, 40, -261, -261, -261, 1782, + -261, -46, -25, -261, 113, 1089, 932, 104, 115, 1256, + 118, 119, 126, 127, -66, 122, 125, 129, 867, 131, + 136, 142, -261, 140, 205, 205, -261, -261, 775, -261, + -261, -261, -261, -261, -261, -261, -261, -261, -261, -261, + -261, -261, -261, -261, -261, -261, -261, -261, -261, -261, + -261, -261, -261, -261, 135, 141, 145, 146, 148, -261, + -261, 1176, -261, -261, -261, -261, -21, 1822, -12, 150, + 1862, -6, 159, 1902, 1941, 155, 2095, 932, -261, 113, + -261, 932, -261, -261, 1135, 2047, -261, 932, 171, 932, + 586, -46, 932, 109, 158, 164, -261, -261, -261, -261, + 2082, -261, 932, 932, 932, -261, -261, 663, 663, -261, + -261, -261, -261, -261, -261, -261, 168, 174, 175, 177, + -261, -261, 932, 932, 932, 932, 932, 932, 932, 932, + 932, 932, 932, 176, -261, 932, 181, -261, 932, 184, + 932, 192, 2095, -2, -261, -261, -261, 1464, 195, 1498, + 154, -261, -261, -261, 1260, -18, 1532, -261, -261, -261, + 2, 4, 1742, 932, 932, 932, 932, 2095, 2095, 2095, + 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 197, 11, + 198, 22, 200, 1566, 932, -261, 1256, 932, 1256, 932, + 932, -46, 64, 201, 202, 1600, 1342, 1386, 1430, 932, + -261, 932, -261, 932, -261, 23, 218, 1634, -261, 2095, + 211, 1668, 229, -261, -261, -261, 213, 215, 932, 216, + 932, 219, 932, 59, 69, 70, -261, 1256, 228, 586, + 1256, 932, -261, -261, 209, -261, 214, -261, 238, -261, + -261, -261, -261, -261, 239, -261, 1702, 231, 233, 234, + 1256, 1256, -261, -261, -261, -261, -261 }; const unsigned char parser::yydefact_[] = { - 3, 12, 13, 0, 0, 0, 203, 0, 2, 7, - 8, 9, 14, 15, 16, 0, 204, 205, 0, 0, - 0, 1, 4, 5, 6, 173, 0, 10, 11, 207, - 0, 0, 172, 202, 0, 0, 194, 0, 215, 214, - 196, 197, 198, 199, 200, 0, 175, 0, 0, 0, - 0, 0, 206, 208, 211, 213, 0, 87, 88, 89, - 126, 127, 128, 129, 156, 157, 130, 131, 132, 133, - 134, 135, 0, 136, 137, 138, 139, 140, 141, 142, - 143, 144, 145, 0, 146, 147, 148, 149, 150, 151, - 152, 153, 0, 0, 0, 0, 205, 0, 0, 205, - 0, 0, 0, 175, 195, 177, 0, 174, 178, 155, - 154, 210, 212, 201, 18, 0, 0, 0, 0, 0, + 3, 12, 13, 0, 0, 0, 206, 0, 2, 7, + 8, 9, 14, 15, 16, 0, 207, 208, 0, 0, + 0, 1, 4, 5, 6, 176, 0, 10, 11, 210, + 0, 0, 175, 205, 0, 0, 197, 0, 218, 217, + 199, 200, 201, 202, 203, 0, 178, 0, 0, 0, + 0, 0, 209, 211, 214, 216, 0, 90, 91, 92, + 129, 130, 131, 132, 159, 160, 133, 134, 135, 136, + 137, 138, 0, 139, 140, 141, 142, 143, 144, 145, + 146, 147, 148, 0, 149, 150, 151, 152, 153, 154, + 155, 156, 0, 0, 0, 0, 208, 0, 0, 208, + 0, 0, 0, 178, 198, 180, 0, 177, 181, 158, + 157, 213, 215, 204, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 183, 0, 0, 182, 158, 159, - 205, 0, 175, 0, 17, 0, 19, 171, 0, 175, - 0, 0, 175, 0, 0, 184, 0, 177, 0, 170, - 0, 119, 120, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 117, 118, 121, 122, 123, 124, 125, 0, - 181, 0, 0, 174, 179, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 186, 0, 0, 185, 161, 162, + 208, 0, 178, 0, 17, 0, 19, 174, 0, 178, + 0, 0, 178, 0, 0, 187, 0, 180, 0, 173, + 0, 122, 123, 111, 112, 113, 114, 115, 116, 117, + 118, 119, 120, 121, 124, 125, 126, 127, 128, 0, + 184, 0, 0, 177, 182, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 48, 0, 0, 0, 50, 20, 21, 0, - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, - 42, 43, 44, 0, 0, 0, 185, 186, 187, 188, - 0, 189, 190, 191, 192, 193, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 176, 0, 180, 0, 160, - 175, 46, 0, 0, 68, 0, 0, 0, 54, 0, - 0, 0, 0, 0, 79, 80, 81, 83, 0, 84, - 175, 175, 0, 185, 186, 103, 105, 47, 49, 57, - 58, 59, 55, 56, 0, 0, 0, 0, 104, 106, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 162, 175, 0, 164, 175, 0, 0, 0, - 107, 0, 45, 63, 0, 0, 0, 0, 51, 52, - 53, 0, 0, 0, 78, 77, 82, 0, 0, 0, - 0, 0, 0, 0, 92, 98, 99, 100, 101, 102, - 93, 94, 95, 97, 96, 0, 0, 0, 0, 0, - 0, 175, 161, 0, 0, 0, 91, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 175, 163, 175, 165, - 175, 209, 0, 69, 0, 71, 90, 0, 0, 0, - 76, 85, 86, 0, 0, 175, 0, 175, 0, 175, - 0, 0, 0, 166, 0, 0, 54, 0, 0, 60, - 62, 174, 65, 174, 67, 174, 167, 168, 169, 70, - 72, 0, 74, 0, 0, 0, 0, 0, 0, 61, - 64, 66, 73, 75 + 0, 0, 53, 0, 0, 0, 44, 49, 0, 45, + 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, + 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 0, 0, 0, 188, 189, 190, + 191, 0, 192, 193, 194, 195, 196, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 179, 0, 183, 0, + 163, 178, 51, 47, 0, 0, 71, 0, 0, 0, + 57, 0, 0, 0, 0, 0, 82, 83, 84, 86, + 0, 87, 178, 178, 0, 188, 189, 106, 108, 52, + 48, 60, 61, 62, 58, 59, 0, 0, 0, 0, + 107, 109, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 165, 178, 0, 167, 178, 0, + 0, 0, 110, 0, 50, 46, 66, 0, 0, 0, + 0, 54, 55, 56, 0, 0, 0, 81, 80, 85, + 0, 0, 0, 0, 0, 0, 0, 95, 101, 102, + 103, 104, 105, 96, 97, 98, 100, 99, 0, 0, + 0, 0, 0, 0, 178, 164, 0, 0, 0, 94, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 178, + 166, 178, 168, 178, 212, 0, 72, 0, 74, 93, + 0, 0, 0, 79, 88, 89, 0, 0, 178, 0, + 178, 0, 178, 0, 0, 0, 169, 0, 0, 57, + 0, 0, 63, 65, 177, 68, 177, 70, 177, 170, + 171, 172, 73, 75, 0, 77, 0, 0, 0, 0, + 0, 0, 64, 67, 69, 76, 78 }; const short parser::yypgoto_[] = { - -260, -260, -260, 259, 281, 288, -260, -260, -260, -172, - -260, -91, 112, -108, -260, -260, -260, -260, -260, -260, - -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, - -260, -260, -260, -260, -260, -260, -260, 185, -260, -259, - -257, -250, -260, -260, -260, -260, -260, -82, -72, -66, - -58, -260, -260, 321, -45, -260, -37, 192, -260, -260, - 240, -260, -260, -260, 253, 327, 355, 365, -260, -260, - 0, 9, -260, -15, -260, -260, -260, 129, -260, -260 + -261, -261, -261, 260, 292, 293, -261, -261, -261, -132, + 96, -261, -261, -261, -91, -85, -261, -261, -261, -261, + -261, -261, -261, -261, -261, -261, -261, -261, -261, -261, + -261, -261, -261, -261, -261, -261, -261, -261, -261, 190, + -261, -260, -254, -253, -261, -261, -261, -261, -261, -37, + -5, -67, -65, -261, -261, 412, -45, -261, 207, 244, + -261, -261, 256, -261, -261, -261, 261, 333, 338, 343, + -261, -261, 0, 9, -261, -11, -261, -261, -261, 132, + -261, -261 }; const short parser::yydefgoto_[] = { 0, 7, 8, 9, 10, 11, 12, 13, 14, 206, - 207, 208, 209, 327, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, - 226, 227, 228, 229, 230, 231, 232, 105, 387, 233, - 234, 235, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 31, 106, 183, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91 + 207, 264, 208, 209, 210, 330, 211, 212, 213, 214, + 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 227, 228, 229, 230, 231, 232, 233, 105, + 390, 234, 235, 236, 57, 58, 59, 60, 61, 62, + 63, 64, 65, 66, 31, 106, 183, 67, 68, 69, + 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, + 90, 91 }; const short parser::yytable_[] = { - 15, 107, 146, 17, 17, 30, 138, 95, 15, 328, - 25, 329, 18, 19, 139, 111, 112, 266, 330, 1, - 2, 3, 4, 5, 367, 32, 21, 93, 16, 6, - 34, 35, 94, 37, 96, 99, 26, 288, 41, 42, - 43, 44, 98, 97, 100, 142, 203, 108, 20, 16, - 6, 259, 368, -205, 204, 205, 158, 27, 107, 28, - 29, 34, 35, 236, 37, 6, 92, -193, -193, 113, - -193, 271, 140, 237, -193, 101, 143, 135, 29, 142, - 136, 141, 55, -193, 16, 6, -193, -205, 16, 6, - 288, 312, 315, 362, 147, 370, 158, 158, 158, 371, - 158, 145, 158, 236, 158, 377, 6, 236, 238, 379, - 158, 403, 144, 237, 158, 148, 158, 237, 137, 16, - 6, 149, 283, 283, -193, -193, -193, 236, 131, 132, - 133, 150, 284, 284, 116, 117, 180, 237, 151, 416, - 153, 417, 152, 184, 158, 245, 158, 328, 238, 329, - 248, 154, 238, 251, 141, 159, 330, 142, 260, 181, - 129, 130, 131, 132, 133, 418, 264, 238, 238, 265, - 158, 267, 238, 268, 138, 269, 270, 274, 325, 272, - 236, 258, 139, 280, 275, 245, 283, 276, 279, 245, - 237, 383, 281, 385, 141, 282, 284, 289, 141, 129, - 130, 131, 132, 133, 245, 245, 290, 291, 292, 245, - 293, 56, 313, 141, 141, 116, 117, 316, 141, 138, - 138, 122, 123, 124, 125, 238, 319, 139, 139, 334, - 102, 238, 419, 109, 110, 422, 112, 335, 340, 341, - 140, 129, 130, 131, 132, 133, 342, 343, 404, 141, - 355, 361, 364, 357, 359, 432, 433, 376, 378, 380, - 366, 408, 245, 391, 392, 138, 406, 22, 245, 332, - 409, 141, 410, 139, 412, 414, 420, 141, 390, 424, - 425, 236, 426, 236, 429, 140, 140, 427, 157, 23, - 430, 237, 431, 237, 141, 141, 24, 262, 421, 0, - 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 0, - 179, 0, 236, 273, 283, 236, 238, 0, 238, 0, - 0, 140, 237, 246, 284, 237, 249, 239, 0, 252, - 141, 253, 0, 255, 0, 236, 236, 0, 0, 0, - 411, 0, 413, 0, 415, 237, 237, 0, 0, 0, - 0, 0, 0, 245, 0, 245, 0, 238, 389, 238, - 238, 263, 141, 0, 141, 0, 0, 239, 0, 0, - 0, 239, 0, 278, 0, 240, 0, 0, 0, 0, - 238, 238, 0, 0, 0, 0, 239, 239, 241, 0, - 0, 239, 0, 0, 245, 0, 245, 245, 0, 0, - 0, 0, 0, 141, 0, 141, 141, 0, 0, 0, - 0, 0, 0, 34, 35, 240, 37, 245, 245, 240, - 0, 41, 42, 43, 44, 0, 141, 141, 241, 203, - 0, 320, 241, 0, 285, 286, 0, 0, 0, 240, - 324, 0, 326, 0, 239, 333, 0, 241, 241, 0, - 239, 0, 241, 182, 0, 0, 0, 339, 0, 0, - 247, 0, 242, 250, 0, 0, 0, 0, 0, 0, - 0, 16, 6, 0, 0, 344, 345, 346, 347, 348, - 349, 350, 351, 352, 353, 354, 0, 0, 0, 0, - 243, 0, 240, 360, -185, -185, 0, -185, 331, 0, - 244, -185, 242, 0, 0, 241, 242, 0, 0, 0, - -185, 241, 0, -185, 0, 372, 373, 374, 375, 0, - 0, 242, 242, 0, 0, 0, 242, 0, 0, 0, - 243, 0, 0, 0, 243, 0, 0, 0, 0, 384, - 244, 386, 388, 0, 244, 239, 0, 239, 0, 243, - 243, -185, -185, -185, 243, 0, 0, 0, 0, 244, - 244, 0, -186, -186, 244, -186, 0, 0, 0, -186, - 0, 321, 0, 0, 0, 0, 0, 0, -186, 242, - 0, -186, 0, 423, 0, 242, 239, 0, 239, 239, - 0, 337, 338, 240, 0, 240, -187, -187, 0, -187, - 0, 0, 0, -187, 0, 0, 241, 243, 241, 239, - 239, 0, -187, 243, 0, -187, 0, 244, 0, -186, - -186, -186, 0, 244, 356, 0, 0, 358, 0, 0, - 0, 0, 0, 0, 240, 0, 331, 240, 0, 0, - 0, 0, 0, 0, 0, -188, -188, 241, -188, 241, - 241, 0, -188, -187, -187, -187, 0, 240, 240, 0, - 0, -188, 0, 0, -188, 0, 0, 0, 0, 0, - 241, 241, 382, 0, 34, 35, 0, 37, 0, 0, - 242, 134, 242, 0, 0, 0, 0, 400, 0, 401, - 135, 402, 0, 136, 0, 0, 0, 0, -189, -189, - 0, -189, -188, -188, -188, -189, -190, -190, 243, -190, - 243, 0, 0, -190, -189, 0, 0, -189, 244, 0, - 244, 242, -190, 242, 242, -190, 0, 0, 0, 0, - 0, 137, 16, 6, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 242, 242, 0, 0, 0, 243, - 0, 243, 243, 0, 0, -189, -189, -189, 0, 244, - 0, 244, 244, -190, -190, -190, 0, 0, 0, 0, - 0, 0, 243, 243, 0, 0, 185, 0, 0, 0, - 0, 0, 244, 244, 186, 0, 0, 187, 188, 0, + 15, 107, 146, 17, 17, 138, 95, 139, 15, 30, + 331, 370, 18, 19, 21, 25, 332, 333, 27, 1, + 2, 3, 4, 5, 93, 32, 273, 260, 98, 94, + 142, 20, 158, 29, 96, 99, 29, 55, -208, 371, + 314, 26, 28, 97, 100, 158, 317, 108, 16, 6, + 365, 158, 6, 263, 373, 158, 374, 268, 107, 158, + 101, 158, 92, 380, 16, 6, -196, -196, 158, -196, + 16, 6, 140, -196, 382, 406, 185, 143, 142, 158, + 158, 141, -196, 113, 186, -196, -208, 187, 188, 144, + 189, 190, 191, 192, 147, 193, 194, 195, 196, 197, + 198, 199, 200, 201, 34, 35, 6, 37, 237, 111, + 112, 419, 41, 42, 43, 44, 158, 145, 145, 202, + 203, 420, 421, -196, -196, -196, 158, 158, 204, 205, + 148, 149, 325, 131, 132, 133, 180, 150, 151, 152, + 238, 153, 154, 184, 142, 246, 158, 159, 237, 331, + 249, 181, 237, 252, 141, 332, 333, 129, 130, 131, + 132, 133, 16, 6, 261, 266, 267, 285, 285, 269, + 270, 237, -188, -188, 138, -188, 139, 271, 272, -188, + 238, 259, 276, 274, 238, 246, 277, 282, -188, 246, + 278, -188, 281, 283, 141, 284, 291, 328, 141, 286, + 286, 315, 292, 238, 246, 246, 293, 294, 246, 295, + 318, 321, 112, 141, 141, 369, 56, 141, 337, 343, + 138, 138, 139, 139, 338, 344, 345, 237, 346, -188, + -188, -188, 358, 285, 386, 102, 388, 360, 109, 110, + 362, 140, 407, 364, 34, 35, 367, 37, 379, 381, + 141, 383, 41, 42, 43, 44, 116, 117, 411, 238, + 203, 427, 394, 395, 246, 286, 428, 138, 22, 139, + 246, 335, 409, 141, 412, 422, 413, 415, 425, 141, + 417, 393, 129, 130, 131, 132, 133, 140, 140, 423, + 429, 430, 432, 157, 433, 434, 141, 141, 435, 436, + 23, 24, 16, 6, 290, 160, 161, 162, 163, 164, + 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, + 175, 176, 177, 178, 424, 179, 275, 0, 0, 237, + 0, 237, 0, 0, 140, 0, 0, 0, 247, 0, + 0, 250, 0, 141, 253, 0, 254, 0, 256, 0, + 0, 0, 239, 414, 0, 416, 0, 418, 0, 0, + 0, 238, 0, 238, 0, 0, 246, 0, 246, 0, + 237, 392, 285, 237, 0, 141, 265, 141, 0, -189, + -189, 0, -189, 0, 0, 0, -189, 0, 280, 240, + 0, 0, 239, 237, 237, -189, 239, 0, -189, 0, + 0, 241, 238, 0, 286, 238, 242, 246, 0, 246, + 246, 239, 239, 0, 0, 239, 141, 0, 141, 141, + 0, 0, 0, 0, 0, 238, 238, 0, 0, 240, + 246, 246, 0, 240, 0, 0, -189, -189, -189, 141, + 141, 241, 0, 0, 0, 241, 242, 322, 240, 240, + 242, 0, 240, 0, 0, 0, 0, 327, 0, 329, + 287, 288, 336, 0, 241, 242, 242, 0, 0, 242, + 0, 239, 0, 0, 342, 0, 0, 239, 243, 0, + 0, 0, 0, 244, 0, 0, 0, 0, 245, 0, + 0, 0, 347, 348, 349, 350, 351, 352, 353, 354, + 355, 356, 357, 0, 0, 0, 0, 0, 240, 0, + 363, 0, 0, 0, 240, 0, 0, 0, 243, 0, + 241, 0, 243, 244, 0, 242, 334, 244, 245, 0, + 0, 242, 245, 375, 376, 377, 378, 243, 243, 0, + 0, 243, 244, 244, 0, 0, 244, 245, 245, 0, + 0, 245, 0, 0, 182, 0, 0, 387, 0, 389, + 391, 248, -190, -190, 251, -190, 0, 0, 0, -190, + 0, 0, 0, 239, 0, 239, 0, 0, -190, 0, + 0, -190, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 243, 0, 0, + 0, 426, 244, 243, 0, 0, 0, 245, 244, 0, + 240, 0, 240, 245, 239, 0, 239, 239, 0, -190, + -190, -190, 241, 0, 241, 34, 35, 242, 37, 242, + 0, 0, 0, 41, 42, 43, 44, 239, 239, -191, + -191, 203, -191, 0, 0, 0, -191, 0, 0, 204, + 205, 240, 0, 240, 240, -191, 0, 0, -191, 0, + 0, 0, 0, 241, 0, 334, 241, 0, 242, 0, + 242, 242, 0, 323, 240, 240, 0, 0, 0, 0, + 0, 0, 0, 16, 6, 0, 241, 241, 0, 0, + 0, 242, 242, 0, 340, 341, -191, -191, -191, 243, + 0, 243, 34, 35, 244, 37, 244, 0, 0, 245, + 0, 245, 0, 34, 35, 0, 37, 0, 135, 0, + 134, 136, 0, 0, 0, 0, 0, 359, 0, 135, + 361, 0, 136, 0, 0, 0, 0, 0, 0, 0, + 243, 0, 243, 243, 0, 244, 0, 244, 244, 0, + 245, 0, 245, 245, 0, 0, 0, 0, 0, 137, + 16, 6, 0, 243, 243, 0, 0, 0, 244, 244, + 137, 16, 6, 245, 245, 0, 385, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 185, 0, 0, 0, + 0, 403, 0, 404, 186, 405, 0, 187, 188, 0, 189, 190, 191, 192, 0, 193, 194, 195, 196, 197, - 198, 199, 200, 201, 34, 35, 0, 37, 0, 0, - 0, 0, 41, 42, 43, 44, 0, 0, 145, 202, - 203, 0, 185, 261, 0, 0, 0, 0, 204, 205, - 186, 0, 0, 187, 188, 0, 189, 190, 191, 192, - 0, 193, 194, 195, 196, 197, 198, 199, 200, 201, - 34, 35, 0, 37, 0, 0, 0, 0, 41, 42, - 43, 44, 16, 6, 145, 0, 203, 0, 185, 0, - 0, 0, 0, 0, 204, 205, 186, 0, 0, 187, - 188, 0, 189, 190, 191, 192, 0, 193, 194, 195, - 196, 197, 198, 199, 200, 201, 34, 35, 0, 37, - 0, 0, 0, 0, 41, 42, 43, 44, 16, 6, - 145, 287, 203, 0, 185, 322, 0, 0, 0, 0, - 204, 205, 186, 0, 0, 187, 188, 0, 189, 190, - 191, 192, 0, 193, 194, 195, 196, 197, 198, 199, - 200, 201, 34, 35, 0, 37, 0, 0, 0, 0, - 41, 42, 43, 44, 16, 6, 145, 0, 203, 0, - 185, 0, 0, 0, 0, 0, 204, 205, 186, 0, + 198, 199, 200, 201, 34, 35, 0, 37, 33, 0, + 0, 0, 41, 42, 43, 44, 0, 0, 145, 289, + 203, 0, 0, 0, 0, 0, 0, 0, 204, 205, + 0, 34, 35, 36, 37, 38, 39, 40, 0, 41, + 42, 43, 44, 45, 0, 0, 0, 103, 104, 0, + 0, 47, 116, 117, 0, 0, 120, 121, 122, 123, + 124, 125, 16, 6, 0, 0, 0, 48, 49, -192, + -192, 0, -192, 33, 0, 0, -192, 0, 129, 130, + 131, 132, 133, 0, 50, -192, 0, 51, -192, 16, + 6, 29, 52, 53, 54, 55, 34, 35, 36, 37, + 38, 39, 40, 0, 41, 42, 43, 44, 45, 0, + 0, 0, 46, 0, 0, 0, 47, 0, 279, 0, + 0, 0, 0, 0, 0, 0, -192, -192, -192, 0, + 0, 0, 48, 49, -193, -193, 0, -193, 33, 0, + 0, -193, 0, 0, 0, 0, 0, 0, 0, 50, + -193, 0, 51, -193, 16, 6, 29, 52, 53, 54, + 55, 34, 35, 36, 37, 38, 39, 40, 0, 41, + 42, 43, 44, 45, 0, 0, 0, 46, 0, 0, + 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, + 0, -193, -193, -193, 0, 0, 0, 48, 49, -194, + -194, 0, -194, 33, 0, 0, -194, 0, 0, 0, + 0, 0, 0, 0, 50, -194, 0, 51, -194, 16, + 6, 29, 52, 53, 54, 55, 34, 35, 36, 37, + 38, 39, 40, 0, 41, 42, 43, 44, 45, 0, + 0, 0, 103, 0, 116, 117, 47, 119, 120, 121, + 122, 123, 124, 125, 0, 0, -194, -194, -194, 0, + 0, 0, 48, 49, 0, 0, 0, 126, 127, 128, + 129, 130, 131, 132, 133, 0, 0, 0, 0, 50, + 0, 0, 51, 0, 16, 6, 29, 52, 53, 54, + 55, 262, 0, 0, 0, 0, 0, 0, 186, 0, 0, 187, 188, 0, 189, 190, 191, 192, 0, 193, 194, 195, 196, 197, 198, 199, 200, 201, 34, 35, - 0, 37, 33, 0, 0, 0, 41, 42, 43, 44, - 16, 6, 145, 0, 203, 0, 0, 0, 0, 0, - 0, 0, 204, 205, 0, 34, 35, 36, 37, 38, - 39, 40, 0, 41, 42, 43, 44, 45, 0, 0, - 0, 103, 104, 0, 0, 47, 116, 117, 0, 0, - 120, 121, 122, 123, 124, 125, 16, 6, 0, 0, - 0, 48, 49, -191, -191, 0, -191, 33, 0, 0, - -191, 0, 129, 130, 131, 132, 133, 0, 50, -191, - 0, 51, -191, 16, 6, 29, 52, 53, 54, 55, - 34, 35, 36, 37, 38, 39, 40, 0, 41, 42, - 43, 44, 45, 0, 0, 0, 46, 0, 0, 0, - 47, 0, 277, 0, 0, 0, 0, 0, 0, 0, - -191, -191, -191, 0, 0, 0, 48, 49, -192, -192, - 0, -192, 33, 0, 0, -192, 0, 0, 0, 0, - 0, 0, 0, 50, -192, 0, 51, -192, 16, 6, - 29, 52, 53, 54, 55, 34, 35, 36, 37, 38, - 39, 40, 0, 41, 42, 43, 44, 45, 0, 0, - 0, 46, 116, 117, 0, 47, 120, 121, 122, 123, - 124, 125, 0, 0, 0, -192, -192, -192, 0, 0, - 0, 48, 49, 0, 0, 0, 127, 33, 129, 130, - 131, 132, 133, 0, 0, 0, 0, 0, 50, 0, - 0, 51, 0, 16, 6, 29, 52, 53, 54, 55, - 34, 35, 36, 37, 38, 39, 40, 0, 41, 42, - 43, 44, 45, 0, 0, 0, 103, 116, 117, 0, - 47, 120, 121, 122, 123, 124, 125, 294, 295, 0, - 296, 297, 0, 0, 0, 0, 48, 49, 0, 0, - 126, 127, 128, 129, 130, 131, 132, 133, 0, 34, - 35, 0, 37, 50, 0, 0, 51, 0, 16, 6, - 29, 52, 53, 54, 55, 135, 0, 0, 136, 0, - 0, 0, 0, 298, 299, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 34, 35, - 0, 37, 0, 0, 0, 0, 137, 16, 6, 0, - 0, 0, 0, 0, 135, 0, 0, 136, 0, 0, - 0, 0, 298, 299, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 300, 301, 302, 303, - 304, 305, 306, 307, 308, 309, 310, 0, 155, 0, - 0, 0, 0, 156, 0, 137, 16, 6, 115, 0, + 0, 37, 0, 0, 0, 0, 41, 42, 43, 44, + 0, 0, 145, 0, 203, 0, 0, 324, 0, 0, + 0, 0, 204, 205, 186, 0, 0, 187, 188, 0, + 189, 190, 191, 192, 0, 193, 194, 195, 196, 197, + 198, 199, 200, 201, 34, 35, 0, 37, 0, 0, + 0, 0, 41, 42, 43, 44, 16, 6, 145, 0, + 203, 0, 0, 296, 297, 0, 298, 299, 204, 205, + 0, 0, 0, 0, 0, 0, 0, -195, -195, 0, + -195, 0, 0, 0, -195, 34, 35, 0, 37, 0, + 0, 116, 117, -195, 0, 0, -195, 122, 123, 124, + 125, 135, 16, 6, 136, 0, 0, 0, 0, 300, + 301, 0, 0, 0, 0, 0, 0, 129, 130, 131, + 132, 133, 0, 302, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 312, -195, -195, -195, 0, 0, 0, + 0, 0, 137, 16, 6, 186, 0, 0, 187, 188, + 0, 189, 190, 191, 192, 0, 193, 194, 195, 196, + 197, 198, 199, 200, 201, 34, 35, 0, 37, 34, + 35, 0, 37, 41, 42, 43, 44, 0, 0, 145, + 0, 203, 0, 0, 0, 135, 0, 0, 136, 204, + 205, 0, 0, 300, 301, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, 0, 0, + 155, 0, 0, 16, 6, 156, 137, 16, 6, 0, + 115, 0, 0, 116, 117, 118, 119, 120, 121, 122, + 123, 124, 125, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 126, 127, 128, 129, + 130, 131, 132, 133, 397, 0, 0, 0, 0, 398, + 0, 0, 0, 0, 115, 0, 0, 116, 117, 118, + 119, 120, 121, 122, 123, 124, 125, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 126, 127, 128, 129, 130, 131, 132, 133, 399, 0, + 0, 0, 0, 400, 0, 0, 0, 0, 115, 0, 0, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 126, 127, 128, 129, 130, 131, - 132, 133, 394, 0, 0, 0, 0, 395, 0, 0, + 132, 133, 401, 0, 0, 0, 0, 402, 0, 0, 0, 0, 115, 0, 0, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 126, 127, - 128, 129, 130, 131, 132, 133, 396, 0, 0, 0, - 0, 397, 0, 0, 0, 0, 115, 0, 0, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 126, 127, 128, 129, 130, 131, 132, 133, - 398, 0, 0, 0, 0, 399, 0, 0, 0, 0, - 115, 0, 0, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 363, 0, 126, 127, 128, 129, - 130, 131, 132, 133, 115, 0, 0, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 365, 0, - 126, 127, 128, 129, 130, 131, 132, 133, 115, 0, - 0, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 369, 0, 126, 127, 128, 129, 130, 131, - 132, 133, 115, 0, 0, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 381, 0, 126, 127, + 0, 0, 0, 0, 0, 0, 366, 0, 126, 127, 128, 129, 130, 131, 132, 133, 115, 0, 0, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 393, 0, 126, 127, 128, 129, 130, 131, 132, 133, + 368, 0, 126, 127, 128, 129, 130, 131, 132, 133, 115, 0, 0, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 405, 0, 126, 127, 128, 129, + 0, 0, 0, 0, 372, 0, 126, 127, 128, 129, 130, 131, 132, 133, 115, 0, 0, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 407, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 384, 0, 126, 127, 128, 129, 130, 131, 132, 133, 115, 0, 0, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 428, 0, 126, 127, 128, 129, 130, 131, + 0, 0, 396, 0, 126, 127, 128, 129, 130, 131, 132, 133, 115, 0, 0, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 126, 127, - 128, 129, 130, 131, 132, 133, 254, 0, 0, 0, - 0, 0, 115, 0, 0, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 126, 127, - 128, 129, 130, 131, 132, 133, 257, 0, 0, 0, - 0, 0, 115, 0, 0, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 126, 127, - 128, 129, 130, 131, 132, 133, 311, 0, 0, 0, - 0, 0, 115, 0, 0, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 126, 127, - 128, 129, 130, 131, 132, 133, 314, 0, 0, 0, - 0, 0, 115, 0, 0, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 126, 127, - 128, 129, 130, 131, 132, 133, 317, 0, 0, 0, - 0, 0, 115, 0, 0, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 126, 127, - 128, 129, 130, 131, 132, 133, 318, 0, 0, 0, - 0, 115, 0, 0, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 126, 127, 128, - 129, 130, 131, 132, 133, 256, 0, 115, 0, 0, - 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, + 0, 0, 0, 0, 0, 0, 408, 0, 126, 127, + 128, 129, 130, 131, 132, 133, 115, 0, 0, 116, + 117, 118, 119, 120, 121, 122, 123, 124, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 126, 127, 128, 129, 130, 131, 132, - 133, 114, 115, 0, 0, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 126, 127, - 128, 129, 130, 131, 132, 133, 323, 115, 0, 0, - 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, + 410, 0, 126, 127, 128, 129, 130, 131, 132, 133, + 115, 0, 0, 116, 117, 118, 119, 120, 121, 122, + 123, 124, 125, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 431, 0, 126, 127, 128, 129, + 130, 131, 132, 133, 115, 0, 0, 116, 117, 118, + 119, 120, 121, 122, 123, 124, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 126, 127, 128, 129, 130, 131, 132, 133, 255, 0, + 0, 0, 0, 0, 115, 0, 0, 116, 117, 118, + 119, 120, 121, 122, 123, 124, 125, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 126, 127, 128, 129, 130, 131, 132, 133, 258, 0, + 0, 0, 0, 0, 115, 0, 0, 116, 117, 118, + 119, 120, 121, 122, 123, 124, 125, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 126, 127, 128, 129, 130, 131, 132, 133, 313, 0, + 0, 0, 0, 0, 115, 0, 0, 116, 117, 118, + 119, 120, 121, 122, 123, 124, 125, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 126, 127, 128, 129, 130, 131, 132, 133, 316, 0, + 0, 0, 0, 0, 115, 0, 0, 116, 117, 118, + 119, 120, 121, 122, 123, 124, 125, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 126, 127, 128, 129, 130, 131, 132, 133, 319, 0, + 0, 0, 0, 0, 115, 0, 0, 116, 117, 118, + 119, 120, 121, 122, 123, 124, 125, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 126, 127, 128, 129, 130, 131, 132, 133, 320, 0, + 0, 0, 0, 115, 0, 0, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 126, + 127, 128, 129, 130, 131, 132, 133, 257, 0, 115, + 0, 0, 116, 117, 118, 119, 120, 121, 122, 123, + 124, 125, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 126, 127, 128, 129, 130, + 131, 132, 133, 114, 115, 0, 0, 116, 117, 118, + 119, 120, 121, 122, 123, 124, 125, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 126, 127, 128, 129, 130, 131, 132, 133, 326, 115, + 0, 0, 116, 117, 118, 119, 120, 121, 122, 123, + 124, 125, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 126, 127, 128, 129, 130, + 131, 132, 133, 339, 115, 0, 0, 116, 117, 118, + 119, 120, 121, 122, 123, 124, 125, 115, 0, 0, + 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, + 126, 127, 128, 129, 130, 131, 132, 133, 0, 0, 0, 0, 0, 126, 127, 128, 129, 130, 131, 132, - 133, 336, 115, 0, 0, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 115, 0, 0, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 0, 0, 0, 0, - 0, 126, 127, 128, 129, 130, 131, 132, 133, 116, - 117, 0, 119, 120, 121, 122, 123, 124, 125, 116, - 117, 0, 0, 120, 121, 122, 123, 124, 125, 0, - 0, 0, 126, 127, 128, 129, 130, 131, 132, 133, - 0, 0, 0, 127, 128, 129, 130, 131, 132, 133 + 133, 116, 117, 0, 0, 120, 121, 122, 123, 124, + 125, 116, 117, 0, 0, 120, 121, 122, 123, 124, + 125, 0, 0, 0, 126, 127, 128, 129, 130, 131, + 132, 133, 0, 0, 0, 127, 128, 129, 130, 131, + 132, 133, 116, 117, 0, 0, 120, 121, 122, 123, + 124, 125, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 127, 0, 129, 130, + 131, 132, 133 }; const short parser::yycheck_[] = { - 0, 46, 93, 3, 4, 20, 72, 55, 8, 268, - 51, 268, 3, 4, 72, 102, 103, 189, 268, 11, - 12, 13, 14, 15, 29, 25, 0, 52, 97, 98, - 39, 40, 57, 42, 34, 35, 77, 209, 47, 48, - 49, 50, 55, 34, 35, 51, 55, 47, 51, 97, - 98, 52, 57, 59, 63, 64, 57, 61, 103, 61, - 99, 39, 40, 145, 42, 98, 52, 39, 40, 98, - 42, 92, 72, 145, 46, 55, 59, 55, 99, 51, - 58, 72, 103, 55, 97, 98, 58, 59, 97, 98, - 262, 52, 52, 52, 94, 52, 57, 57, 57, 52, - 57, 53, 57, 185, 57, 52, 98, 189, 145, 52, - 57, 52, 61, 185, 57, 55, 57, 189, 96, 97, - 98, 51, 204, 205, 96, 97, 98, 209, 93, 94, - 95, 59, 204, 205, 65, 66, 136, 209, 55, 52, - 59, 52, 51, 143, 57, 145, 57, 406, 185, 406, - 150, 55, 189, 153, 145, 56, 406, 51, 51, 59, - 91, 92, 93, 94, 95, 52, 61, 204, 205, 51, - 57, 51, 209, 51, 240, 51, 51, 60, 26, 194, - 262, 181, 240, 51, 61, 185, 268, 61, 61, 189, - 262, 363, 51, 365, 185, 55, 268, 61, 189, 91, - 92, 93, 94, 95, 204, 205, 61, 61, 61, 209, - 61, 26, 51, 204, 205, 65, 66, 51, 209, 285, - 286, 71, 72, 73, 74, 262, 56, 285, 286, 60, - 45, 268, 404, 48, 49, 407, 103, 60, 51, 51, - 240, 91, 92, 93, 94, 95, 51, 51, 24, 240, - 56, 51, 51, 56, 56, 427, 428, 51, 51, 51, - 61, 29, 262, 61, 61, 331, 61, 8, 268, 269, - 61, 262, 61, 331, 61, 61, 61, 268, 369, 52, - 52, 363, 52, 365, 61, 285, 286, 52, 103, 8, - 61, 363, 61, 365, 285, 286, 8, 185, 406, -1, - 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, -1, - 135, -1, 404, 194, 406, 407, 363, -1, 365, -1, - -1, 331, 404, 148, 406, 407, 151, 145, -1, 154, - 331, 156, -1, 158, -1, 427, 428, -1, -1, -1, - 395, -1, 397, -1, 399, 427, 428, -1, -1, -1, - -1, -1, -1, 363, -1, 365, -1, 404, 368, 406, - 407, 186, 363, -1, 365, -1, -1, 185, -1, -1, - -1, 189, -1, 198, -1, 145, -1, -1, -1, -1, - 427, 428, -1, -1, -1, -1, 204, 205, 145, -1, - -1, 209, -1, -1, 404, -1, 406, 407, -1, -1, - -1, -1, -1, 404, -1, 406, 407, -1, -1, -1, - -1, -1, -1, 39, 40, 185, 42, 427, 428, 189, - -1, 47, 48, 49, 50, -1, 427, 428, 185, 55, - -1, 256, 189, -1, 204, 205, -1, -1, -1, 209, - 265, -1, 267, -1, 262, 270, -1, 204, 205, -1, - 268, -1, 209, 142, -1, -1, -1, 282, -1, -1, - 149, -1, 145, 152, -1, -1, -1, -1, -1, -1, - -1, 97, 98, -1, -1, 300, 301, 302, 303, 304, - 305, 306, 307, 308, 309, 310, -1, -1, -1, -1, - 145, -1, 262, 318, 39, 40, -1, 42, 268, -1, - 145, 46, 185, -1, -1, 262, 189, -1, -1, -1, - 55, 268, -1, 58, -1, 340, 341, 342, 343, -1, - -1, 204, 205, -1, -1, -1, 209, -1, -1, -1, - 185, -1, -1, -1, 189, -1, -1, -1, -1, 364, - 185, 366, 367, -1, 189, 363, -1, 365, -1, 204, - 205, 96, 97, 98, 209, -1, -1, -1, -1, 204, - 205, -1, 39, 40, 209, 42, -1, -1, -1, 46, - -1, 260, -1, -1, -1, -1, -1, -1, 55, 262, - -1, 58, -1, 408, -1, 268, 404, -1, 406, 407, - -1, 280, 281, 363, -1, 365, 39, 40, -1, 42, - -1, -1, -1, 46, -1, -1, 363, 262, 365, 427, - 428, -1, 55, 268, -1, 58, -1, 262, -1, 96, - 97, 98, -1, 268, 313, -1, -1, 316, -1, -1, - -1, -1, -1, -1, 404, -1, 406, 407, -1, -1, - -1, -1, -1, -1, -1, 39, 40, 404, 42, 406, - 407, -1, 46, 96, 97, 98, -1, 427, 428, -1, - -1, 55, -1, -1, 58, -1, -1, -1, -1, -1, - 427, 428, 361, -1, 39, 40, -1, 42, -1, -1, - 363, 46, 365, -1, -1, -1, -1, 376, -1, 378, - 55, 380, -1, 58, -1, -1, -1, -1, 39, 40, - -1, 42, 96, 97, 98, 46, 39, 40, 363, 42, - 365, -1, -1, 46, 55, -1, -1, 58, 363, -1, - 365, 404, 55, 406, 407, 58, -1, -1, -1, -1, - -1, 96, 97, 98, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 427, 428, -1, -1, -1, 404, - -1, 406, 407, -1, -1, 96, 97, 98, -1, 404, - -1, 406, 407, 96, 97, 98, -1, -1, -1, -1, - -1, -1, 427, 428, -1, -1, 11, -1, -1, -1, - -1, -1, 427, 428, 19, -1, -1, 22, 23, -1, + 0, 46, 93, 3, 4, 72, 55, 72, 8, 20, + 270, 29, 3, 4, 0, 51, 270, 270, 61, 11, + 12, 13, 14, 15, 52, 25, 92, 52, 55, 57, + 51, 51, 57, 99, 34, 35, 99, 103, 59, 57, + 52, 77, 61, 34, 35, 57, 52, 47, 97, 98, + 52, 57, 98, 185, 52, 57, 52, 189, 103, 57, + 55, 57, 52, 52, 97, 98, 39, 40, 57, 42, + 97, 98, 72, 46, 52, 52, 11, 59, 51, 57, + 57, 72, 55, 98, 19, 58, 59, 22, 23, 61, + 25, 26, 27, 28, 94, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 98, 42, 145, 102, + 103, 52, 47, 48, 49, 50, 57, 53, 53, 54, + 55, 52, 52, 96, 97, 98, 57, 57, 63, 64, + 55, 51, 264, 93, 94, 95, 136, 59, 55, 51, + 145, 59, 55, 143, 51, 145, 57, 56, 185, 409, + 150, 59, 189, 153, 145, 409, 409, 91, 92, 93, + 94, 95, 97, 98, 51, 61, 51, 204, 205, 51, + 51, 208, 39, 40, 241, 42, 241, 51, 51, 46, + 185, 181, 60, 194, 189, 185, 61, 51, 55, 189, + 61, 58, 61, 51, 185, 55, 61, 26, 189, 204, + 205, 51, 61, 208, 204, 205, 61, 61, 208, 61, + 51, 56, 103, 204, 205, 61, 26, 208, 60, 51, + 287, 288, 287, 288, 60, 51, 51, 264, 51, 96, + 97, 98, 56, 270, 366, 45, 368, 56, 48, 49, + 56, 241, 24, 51, 39, 40, 51, 42, 51, 51, + 241, 51, 47, 48, 49, 50, 65, 66, 29, 264, + 55, 52, 61, 61, 264, 270, 52, 334, 8, 334, + 270, 271, 61, 264, 61, 407, 61, 61, 410, 270, + 61, 372, 91, 92, 93, 94, 95, 287, 288, 61, + 52, 52, 61, 103, 61, 61, 287, 288, 430, 431, + 8, 8, 97, 98, 208, 115, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, + 130, 131, 132, 133, 409, 135, 194, -1, -1, 366, + -1, 368, -1, -1, 334, -1, -1, -1, 148, -1, + -1, 151, -1, 334, 154, -1, 156, -1, 158, -1, + -1, -1, 145, 398, -1, 400, -1, 402, -1, -1, + -1, 366, -1, 368, -1, -1, 366, -1, 368, -1, + 407, 371, 409, 410, -1, 366, 186, 368, -1, 39, + 40, -1, 42, -1, -1, -1, 46, -1, 198, 145, + -1, -1, 185, 430, 431, 55, 189, -1, 58, -1, + -1, 145, 407, -1, 409, 410, 145, 407, -1, 409, + 410, 204, 205, -1, -1, 208, 407, -1, 409, 410, + -1, -1, -1, -1, -1, 430, 431, -1, -1, 185, + 430, 431, -1, 189, -1, -1, 96, 97, 98, 430, + 431, 185, -1, -1, -1, 189, 185, 257, 204, 205, + 189, -1, 208, -1, -1, -1, -1, 267, -1, 269, + 204, 205, 272, -1, 208, 204, 205, -1, -1, 208, + -1, 264, -1, -1, 284, -1, -1, 270, 145, -1, + -1, -1, -1, 145, -1, -1, -1, -1, 145, -1, + -1, -1, 302, 303, 304, 305, 306, 307, 308, 309, + 310, 311, 312, -1, -1, -1, -1, -1, 264, -1, + 320, -1, -1, -1, 270, -1, -1, -1, 185, -1, + 264, -1, 189, 185, -1, 264, 270, 189, 185, -1, + -1, 270, 189, 343, 344, 345, 346, 204, 205, -1, + -1, 208, 204, 205, -1, -1, 208, 204, 205, -1, + -1, 208, -1, -1, 142, -1, -1, 367, -1, 369, + 370, 149, 39, 40, 152, 42, -1, -1, -1, 46, + -1, -1, -1, 366, -1, 368, -1, -1, 55, -1, + -1, 58, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 264, -1, -1, + -1, 411, 264, 270, -1, -1, -1, 264, 270, -1, + 366, -1, 368, 270, 407, -1, 409, 410, -1, 96, + 97, 98, 366, -1, 368, 39, 40, 366, 42, 368, + -1, -1, -1, 47, 48, 49, 50, 430, 431, 39, + 40, 55, 42, -1, -1, -1, 46, -1, -1, 63, + 64, 407, -1, 409, 410, 55, -1, -1, 58, -1, + -1, -1, -1, 407, -1, 409, 410, -1, 407, -1, + 409, 410, -1, 261, 430, 431, -1, -1, -1, -1, + -1, -1, -1, 97, 98, -1, 430, 431, -1, -1, + -1, 430, 431, -1, 282, 283, 96, 97, 98, 366, + -1, 368, 39, 40, 366, 42, 368, -1, -1, 366, + -1, 368, -1, 39, 40, -1, 42, -1, 55, -1, + 46, 58, -1, -1, -1, -1, -1, 315, -1, 55, + 318, -1, 58, -1, -1, -1, -1, -1, -1, -1, + 407, -1, 409, 410, -1, 407, -1, 409, 410, -1, + 407, -1, 409, 410, -1, -1, -1, -1, -1, 96, + 97, 98, -1, 430, 431, -1, -1, -1, 430, 431, + 96, 97, 98, 430, 431, -1, 364, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 11, -1, -1, -1, + -1, 379, -1, 381, 19, 383, -1, 22, 23, -1, 25, 26, 27, 28, -1, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, -1, 42, -1, -1, + 35, 36, 37, 38, 39, 40, -1, 42, 16, -1, -1, -1, 47, 48, 49, 50, -1, -1, 53, 54, - 55, -1, 11, 12, -1, -1, -1, -1, 63, 64, - 19, -1, -1, 22, 23, -1, 25, 26, 27, 28, - -1, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, -1, 42, -1, -1, -1, -1, 47, 48, - 49, 50, 97, 98, 53, -1, 55, -1, 11, -1, - -1, -1, -1, -1, 63, 64, 19, -1, -1, 22, - 23, -1, 25, 26, 27, 28, -1, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, -1, 42, - -1, -1, -1, -1, 47, 48, 49, 50, 97, 98, - 53, 54, 55, -1, 11, 12, -1, -1, -1, -1, - 63, 64, 19, -1, -1, 22, 23, -1, 25, 26, - 27, 28, -1, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, -1, 42, -1, -1, -1, -1, - 47, 48, 49, 50, 97, 98, 53, -1, 55, -1, - 11, -1, -1, -1, -1, -1, 63, 64, 19, -1, + 55, -1, -1, -1, -1, -1, -1, -1, 63, 64, + -1, 39, 40, 41, 42, 43, 44, 45, -1, 47, + 48, 49, 50, 51, -1, -1, -1, 55, 56, -1, + -1, 59, 65, 66, -1, -1, 69, 70, 71, 72, + 73, 74, 97, 98, -1, -1, -1, 75, 76, 39, + 40, -1, 42, 16, -1, -1, 46, -1, 91, 92, + 93, 94, 95, -1, 92, 55, -1, 95, 58, 97, + 98, 99, 100, 101, 102, 103, 39, 40, 41, 42, + 43, 44, 45, -1, 47, 48, 49, 50, 51, -1, + -1, -1, 55, -1, -1, -1, 59, -1, 61, -1, + -1, -1, -1, -1, -1, -1, 96, 97, 98, -1, + -1, -1, 75, 76, 39, 40, -1, 42, 16, -1, + -1, 46, -1, -1, -1, -1, -1, -1, -1, 92, + 55, -1, 95, 58, 97, 98, 99, 100, 101, 102, + 103, 39, 40, 41, 42, 43, 44, 45, -1, 47, + 48, 49, 50, 51, -1, -1, -1, 55, -1, -1, + -1, 59, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 96, 97, 98, -1, -1, -1, 75, 76, 39, + 40, -1, 42, 16, -1, -1, 46, -1, -1, -1, + -1, -1, -1, -1, 92, 55, -1, 95, 58, 97, + 98, 99, 100, 101, 102, 103, 39, 40, 41, 42, + 43, 44, 45, -1, 47, 48, 49, 50, 51, -1, + -1, -1, 55, -1, 65, 66, 59, 68, 69, 70, + 71, 72, 73, 74, -1, -1, 96, 97, 98, -1, + -1, -1, 75, 76, -1, -1, -1, 88, 89, 90, + 91, 92, 93, 94, 95, -1, -1, -1, -1, 92, + -1, -1, 95, -1, 97, 98, 99, 100, 101, 102, + 103, 12, -1, -1, -1, -1, -1, -1, 19, -1, -1, 22, 23, -1, 25, 26, 27, 28, -1, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - -1, 42, 16, -1, -1, -1, 47, 48, 49, 50, - 97, 98, 53, -1, 55, -1, -1, -1, -1, -1, - -1, -1, 63, 64, -1, 39, 40, 41, 42, 43, - 44, 45, -1, 47, 48, 49, 50, 51, -1, -1, - -1, 55, 56, -1, -1, 59, 65, 66, -1, -1, - 69, 70, 71, 72, 73, 74, 97, 98, -1, -1, - -1, 75, 76, 39, 40, -1, 42, 16, -1, -1, - 46, -1, 91, 92, 93, 94, 95, -1, 92, 55, - -1, 95, 58, 97, 98, 99, 100, 101, 102, 103, - 39, 40, 41, 42, 43, 44, 45, -1, 47, 48, - 49, 50, 51, -1, -1, -1, 55, -1, -1, -1, - 59, -1, 61, -1, -1, -1, -1, -1, -1, -1, - 96, 97, 98, -1, -1, -1, 75, 76, 39, 40, - -1, 42, 16, -1, -1, 46, -1, -1, -1, -1, - -1, -1, -1, 92, 55, -1, 95, 58, 97, 98, - 99, 100, 101, 102, 103, 39, 40, 41, 42, 43, - 44, 45, -1, 47, 48, 49, 50, 51, -1, -1, - -1, 55, 65, 66, -1, 59, 69, 70, 71, 72, - 73, 74, -1, -1, -1, 96, 97, 98, -1, -1, - -1, 75, 76, -1, -1, -1, 89, 16, 91, 92, - 93, 94, 95, -1, -1, -1, -1, -1, 92, -1, - -1, 95, -1, 97, 98, 99, 100, 101, 102, 103, - 39, 40, 41, 42, 43, 44, 45, -1, 47, 48, - 49, 50, 51, -1, -1, -1, 55, 65, 66, -1, - 59, 69, 70, 71, 72, 73, 74, 17, 18, -1, - 20, 21, -1, -1, -1, -1, 75, 76, -1, -1, - 88, 89, 90, 91, 92, 93, 94, 95, -1, 39, - 40, -1, 42, 92, -1, -1, 95, -1, 97, 98, - 99, 100, 101, 102, 103, 55, -1, -1, 58, -1, - -1, -1, -1, 63, 64, -1, -1, -1, -1, -1, + -1, 42, -1, -1, -1, -1, 47, 48, 49, 50, + -1, -1, 53, -1, 55, -1, -1, 12, -1, -1, + -1, -1, 63, 64, 19, -1, -1, 22, 23, -1, + 25, 26, 27, 28, -1, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, -1, 42, -1, -1, + -1, -1, 47, 48, 49, 50, 97, 98, 53, -1, + 55, -1, -1, 17, 18, -1, 20, 21, 63, 64, + -1, -1, -1, -1, -1, -1, -1, 39, 40, -1, + 42, -1, -1, -1, 46, 39, 40, -1, 42, -1, + -1, 65, 66, 55, -1, -1, 58, 71, 72, 73, + 74, 55, 97, 98, 58, -1, -1, -1, -1, 63, + 64, -1, -1, -1, -1, -1, -1, 91, 92, 93, + 94, 95, -1, 77, 78, 79, 80, 81, 82, 83, + 84, 85, 86, 87, 96, 97, 98, -1, -1, -1, + -1, -1, 96, 97, 98, 19, -1, -1, 22, 23, + -1, 25, 26, 27, 28, -1, 30, 31, 32, 33, + 34, 35, 36, 37, 38, 39, 40, -1, 42, 39, + 40, -1, 42, 47, 48, 49, 50, -1, -1, 53, + -1, 55, -1, -1, -1, 55, -1, -1, 58, 63, + 64, -1, -1, 63, 64, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 39, 40, - -1, 42, -1, -1, -1, -1, 96, 97, 98, -1, - -1, -1, -1, -1, 55, -1, -1, 58, -1, -1, - -1, -1, 63, 64, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 77, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, -1, 52, -1, - -1, -1, -1, 57, -1, 96, 97, 98, 62, -1, + 80, 81, 82, 83, 84, 85, 86, 87, -1, -1, + 52, -1, -1, 97, 98, 57, 96, 97, 98, -1, + 62, -1, -1, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 88, 89, 90, 91, + 92, 93, 94, 95, 52, -1, -1, -1, -1, 57, + -1, -1, -1, -1, 62, -1, -1, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 88, 89, 90, 91, 92, 93, 94, 95, 52, -1, + -1, -1, -1, 57, -1, -1, -1, -1, 62, -1, -1, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 88, 89, 90, 91, 92, 93, 94, 95, 52, -1, -1, -1, -1, 57, -1, -1, -1, -1, 62, -1, -1, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 88, 89, - 90, 91, 92, 93, 94, 95, 52, -1, -1, -1, - -1, 57, -1, -1, -1, -1, 62, -1, -1, 65, + -1, -1, -1, -1, -1, -1, 52, -1, 88, 89, + 90, 91, 92, 93, 94, 95, 62, -1, -1, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 88, 89, 90, 91, 92, 93, 94, 95, - 52, -1, -1, -1, -1, 57, -1, -1, -1, -1, + 52, -1, 88, 89, 90, 91, 92, 93, 94, 95, 62, -1, -1, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 52, -1, 88, 89, 90, 91, @@ -4263,107 +4315,104 @@ namespace xsk { namespace gsc { namespace iw7 { -1, -1, -1, -1, 52, -1, 88, 89, 90, 91, 92, 93, 94, 95, 62, -1, -1, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 52, -1, - 88, 89, 90, 91, 92, 93, 94, 95, 62, -1, - -1, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 52, -1, 88, 89, 90, 91, 92, 93, - 94, 95, 62, -1, -1, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 88, 89, - 90, 91, 92, 93, 94, 95, 56, -1, -1, -1, - -1, -1, 62, -1, -1, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 88, 89, - 90, 91, 92, 93, 94, 95, 56, -1, -1, -1, - -1, -1, 62, -1, -1, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 88, 89, - 90, 91, 92, 93, 94, 95, 56, -1, -1, -1, - -1, -1, 62, -1, -1, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 88, 89, - 90, 91, 92, 93, 94, 95, 56, -1, -1, -1, - -1, -1, 62, -1, -1, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 88, 89, - 90, 91, 92, 93, 94, 95, 56, -1, -1, -1, - -1, -1, 62, -1, -1, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 88, 89, - 90, 91, 92, 93, 94, 95, 57, -1, -1, -1, - -1, 62, -1, -1, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 88, 89, 90, - 91, 92, 93, 94, 95, 60, -1, 62, -1, -1, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 88, 89, 90, 91, 92, 93, 94, - 95, 61, 62, -1, -1, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 88, 89, - 90, 91, 92, 93, 94, 95, 61, 62, -1, -1, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 88, 89, 90, 91, 92, 93, 94, 95, 56, -1, + -1, -1, -1, -1, 62, -1, -1, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 88, 89, 90, 91, 92, 93, 94, 95, 56, -1, + -1, -1, -1, -1, 62, -1, -1, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 88, 89, 90, 91, 92, 93, 94, 95, 56, -1, + -1, -1, -1, -1, 62, -1, -1, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 88, 89, 90, 91, 92, 93, 94, 95, 56, -1, + -1, -1, -1, -1, 62, -1, -1, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 88, 89, 90, 91, 92, 93, 94, 95, 56, -1, + -1, -1, -1, -1, 62, -1, -1, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 88, 89, 90, 91, 92, 93, 94, 95, 57, -1, + -1, -1, -1, 62, -1, -1, 65, 66, 67, 68, + 69, 70, 71, 72, 73, 74, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 88, + 89, 90, 91, 92, 93, 94, 95, 60, -1, 62, + -1, -1, 65, 66, 67, 68, 69, 70, 71, 72, + 73, 74, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 88, 89, 90, 91, 92, + 93, 94, 95, 61, 62, -1, -1, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 88, 89, 90, 91, 92, 93, 94, 95, 61, 62, + -1, -1, 65, 66, 67, 68, 69, 70, 71, 72, + 73, 74, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 88, 89, 90, 91, 92, + 93, 94, 95, 61, 62, -1, -1, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, 62, -1, -1, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 88, 89, 90, 91, 92, 93, 94, 95, -1, -1, -1, -1, -1, 88, 89, 90, 91, 92, 93, 94, - 95, 61, 62, -1, -1, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, 62, -1, -1, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 88, 89, - 90, 91, 92, 93, 94, 95, -1, -1, -1, -1, - -1, 88, 89, 90, 91, 92, 93, 94, 95, 65, - 66, -1, 68, 69, 70, 71, 72, 73, 74, 65, - 66, -1, -1, 69, 70, 71, 72, 73, 74, -1, - -1, -1, 88, 89, 90, 91, 92, 93, 94, 95, - -1, -1, -1, 89, 90, 91, 92, 93, 94, 95 + 95, 65, 66, -1, -1, 69, 70, 71, 72, 73, + 74, 65, 66, -1, -1, 69, 70, 71, 72, 73, + 74, -1, -1, -1, 88, 89, 90, 91, 92, 93, + 94, 95, -1, -1, -1, 89, 90, 91, 92, 93, + 94, 95, 65, 66, -1, -1, 69, 70, 71, 72, + 73, 74, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 89, -1, 91, 92, + 93, 94, 95 }; const unsigned char parser::yystos_[] = { 0, 11, 12, 13, 14, 15, 98, 114, 115, 116, - 117, 118, 119, 120, 121, 183, 97, 183, 184, 184, + 117, 118, 119, 120, 121, 185, 97, 185, 186, 186, 51, 0, 116, 117, 118, 51, 77, 61, 61, 99, - 186, 165, 183, 16, 39, 40, 41, 42, 43, 44, + 188, 167, 185, 16, 39, 40, 41, 42, 43, 44, 45, 47, 48, 49, 50, 51, 55, 59, 75, 76, - 92, 95, 100, 101, 102, 103, 150, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, 168, 169, 170, - 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, - 191, 192, 52, 52, 57, 55, 183, 184, 55, 183, - 184, 55, 150, 55, 56, 150, 166, 167, 183, 150, - 150, 102, 103, 98, 61, 62, 65, 66, 67, 68, + 92, 95, 100, 101, 102, 103, 152, 157, 158, 159, + 160, 161, 162, 163, 164, 165, 166, 170, 171, 172, + 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, + 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, + 193, 194, 52, 52, 57, 55, 185, 186, 55, 185, + 186, 55, 152, 55, 56, 152, 168, 169, 185, 152, + 152, 102, 103, 98, 61, 62, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 88, 89, 90, 91, - 92, 93, 94, 95, 46, 55, 58, 96, 162, 163, - 183, 184, 51, 59, 61, 53, 124, 183, 55, 51, - 59, 55, 51, 59, 55, 52, 57, 150, 57, 56, - 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, - 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, - 183, 59, 166, 167, 183, 11, 19, 22, 23, 25, + 92, 93, 94, 95, 46, 55, 58, 96, 164, 165, + 185, 186, 51, 59, 61, 53, 127, 185, 55, 51, + 59, 55, 51, 59, 55, 52, 57, 152, 57, 56, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 185, 59, 168, 169, 185, 11, 19, 22, 23, 25, 26, 27, 28, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 54, 55, 63, 64, 122, 123, 124, 125, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 152, 153, 154, 160, 161, 169, 170, - 173, 177, 178, 179, 180, 183, 150, 166, 183, 150, - 166, 183, 150, 150, 56, 150, 60, 56, 183, 52, - 51, 12, 125, 150, 61, 51, 122, 51, 51, 51, - 51, 92, 186, 190, 60, 61, 61, 61, 150, 61, - 51, 51, 55, 160, 161, 173, 173, 54, 122, 61, - 61, 61, 61, 61, 17, 18, 20, 21, 63, 64, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 56, 52, 51, 56, 52, 51, 56, 57, 56, - 150, 166, 12, 61, 150, 26, 150, 126, 152, 153, - 154, 173, 183, 150, 60, 60, 61, 166, 166, 150, - 51, 51, 51, 51, 150, 150, 150, 150, 150, 150, - 150, 150, 150, 150, 150, 56, 166, 56, 166, 56, - 150, 51, 52, 52, 51, 52, 61, 29, 57, 52, - 52, 52, 150, 150, 150, 150, 51, 52, 51, 52, - 51, 52, 166, 122, 150, 122, 150, 151, 150, 183, - 124, 61, 61, 52, 52, 57, 52, 57, 52, 57, - 166, 166, 166, 52, 24, 52, 61, 52, 29, 61, - 61, 167, 61, 167, 61, 167, 52, 52, 52, 122, - 61, 126, 122, 150, 52, 52, 52, 52, 52, 61, - 61, 61, 122, 122 + 37, 38, 54, 55, 63, 64, 122, 123, 125, 126, + 127, 129, 130, 131, 132, 133, 134, 135, 136, 137, + 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, + 148, 149, 150, 151, 154, 155, 156, 162, 163, 171, + 172, 175, 179, 180, 181, 182, 185, 152, 168, 185, + 152, 168, 185, 152, 152, 56, 152, 60, 56, 185, + 52, 51, 12, 122, 124, 152, 61, 51, 122, 51, + 51, 51, 51, 92, 188, 192, 60, 61, 61, 61, + 152, 61, 51, 51, 55, 162, 163, 175, 175, 54, + 123, 61, 61, 61, 61, 61, 17, 18, 20, 21, + 63, 64, 77, 78, 79, 80, 81, 82, 83, 84, + 85, 86, 87, 56, 52, 51, 56, 52, 51, 56, + 57, 56, 152, 168, 12, 122, 61, 152, 26, 152, + 128, 154, 155, 156, 175, 185, 152, 60, 60, 61, + 168, 168, 152, 51, 51, 51, 51, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 56, 168, + 56, 168, 56, 152, 51, 52, 52, 51, 52, 61, + 29, 57, 52, 52, 52, 152, 152, 152, 152, 51, + 52, 51, 52, 51, 52, 168, 122, 152, 122, 152, + 153, 152, 185, 127, 61, 61, 52, 52, 57, 52, + 57, 52, 57, 168, 168, 168, 52, 24, 52, 61, + 52, 29, 61, 61, 169, 61, 169, 61, 169, 52, + 52, 52, 122, 61, 128, 122, 152, 52, 52, 52, + 52, 52, 61, 61, 61, 122, 122 }; const unsigned char @@ -4373,24 +4422,24 @@ namespace xsk { namespace gsc { namespace iw7 { 116, 117, 118, 118, 118, 118, 118, 119, 120, 121, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, - 122, 122, 122, 122, 122, 123, 123, 124, 124, 125, - 125, 126, 126, 126, 126, 127, 127, 128, 128, 128, - 129, 130, 130, 131, 132, 132, 133, 133, 134, 135, - 136, 137, 138, 139, 140, 140, 141, 142, 142, 143, - 144, 145, 146, 146, 147, 148, 149, 150, 150, 150, - 151, 151, 152, 152, 152, 152, 152, 152, 152, 152, - 152, 152, 152, 153, 153, 154, 154, 155, 156, 156, - 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, - 156, 156, 156, 156, 156, 156, 157, 157, 157, 157, - 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, - 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, - 157, 157, 157, 157, 158, 159, 160, 160, 161, 161, - 162, 162, 162, 162, 162, 162, 163, 163, 163, 163, - 164, 165, 165, 165, 166, 166, 167, 167, 168, 168, - 169, 170, 170, 171, 172, 173, 173, 173, 173, 173, - 173, 173, 173, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, 184, 185, 186, 187, 188, - 189, 189, 190, 190, 191, 192 + 122, 122, 122, 122, 123, 123, 124, 124, 125, 125, + 126, 126, 127, 127, 128, 128, 128, 128, 129, 129, + 130, 130, 130, 131, 132, 132, 133, 134, 134, 135, + 135, 136, 137, 138, 139, 140, 141, 142, 142, 143, + 144, 144, 145, 146, 147, 148, 148, 149, 150, 151, + 152, 152, 152, 153, 153, 154, 154, 154, 154, 154, + 154, 154, 154, 154, 154, 154, 155, 155, 156, 156, + 157, 158, 158, 158, 158, 158, 158, 158, 158, 158, + 158, 158, 158, 158, 158, 158, 158, 158, 158, 159, + 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, + 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, + 159, 159, 159, 159, 159, 159, 159, 160, 161, 162, + 162, 163, 163, 164, 164, 164, 164, 164, 164, 165, + 165, 165, 165, 166, 167, 167, 167, 168, 168, 169, + 169, 170, 170, 171, 172, 172, 173, 174, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 176, 177, 178, + 179, 180, 181, 182, 183, 184, 185, 186, 186, 187, + 188, 189, 190, 191, 191, 192, 192, 193, 194 }; const signed char @@ -4400,24 +4449,24 @@ namespace xsk { namespace gsc { namespace iw7 { 3, 3, 1, 1, 1, 1, 1, 5, 4, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 3, 2, 3, 2, 2, - 1, 1, 1, 1, 0, 2, 2, 2, 2, 2, - 6, 8, 6, 3, 8, 6, 8, 6, 2, 5, - 7, 5, 7, 9, 7, 9, 5, 3, 3, 2, - 2, 2, 3, 2, 2, 5, 5, 1, 1, 1, - 1, 0, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 2, 2, 2, 2, 5, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, + 3, 2, 3, 2, 1, 1, 1, 0, 2, 2, + 2, 2, 2, 6, 8, 6, 3, 8, 6, 8, + 6, 2, 5, 7, 5, 7, 9, 7, 9, 5, + 3, 3, 2, 2, 2, 3, 2, 2, 5, 5, + 1, 1, 1, 1, 0, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, + 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 2, 2, 1, 1, 2, 2, - 4, 6, 5, 7, 5, 7, 8, 9, 9, 9, - 3, 3, 1, 0, 1, 0, 3, 1, 2, 3, - 4, 3, 2, 2, 3, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, - 1, 2, 1, 1, 1, 1, 1, 1, 1, 7, - 2, 1, 2, 1, 1, 1 + 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, + 1, 2, 2, 4, 6, 5, 7, 5, 7, 8, + 9, 9, 9, 3, 3, 1, 0, 1, 0, 3, + 1, 2, 3, 4, 3, 2, 2, 3, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, + 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, + 1, 1, 7, 2, 1, 2, 1, 1, 1 }; @@ -4427,28 +4476,28 @@ namespace xsk { namespace gsc { namespace iw7 { const short parser::yyrline_[] = { - 0, 252, 252, 253, 257, 259, 261, 263, 265, 267, - 272, 276, 281, 282, 283, 284, 285, 289, 294, 299, - 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, - 324, 325, 326, 327, 328, 332, 333, 337, 338, 342, - 344, 349, 351, 353, 356, 360, 362, 367, 369, 371, - 376, 381, 383, 388, 393, 395, 400, 402, 407, 412, - 417, 422, 427, 432, 437, 439, 444, 449, 451, 456, - 461, 466, 471, 473, 478, 483, 488, 493, 494, 495, - 499, 500, 504, 506, 508, 510, 512, 514, 516, 518, - 520, 522, 524, 529, 531, 536, 538, 543, 548, 550, - 552, 554, 556, 558, 560, 562, 564, 566, 568, 570, - 572, 574, 576, 578, 580, 582, 587, 588, 589, 590, - 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, + 0, 254, 254, 255, 259, 261, 263, 265, 267, 269, + 274, 278, 283, 284, 285, 286, 287, 291, 296, 301, + 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, + 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, + 326, 327, 328, 329, 333, 334, 338, 340, 345, 347, + 352, 353, 357, 358, 362, 364, 366, 369, 373, 375, + 380, 382, 384, 389, 394, 396, 401, 406, 408, 413, + 415, 420, 425, 430, 435, 440, 445, 450, 452, 457, + 462, 464, 469, 474, 479, 484, 486, 491, 496, 501, + 506, 507, 508, 512, 513, 517, 519, 521, 523, 525, + 527, 529, 531, 533, 535, 537, 542, 544, 549, 551, + 556, 561, 563, 565, 567, 569, 571, 573, 575, 577, + 579, 581, 583, 585, 587, 589, 591, 593, 595, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, - 611, 612, 613, 614, 618, 623, 628, 629, 632, 633, - 637, 639, 641, 643, 645, 647, 652, 654, 656, 658, - 663, 668, 670, 673, 677, 680, 684, 686, 691, 693, - 698, 703, 705, 710, 715, 720, 721, 722, 723, 724, - 725, 726, 727, 728, 732, 737, 742, 747, 752, 757, - 762, 767, 772, 777, 782, 784, 789, 794, 799, 804, - 809, 811, 816, 818, 823, 828 + 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, + 621, 622, 623, 624, 625, 626, 627, 631, 636, 641, + 642, 645, 646, 650, 652, 654, 656, 658, 660, 665, + 667, 669, 671, 676, 681, 683, 686, 690, 693, 697, + 699, 704, 706, 711, 716, 718, 723, 728, 733, 734, + 735, 736, 737, 738, 739, 740, 741, 745, 750, 755, + 760, 765, 770, 775, 780, 785, 790, 795, 797, 802, + 807, 812, 817, 822, 824, 829, 831, 836, 841 }; void @@ -4481,9 +4530,9 @@ namespace xsk { namespace gsc { namespace iw7 { #line 13 "parser.ypp" } } } // xsk::gsc::iw7 -#line 4485 "parser.cpp" +#line 4534 "parser.cpp" -#line 832 "parser.ypp" +#line 845 "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 b362f84f..59ca2dbf 100644 --- a/src/iw7/xsk/parser.hpp +++ b/src/iw7/xsk/parser.hpp @@ -535,6 +535,7 @@ namespace xsk { namespace gsc { namespace iw7 { char dummy39[sizeof (ast::program::ptr)]; // stmt + // stmt_or_dev char dummy40[sizeof (ast::stmt)]; // stmt_assign @@ -558,61 +559,64 @@ namespace xsk { namespace gsc { namespace iw7 { // stmt_default char dummy47[sizeof (ast::stmt_default::ptr)]; + // stmt_dev + char dummy48[sizeof (ast::stmt_dev::ptr)]; + // stmt_dowhile - char dummy48[sizeof (ast::stmt_dowhile::ptr)]; + char dummy49[sizeof (ast::stmt_dowhile::ptr)]; // stmt_endon - char dummy49[sizeof (ast::stmt_endon::ptr)]; + char dummy50[sizeof (ast::stmt_endon::ptr)]; // stmt_expr - char dummy50[sizeof (ast::stmt_expr::ptr)]; + char dummy51[sizeof (ast::stmt_expr::ptr)]; // stmt_for - char dummy51[sizeof (ast::stmt_for::ptr)]; + char dummy52[sizeof (ast::stmt_for::ptr)]; // stmt_foreach - char dummy52[sizeof (ast::stmt_foreach::ptr)]; + char dummy53[sizeof (ast::stmt_foreach::ptr)]; // stmt_if - char dummy53[sizeof (ast::stmt_if::ptr)]; + char dummy54[sizeof (ast::stmt_if::ptr)]; // stmt_ifelse - char dummy54[sizeof (ast::stmt_ifelse::ptr)]; + char dummy55[sizeof (ast::stmt_ifelse::ptr)]; - // stmt_dev - // stmt_block // stmt_list - char dummy55[sizeof (ast::stmt_list::ptr)]; + // stmt_or_dev_list + // stmt_block + char dummy56[sizeof (ast::stmt_list::ptr)]; // stmt_notify - char dummy56[sizeof (ast::stmt_notify::ptr)]; + char dummy57[sizeof (ast::stmt_notify::ptr)]; // stmt_prof_begin - char dummy57[sizeof (ast::stmt_prof_begin::ptr)]; + char dummy58[sizeof (ast::stmt_prof_begin::ptr)]; // stmt_prof_end - char dummy58[sizeof (ast::stmt_prof_end::ptr)]; + char dummy59[sizeof (ast::stmt_prof_end::ptr)]; // stmt_return - char dummy59[sizeof (ast::stmt_return::ptr)]; + char dummy60[sizeof (ast::stmt_return::ptr)]; // stmt_switch - char dummy60[sizeof (ast::stmt_switch::ptr)]; + char dummy61[sizeof (ast::stmt_switch::ptr)]; // stmt_wait - char dummy61[sizeof (ast::stmt_wait::ptr)]; + char dummy62[sizeof (ast::stmt_wait::ptr)]; // stmt_waittill - char dummy62[sizeof (ast::stmt_waittill::ptr)]; + char dummy63[sizeof (ast::stmt_waittill::ptr)]; // stmt_waittillframeend - char dummy63[sizeof (ast::stmt_waittillframeend::ptr)]; + char dummy64[sizeof (ast::stmt_waittillframeend::ptr)]; // stmt_waittillmatch - char dummy64[sizeof (ast::stmt_waittillmatch::ptr)]; + char dummy65[sizeof (ast::stmt_waittillmatch::ptr)]; // stmt_while - char dummy65[sizeof (ast::stmt_while::ptr)]; + char dummy66[sizeof (ast::stmt_while::ptr)]; // "field" // "path" @@ -622,7 +626,7 @@ namespace xsk { namespace gsc { namespace iw7 { // "color" // "float" // "integer" - char dummy66[sizeof (std::string)]; + char dummy67[sizeof (std::string)]; }; /// The size of the largest semantic type. @@ -925,76 +929,78 @@ namespace xsk { namespace gsc { namespace iw7 { S_decl_constant = 120, // decl_constant S_decl_thread = 121, // decl_thread S_stmt = 122, // stmt - S_stmt_dev = 123, // stmt_dev - S_stmt_block = 124, // stmt_block - S_stmt_list = 125, // stmt_list - S_stmt_expr = 126, // stmt_expr - S_stmt_call = 127, // stmt_call - S_stmt_assign = 128, // stmt_assign - S_stmt_endon = 129, // stmt_endon - S_stmt_notify = 130, // stmt_notify - S_stmt_wait = 131, // stmt_wait - S_stmt_waittill = 132, // stmt_waittill - S_stmt_waittillmatch = 133, // stmt_waittillmatch - S_stmt_waittillframeend = 134, // stmt_waittillframeend - S_stmt_if = 135, // stmt_if - S_stmt_ifelse = 136, // stmt_ifelse - S_stmt_while = 137, // stmt_while - S_stmt_dowhile = 138, // stmt_dowhile - S_stmt_for = 139, // stmt_for - S_stmt_foreach = 140, // stmt_foreach - S_stmt_switch = 141, // stmt_switch - S_stmt_case = 142, // stmt_case - S_stmt_default = 143, // stmt_default - S_stmt_break = 144, // stmt_break - S_stmt_continue = 145, // stmt_continue - S_stmt_return = 146, // stmt_return - S_stmt_breakpoint = 147, // stmt_breakpoint - S_stmt_prof_begin = 148, // stmt_prof_begin - S_stmt_prof_end = 149, // stmt_prof_end - S_expr = 150, // expr - S_expr_or_empty = 151, // expr_or_empty - S_expr_assign = 152, // expr_assign - S_expr_increment = 153, // expr_increment - S_expr_decrement = 154, // expr_decrement - S_expr_ternary = 155, // expr_ternary - S_expr_binary = 156, // expr_binary - S_expr_primitive = 157, // expr_primitive - S_expr_complement = 158, // expr_complement - S_expr_not = 159, // expr_not - S_expr_call = 160, // expr_call - S_expr_method = 161, // expr_method - S_expr_function = 162, // expr_function - S_expr_pointer = 163, // expr_pointer - S_expr_add_array = 164, // expr_add_array - S_expr_parameters = 165, // expr_parameters - S_expr_arguments = 166, // expr_arguments - S_expr_arguments_no_empty = 167, // expr_arguments_no_empty - S_expr_reference = 168, // expr_reference - S_expr_array = 169, // expr_array - S_expr_field = 170, // expr_field - S_expr_size = 171, // expr_size - S_expr_paren = 172, // expr_paren - S_expr_object = 173, // expr_object - S_expr_thisthread = 174, // expr_thisthread - S_expr_empty_array = 175, // expr_empty_array - S_expr_undefined = 176, // expr_undefined - S_expr_game = 177, // expr_game - S_expr_self = 178, // expr_self - S_expr_anim = 179, // expr_anim - S_expr_level = 180, // expr_level - S_expr_animation = 181, // expr_animation - S_expr_animtree = 182, // expr_animtree - S_expr_identifier = 183, // expr_identifier - S_expr_path = 184, // expr_path - S_expr_istring = 185, // expr_istring - S_expr_string = 186, // expr_string - S_expr_color = 187, // expr_color - S_expr_vector = 188, // expr_vector - S_expr_float = 189, // expr_float - S_expr_integer = 190, // expr_integer - S_expr_false = 191, // expr_false - S_expr_true = 192 // expr_true + S_stmt_or_dev = 123, // stmt_or_dev + S_stmt_list = 124, // stmt_list + S_stmt_or_dev_list = 125, // stmt_or_dev_list + S_stmt_dev = 126, // stmt_dev + S_stmt_block = 127, // stmt_block + S_stmt_expr = 128, // stmt_expr + S_stmt_call = 129, // stmt_call + S_stmt_assign = 130, // stmt_assign + S_stmt_endon = 131, // stmt_endon + S_stmt_notify = 132, // stmt_notify + S_stmt_wait = 133, // stmt_wait + S_stmt_waittill = 134, // stmt_waittill + S_stmt_waittillmatch = 135, // stmt_waittillmatch + S_stmt_waittillframeend = 136, // stmt_waittillframeend + S_stmt_if = 137, // stmt_if + S_stmt_ifelse = 138, // stmt_ifelse + S_stmt_while = 139, // stmt_while + S_stmt_dowhile = 140, // stmt_dowhile + S_stmt_for = 141, // stmt_for + S_stmt_foreach = 142, // stmt_foreach + S_stmt_switch = 143, // stmt_switch + S_stmt_case = 144, // stmt_case + S_stmt_default = 145, // stmt_default + S_stmt_break = 146, // stmt_break + S_stmt_continue = 147, // stmt_continue + S_stmt_return = 148, // stmt_return + S_stmt_breakpoint = 149, // stmt_breakpoint + S_stmt_prof_begin = 150, // stmt_prof_begin + S_stmt_prof_end = 151, // stmt_prof_end + S_expr = 152, // expr + S_expr_or_empty = 153, // expr_or_empty + S_expr_assign = 154, // expr_assign + S_expr_increment = 155, // expr_increment + S_expr_decrement = 156, // expr_decrement + S_expr_ternary = 157, // expr_ternary + S_expr_binary = 158, // expr_binary + S_expr_primitive = 159, // expr_primitive + S_expr_complement = 160, // expr_complement + S_expr_not = 161, // expr_not + S_expr_call = 162, // expr_call + S_expr_method = 163, // expr_method + S_expr_function = 164, // expr_function + S_expr_pointer = 165, // expr_pointer + S_expr_add_array = 166, // expr_add_array + S_expr_parameters = 167, // expr_parameters + S_expr_arguments = 168, // expr_arguments + S_expr_arguments_no_empty = 169, // expr_arguments_no_empty + S_expr_reference = 170, // expr_reference + S_expr_array = 171, // expr_array + S_expr_field = 172, // expr_field + S_expr_size = 173, // expr_size + S_expr_paren = 174, // expr_paren + S_expr_object = 175, // expr_object + S_expr_thisthread = 176, // expr_thisthread + S_expr_empty_array = 177, // expr_empty_array + S_expr_undefined = 178, // expr_undefined + S_expr_game = 179, // expr_game + S_expr_self = 180, // expr_self + S_expr_anim = 181, // expr_anim + S_expr_level = 182, // expr_level + S_expr_animation = 183, // expr_animation + S_expr_animtree = 184, // expr_animtree + S_expr_identifier = 185, // expr_identifier + S_expr_path = 186, // expr_path + S_expr_istring = 187, // expr_istring + S_expr_string = 188, // expr_string + S_expr_color = 189, // expr_color + S_expr_vector = 190, // expr_vector + S_expr_float = 191, // expr_float + S_expr_integer = 192, // expr_integer + S_expr_false = 193, // expr_false + S_expr_true = 194 // expr_true }; }; @@ -1198,6 +1204,7 @@ namespace xsk { namespace gsc { namespace iw7 { break; case symbol_kind::S_stmt: // stmt + case symbol_kind::S_stmt_or_dev: // stmt_or_dev value.move< ast::stmt > (std::move (that.value)); break; @@ -1229,6 +1236,10 @@ namespace xsk { namespace gsc { namespace iw7 { value.move< ast::stmt_default::ptr > (std::move (that.value)); break; + case symbol_kind::S_stmt_dev: // stmt_dev + value.move< ast::stmt_dev::ptr > (std::move (that.value)); + break; + case symbol_kind::S_stmt_dowhile: // stmt_dowhile value.move< ast::stmt_dowhile::ptr > (std::move (that.value)); break; @@ -1257,9 +1268,9 @@ namespace xsk { namespace gsc { namespace iw7 { value.move< ast::stmt_ifelse::ptr > (std::move (that.value)); break; - case symbol_kind::S_stmt_dev: // stmt_dev - case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list + case symbol_kind::S_stmt_or_dev_list: // stmt_or_dev_list + case symbol_kind::S_stmt_block: // stmt_block value.move< ast::stmt_list::ptr > (std::move (that.value)); break; @@ -1995,6 +2006,20 @@ namespace xsk { namespace gsc { namespace iw7 { {} #endif +#if 201103L <= YY_CPLUSPLUS + basic_symbol (typename Base::kind_type t, ast::stmt_dev::ptr&& v, location_type&& l) + : Base (t) + , value (std::move (v)) + , location (std::move (l)) + {} +#else + basic_symbol (typename Base::kind_type t, const ast::stmt_dev::ptr& v, const location_type& l) + : Base (t) + , value (v) + , location (l) + {} +#endif + #if 201103L <= YY_CPLUSPLUS basic_symbol (typename Base::kind_type t, ast::stmt_dowhile::ptr&& v, location_type&& l) : Base (t) @@ -2450,6 +2475,7 @@ switch (yykind) break; case symbol_kind::S_stmt: // stmt + case symbol_kind::S_stmt_or_dev: // stmt_or_dev value.template destroy< ast::stmt > (); break; @@ -2481,6 +2507,10 @@ switch (yykind) value.template destroy< ast::stmt_default::ptr > (); break; + case symbol_kind::S_stmt_dev: // stmt_dev + value.template destroy< ast::stmt_dev::ptr > (); + break; + case symbol_kind::S_stmt_dowhile: // stmt_dowhile value.template destroy< ast::stmt_dowhile::ptr > (); break; @@ -2509,9 +2539,9 @@ switch (yykind) value.template destroy< ast::stmt_ifelse::ptr > (); break; - case symbol_kind::S_stmt_dev: // stmt_dev - case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list + case symbol_kind::S_stmt_or_dev_list: // stmt_or_dev_list + case symbol_kind::S_stmt_block: // stmt_block value.template destroy< ast::stmt_list::ptr > (); break; @@ -4761,8 +4791,8 @@ switch (yykind) /// Constants. enum { - yylast_ = 2249, ///< Last index in yytable_. - yynnts_ = 80, ///< Number of nonterminal symbols. + yylast_ = 2262, ///< Last index in yytable_. + yynnts_ = 82, ///< Number of nonterminal symbols. yyfinal_ = 21 ///< Termination state number. }; @@ -4956,6 +4986,7 @@ switch (yykind) break; case symbol_kind::S_stmt: // stmt + case symbol_kind::S_stmt_or_dev: // stmt_or_dev value.copy< ast::stmt > (YY_MOVE (that.value)); break; @@ -4987,6 +5018,10 @@ switch (yykind) value.copy< ast::stmt_default::ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_stmt_dev: // stmt_dev + value.copy< ast::stmt_dev::ptr > (YY_MOVE (that.value)); + break; + case symbol_kind::S_stmt_dowhile: // stmt_dowhile value.copy< ast::stmt_dowhile::ptr > (YY_MOVE (that.value)); break; @@ -5015,9 +5050,9 @@ switch (yykind) value.copy< ast::stmt_ifelse::ptr > (YY_MOVE (that.value)); break; - case symbol_kind::S_stmt_dev: // stmt_dev - case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list + case symbol_kind::S_stmt_or_dev_list: // stmt_or_dev_list + case symbol_kind::S_stmt_block: // stmt_block value.copy< ast::stmt_list::ptr > (YY_MOVE (that.value)); break; @@ -5268,6 +5303,7 @@ switch (yykind) break; case symbol_kind::S_stmt: // stmt + case symbol_kind::S_stmt_or_dev: // stmt_or_dev value.move< ast::stmt > (YY_MOVE (s.value)); break; @@ -5299,6 +5335,10 @@ switch (yykind) value.move< ast::stmt_default::ptr > (YY_MOVE (s.value)); break; + case symbol_kind::S_stmt_dev: // stmt_dev + value.move< ast::stmt_dev::ptr > (YY_MOVE (s.value)); + break; + case symbol_kind::S_stmt_dowhile: // stmt_dowhile value.move< ast::stmt_dowhile::ptr > (YY_MOVE (s.value)); break; @@ -5327,9 +5367,9 @@ switch (yykind) value.move< ast::stmt_ifelse::ptr > (YY_MOVE (s.value)); break; - case symbol_kind::S_stmt_dev: // stmt_dev - case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list + case symbol_kind::S_stmt_or_dev_list: // stmt_or_dev_list + case symbol_kind::S_stmt_block: // stmt_block value.move< ast::stmt_list::ptr > (YY_MOVE (s.value)); break; @@ -5447,7 +5487,7 @@ switch (yykind) #line 13 "parser.ypp" } } } // xsk::gsc::iw7 -#line 5451 "parser.hpp" +#line 5491 "parser.hpp" diff --git a/src/iw7/xsk/resolver.cpp b/src/iw7/xsk/resolver.cpp index 05c47d44..8db0bc43 100644 --- a/src/iw7/xsk/resolver.cpp +++ b/src/iw7/xsk/resolver.cpp @@ -46,7 +46,7 @@ auto resolver::opcode_name(std::uint8_t id) -> std::string auto resolver::function_id(const std::string& name) -> std::uint16_t { - if(name.starts_with("_func_")) + if (name.starts_with("_func_")) { return std::stoul(name.substr(6), nullptr, 16); } @@ -75,7 +75,7 @@ auto resolver::function_name(std::uint16_t id) -> std::string auto resolver::method_id(const std::string& name) -> std::uint16_t { - if(name.starts_with("_meth_")) + if (name.starts_with("_meth_")) { return std::stoul(name.substr(6), nullptr, 16); } @@ -104,7 +104,7 @@ auto resolver::method_name(std::uint16_t id) -> std::string auto resolver::file_id(const std::string& name) -> std::uint32_t { - if(name.starts_with("_id_")) + if (name.starts_with("_id_")) { return std::stoul(name.substr(4), nullptr, 16); } @@ -133,7 +133,7 @@ auto resolver::file_name(std::uint32_t id) -> std::string auto resolver::token_id(const std::string& name) -> std::uint32_t { - if(name.starts_with("_id_")) + if (name.starts_with("_id_")) { return std::stoul(name.substr(4), nullptr, 16); } @@ -162,7 +162,7 @@ auto resolver::token_name(std::uint32_t id) -> std::string auto resolver::find_function(const std::string& name) -> bool { - if(name.starts_with("_func_")) return true; + if (name.starts_with("_func_")) return true; const auto itr = function_map_rev.find(name); @@ -176,7 +176,7 @@ auto resolver::find_function(const std::string& name) -> bool auto resolver::find_method(const std::string& name) -> bool { - if(name.starts_with("_meth_")) return true; + if (name.starts_with("_meth_")) return true; const auto itr = method_map_rev.find(name); @@ -190,7 +190,7 @@ auto resolver::find_method(const std::string& name) -> bool auto resolver::make_token(std::string_view str) -> std::string { - if(str.starts_with("_id_") || str.starts_with("_func_") || str.starts_with("_meth_")) + if (str.starts_with("_id_") || str.starts_with("_func_") || str.starts_with("_meth_")) { return std::string(str); } @@ -213,7 +213,7 @@ auto resolver::file_data(const std::string& name) -> std::tuplefirst ,reinterpret_cast(itr->second.data()), itr->second.size() }; } @@ -222,7 +222,7 @@ auto resolver::file_data(const std::string& name) -> std::tuplefirst, reinterpret_cast(res.first->second.data()), res.first->second.size() }; } @@ -2726,7 +2726,7 @@ struct __init__ __init__() { static bool init = false; - if(init) return; + if (init) return; init = true; opcode_map.reserve(opcode_list.size()); @@ -2740,31 +2740,31 @@ struct __init__ token_map.reserve(token_list.size()); token_map_rev.reserve(token_list.size()); - for(const auto& entry : opcode_list) + for (const auto& entry : opcode_list) { opcode_map.insert({ entry.first, entry.second }); opcode_map_rev.insert({ entry.second, entry.first }); } - for(const auto& entry : function_list) + for (const auto& entry : function_list) { function_map.insert({ entry.first, entry.second }); function_map_rev.insert({ entry.second, entry.first }); } - for(const auto& entry : method_list) + for (const auto& entry : method_list) { method_map.insert({ entry.first, entry.second }); method_map_rev.insert({ entry.second, entry.first }); } - for(const auto& entry : file_list) + for (const auto& entry : file_list) { file_map.insert({ entry.first, entry.second }); file_map_rev.insert({ entry.second, entry.first }); } - for(const auto& entry : token_list) + for (const auto& entry : token_list) { token_map.insert({ entry.first, entry.second }); token_map_rev.insert({ entry.second, entry.first }); diff --git a/src/iw8/xsk/assembler.cpp b/src/iw8/xsk/assembler.cpp index f0e9e173..138f2e7f 100644 --- a/src/iw8/xsk/assembler.cpp +++ b/src/iw8/xsk/assembler.cpp @@ -639,4 +639,4 @@ auto assembler::resolve_label(const std::string& name) -> std::int32_t throw asm_error("Couldn't resolve label address of '" + name + "'!"); } -} // namespace xsk::gsc::iw8 +} // namespace xsk::gsc::iw8 diff --git a/src/iw8/xsk/compiler.cpp b/src/iw8/xsk/compiler.cpp index ae6e303a..995a4b7f 100644 --- a/src/iw8/xsk/compiler.cpp +++ b/src/iw8/xsk/compiler.cpp @@ -154,7 +154,7 @@ void compiler::emit_declaration(const ast::decl& decl) void compiler::emit_decl_usingtree(const ast::decl_usingtree::ptr& animtree) { - if(developer_thread_) + if (developer_thread_) throw comp_error(animtree->loc(), "cannot put #using_animtree inside /# ... #/ comment"); animtrees_.push_back({ animtree->name->value, false }); @@ -197,6 +197,9 @@ void compiler::emit_stmt(const ast::stmt& stmt, const block::ptr& blk, bool last case ast::kind::stmt_list: emit_stmt_list(stmt.as_list, blk, last); break; + case ast::kind::stmt_dev: + emit_stmt_dev(stmt.as_dev, blk, last); + break; case ast::kind::stmt_expr: emit_stmt_expr(stmt.as_expr, blk); break; @@ -286,6 +289,11 @@ void compiler::emit_stmt_list(const ast::stmt_list::ptr& stmt, const block::ptr& } } +void compiler::emit_stmt_dev(const ast::stmt_dev::ptr& stmt, const block::ptr& blk, bool last) +{ + emit_stmt_list(stmt->list, blk, last); +} + void compiler::emit_stmt_expr(const ast::stmt_expr::ptr& stmt, const block::ptr& blk) { switch (stmt->expr.kind()) @@ -582,6 +590,8 @@ void compiler::emit_stmt_dowhile(const ast::stmt_dowhile::ptr& stmt, const block emit_stmt(stmt->stmt, stmt->blk, false); + insert_label(continue_loc); + bool const_cond = is_constant_condition(stmt->test); if (!const_cond) @@ -590,7 +600,6 @@ void compiler::emit_stmt_dowhile(const ast::stmt_dowhile::ptr& stmt, const block emit_opcode(opcode::OP_JumpOnFalse, break_loc); } - insert_label(continue_loc); emit_opcode(opcode::OP_jumpback, begin_loc); insert_label(break_loc); @@ -714,7 +723,7 @@ void compiler::emit_stmt_foreach(const ast::stmt_foreach::ptr& stmt, const block auto begin_loc = insert_label(); emit_expr_variable(stmt->key_expr, blk); - emit_opcode(opcode::OP_CallBuiltin1, "isdefined"); + emit_opcode(opcode::OP_IsDefined); emit_opcode(opcode::OP_JumpOnFalse, break_loc); can_break_ = true; @@ -1017,9 +1026,6 @@ void compiler::emit_expr(const ast::expr& expr, const block::ptr& blk) case ast::kind::expr_string: emit_expr_string(expr.as_string); break; - case ast::kind::expr_color: - emit_expr_color(expr.as_color); - break; case ast::kind::expr_vector: emit_expr_vector(expr.as_vector, blk); break; @@ -2014,30 +2020,6 @@ void compiler::emit_expr_string(const ast::expr_string::ptr& expr) emit_opcode(opcode::OP_GetString, expr->value); } -void compiler::emit_expr_color(const ast::expr_color::ptr& expr) -{ - std::vector data; - std::string x, y, z; - - if (expr->value.size() == 3) - { - x = "0x" + expr->value.substr(0, 1) + expr->value.substr(0, 1); - y = "0x" + expr->value.substr(1, 1) + expr->value.substr(1, 1); - z = "0x" + expr->value.substr(2, 1) + expr->value.substr(2, 1); - } - else - { - x = "0x" + expr->value.substr(0, 2); - y = "0x" + expr->value.substr(2, 2); - z = "0x" + expr->value.substr(4, 2); - } - - data.push_back(utils::string::hex_to_dec(x.data())); - data.push_back(utils::string::hex_to_dec(y.data())); - data.push_back(utils::string::hex_to_dec(z.data())); - emit_opcode(opcode::OP_GetVector, data); -} - void compiler::emit_expr_float(const ast::expr_float::ptr& expr) { emit_opcode(opcode::OP_GetFloat, expr->value); @@ -2162,6 +2144,9 @@ void compiler::process_stmt(const ast::stmt& stmt, const block::ptr& blk) case ast::kind::stmt_list: process_stmt_list(stmt.as_list, blk); break; + case ast::kind::stmt_dev: + process_stmt_dev(stmt.as_dev, blk); + break; case ast::kind::stmt_expr: process_stmt_expr(stmt.as_expr, blk); break; @@ -2227,6 +2212,11 @@ void compiler::process_stmt_list(const ast::stmt_list::ptr& stmt, const block::p } } +void compiler::process_stmt_dev(const ast::stmt_dev::ptr& stmt, const block::ptr& blk) +{ + process_stmt_list(stmt->list, blk); +} + void compiler::process_stmt_expr(const ast::stmt_expr::ptr& stmt, const block::ptr& blk) { switch (stmt->expr.kind()) diff --git a/src/iw8/xsk/compiler.hpp b/src/iw8/xsk/compiler.hpp index 42f3a781..401b9dbe 100644 --- a/src/iw8/xsk/compiler.hpp +++ b/src/iw8/xsk/compiler.hpp @@ -48,6 +48,7 @@ private: void emit_decl_thread(const ast::decl_thread::ptr& thread); void emit_stmt(const ast::stmt& stmt, const block::ptr& blk, bool last); void emit_stmt_list(const ast::stmt_list::ptr& stmt, const block::ptr& blk, bool last); + void emit_stmt_dev(const ast::stmt_dev::ptr& stmt, const block::ptr& blk, bool last); void emit_stmt_expr(const ast::stmt_expr::ptr& stmt, const block::ptr& blk); void emit_stmt_call(const ast::stmt_call::ptr& stmt, const block::ptr& blk); void emit_stmt_assign(const ast::stmt_assign::ptr& stmt, const block::ptr& blk); @@ -112,7 +113,6 @@ private: void emit_expr_animtree(const ast::expr_animtree::ptr& expr); void emit_expr_istring(const ast::expr_istring::ptr& expr); void emit_expr_string(const ast::expr_string::ptr& expr); - void emit_expr_color(const ast::expr_color::ptr& expr); void emit_expr_float(const ast::expr_float::ptr& expr); void emit_expr_integer(const ast::expr_integer::ptr& expr); void emit_expr_false(const ast::expr_false::ptr& expr); @@ -125,6 +125,7 @@ private: void process_thread(const ast::decl_thread::ptr& decl, const block::ptr& blk); void process_stmt(const ast::stmt& stmt, const block::ptr& blk); void process_stmt_list(const ast::stmt_list::ptr& stmt, const block::ptr& blk); + void process_stmt_dev(const ast::stmt_dev::ptr& stmt, const block::ptr& blk); void process_stmt_expr(const ast::stmt_expr::ptr& stmt, const block::ptr& blk); void process_stmt_assign(const ast::stmt_assign::ptr& stmt, const block::ptr& blk); void process_stmt_waittill(const ast::stmt_waittill::ptr& stmt, const block::ptr& blk); diff --git a/src/iw8/xsk/decompiler.cpp b/src/iw8/xsk/decompiler.cpp index 695dc6d5..79c2e8ea 100644 --- a/src/iw8/xsk/decompiler.cpp +++ b/src/iw8/xsk/decompiler.cpp @@ -75,7 +75,7 @@ void decompiler::decompile_function(const function::ptr& func) // hotfix empty else block at func end if (stmt->list.size() > 0 && stmt->list.back() == ast::kind::asm_jump) { - if(stmt->list.back().as_jump->value == blk.loc_end) + if (stmt->list.back().as_jump->value == blk.loc_end) stmt->list.pop_back(); } @@ -255,7 +255,7 @@ void decompiler::decompile_instruction(const instruction::ptr& inst) auto name = std::make_unique(loc, inst->data[1]); auto node = std::make_unique(loc, std::move(path), std::move(name)); stack_.push(std::move(node)); - }; + } break; case opcode::OP_CreateLocalVariable: { @@ -1657,7 +1657,7 @@ void decompiler::decompile_instruction(const instruction::ptr& inst) { auto expr = std::make_unique(loc, inst->data[0]); func_->stmt->list.push_back(ast::stmt(std::move(expr))); - if(stack_.size() != 0) tern_labels_.push_back(inst->data[0]); + if (stack_.size() != 0) tern_labels_.push_back(inst->data[0]); } break; case opcode::OP_jumpback: @@ -1887,7 +1887,7 @@ void decompiler::decompile_ifelses(const ast::stmt_list::ptr& stmt) { auto& entry = stmt->list.at(i); - if(entry == ast::kind::asm_jump_cond) + if (entry == ast::kind::asm_jump_cond) { auto j = (entry.as_cond->value == blocks_.back().loc_end) ? (stmt->list.size() - 1) : (find_location_index(stmt, entry.as_cond->value) - 1); auto last_loc = blocks_.back().loc_end; @@ -2166,7 +2166,7 @@ void decompiler::decompile_loop(const ast::stmt_list::ptr& block, std::uint32_t { auto ref = block->list.at(start).loc().label(); - if(!find_location_reference(block, 0, start, ref)) + if (!find_location_reference(block, 0, start, ref)) { decompile_foreach(block, start, end); return; @@ -2175,29 +2175,29 @@ void decompiler::decompile_loop(const ast::stmt_list::ptr& block, std::uint32_t } } - if(start > 0) // while at func start + if (start > 0) // while at func start { auto index = 1; - while(block->list.at(start - index) == ast::kind::asm_create) + while (block->list.at(start - index) == ast::kind::asm_create) { - if(start - index > 0) + if (start - index > 0) index++; else break; } - if(block->list.at(start - index) == ast::kind::stmt_assign) + if (block->list.at(start - index) == ast::kind::stmt_assign) { auto ref = block->list.at(end).loc().label(); auto ref2 = block->list.at(start).loc().label(); - if(find_location_reference(block, start, end, ref)) + if (find_location_reference(block, start, end, ref)) { // continue is at jumpback, not post-expr decompile_while(block, start, end); return; } - else if(find_location_reference(block, 0, start, ref2)) + else if (find_location_reference(block, 0, start, ref2)) { // begin is at condition, not pre-expr decompile_while(block, start, end); @@ -2437,7 +2437,7 @@ void decompiler::decompile_switch(const ast::stmt_list::ptr& stmt, std::uint32_t auto list = std::make_unique(loc); list->is_case = true; auto def_stmt = ast::stmt(std::make_unique(loc_pos, std::move(list))); - while(stmt->list.at(loc_idx) == ast::kind::stmt_case) + while (stmt->list.at(loc_idx) == ast::kind::stmt_case) loc_idx++; stmt->list.insert(stmt->list.begin() + loc_idx, std::move(def_stmt)); idx += 2; @@ -2538,7 +2538,7 @@ auto decompiler::find_location_index(const ast::stmt_list::ptr& stmt, const std: for (auto& entry : stmt->list) { - if(entry.loc().label() == location) + if (entry.loc().label() == location) return index; index++; @@ -2804,7 +2804,7 @@ void decompiler::process_stmt_ifelse(const ast::stmt_ifelse::ptr& stmt, const bl { abort = stmt->blk_if->abort; - if(abort == abort_t::abort_none) + if (abort == abort_t::abort_none) childs.push_back(stmt->blk_if.get()); } diff --git a/src/iw8/xsk/lexer.cpp b/src/iw8/xsk/lexer.cpp index 68b60fea..1d9ddd3c 100644 --- a/src/iw8/xsk/lexer.cpp +++ b/src/iw8/xsk/lexer.cpp @@ -75,12 +75,12 @@ buffer::buffer() : length(0) buffer::~buffer() { - if(data) std::free(data); + if (data) std::free(data); } bool buffer::push(char c) { - if(length >= max_buf_size) + if (length >= max_buf_size) return false; data[length++] = c; @@ -92,7 +92,7 @@ reader::reader() : state(reader::end), buffer_pos(0), bytes_remaining(0), void reader::init(const char* data, size_t size) { - if(data && size) + if (data && size) { state = reader::ok; buffer_pos = data; @@ -114,7 +114,7 @@ void reader::advance() { ++buffer_pos; - if(bytes_remaining-- == 1) + if (bytes_remaining-- == 1) { state = reader::end; bytes_remaining = 0; @@ -564,7 +564,7 @@ lex_name: advance(); } - if(state_ == state::field) + if (state_ == state::field) { if (path) throw comp_error(loc_, "invalid field token '\\'"); diff --git a/src/iw8/xsk/parser.cpp b/src/iw8/xsk/parser.cpp index 211fdf84..6e325802 100644 --- a/src/iw8/xsk/parser.cpp +++ b/src/iw8/xsk/parser.cpp @@ -390,6 +390,7 @@ namespace xsk { namespace gsc { namespace iw8 { break; case symbol_kind::S_stmt: // stmt + case symbol_kind::S_stmt_or_dev: // stmt_or_dev value.YY_MOVE_OR_COPY< ast::stmt > (YY_MOVE (that.value)); break; @@ -421,6 +422,10 @@ namespace xsk { namespace gsc { namespace iw8 { value.YY_MOVE_OR_COPY< ast::stmt_default::ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_stmt_dev: // stmt_dev + value.YY_MOVE_OR_COPY< ast::stmt_dev::ptr > (YY_MOVE (that.value)); + break; + case symbol_kind::S_stmt_dowhile: // stmt_dowhile value.YY_MOVE_OR_COPY< ast::stmt_dowhile::ptr > (YY_MOVE (that.value)); break; @@ -449,9 +454,9 @@ namespace xsk { namespace gsc { namespace iw8 { value.YY_MOVE_OR_COPY< ast::stmt_ifelse::ptr > (YY_MOVE (that.value)); break; - case symbol_kind::S_stmt_dev: // stmt_dev - case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list + case symbol_kind::S_stmt_or_dev_list: // stmt_or_dev_list + case symbol_kind::S_stmt_block: // stmt_block value.YY_MOVE_OR_COPY< ast::stmt_list::ptr > (YY_MOVE (that.value)); break; @@ -700,6 +705,7 @@ namespace xsk { namespace gsc { namespace iw8 { break; case symbol_kind::S_stmt: // stmt + case symbol_kind::S_stmt_or_dev: // stmt_or_dev value.move< ast::stmt > (YY_MOVE (that.value)); break; @@ -731,6 +737,10 @@ namespace xsk { namespace gsc { namespace iw8 { value.move< ast::stmt_default::ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_stmt_dev: // stmt_dev + value.move< ast::stmt_dev::ptr > (YY_MOVE (that.value)); + break; + case symbol_kind::S_stmt_dowhile: // stmt_dowhile value.move< ast::stmt_dowhile::ptr > (YY_MOVE (that.value)); break; @@ -759,9 +769,9 @@ namespace xsk { namespace gsc { namespace iw8 { value.move< ast::stmt_ifelse::ptr > (YY_MOVE (that.value)); break; - case symbol_kind::S_stmt_dev: // stmt_dev - case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list + case symbol_kind::S_stmt_or_dev_list: // stmt_or_dev_list + case symbol_kind::S_stmt_block: // stmt_block value.move< ast::stmt_list::ptr > (YY_MOVE (that.value)); break; @@ -1010,6 +1020,7 @@ namespace xsk { namespace gsc { namespace iw8 { break; case symbol_kind::S_stmt: // stmt + case symbol_kind::S_stmt_or_dev: // stmt_or_dev value.copy< ast::stmt > (that.value); break; @@ -1041,6 +1052,10 @@ namespace xsk { namespace gsc { namespace iw8 { value.copy< ast::stmt_default::ptr > (that.value); break; + case symbol_kind::S_stmt_dev: // stmt_dev + value.copy< ast::stmt_dev::ptr > (that.value); + break; + case symbol_kind::S_stmt_dowhile: // stmt_dowhile value.copy< ast::stmt_dowhile::ptr > (that.value); break; @@ -1069,9 +1084,9 @@ namespace xsk { namespace gsc { namespace iw8 { value.copy< ast::stmt_ifelse::ptr > (that.value); break; - case symbol_kind::S_stmt_dev: // stmt_dev - case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list + case symbol_kind::S_stmt_or_dev_list: // stmt_or_dev_list + case symbol_kind::S_stmt_block: // stmt_block value.copy< ast::stmt_list::ptr > (that.value); break; @@ -1319,6 +1334,7 @@ namespace xsk { namespace gsc { namespace iw8 { break; case symbol_kind::S_stmt: // stmt + case symbol_kind::S_stmt_or_dev: // stmt_or_dev value.move< ast::stmt > (that.value); break; @@ -1350,6 +1366,10 @@ namespace xsk { namespace gsc { namespace iw8 { value.move< ast::stmt_default::ptr > (that.value); break; + case symbol_kind::S_stmt_dev: // stmt_dev + value.move< ast::stmt_dev::ptr > (that.value); + break; + case symbol_kind::S_stmt_dowhile: // stmt_dowhile value.move< ast::stmt_dowhile::ptr > (that.value); break; @@ -1378,9 +1398,9 @@ namespace xsk { namespace gsc { namespace iw8 { value.move< ast::stmt_ifelse::ptr > (that.value); break; - case symbol_kind::S_stmt_dev: // stmt_dev - case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list + case symbol_kind::S_stmt_or_dev_list: // stmt_or_dev_list + case symbol_kind::S_stmt_block: // stmt_block value.move< ast::stmt_list::ptr > (that.value); break; @@ -1883,6 +1903,7 @@ namespace xsk { namespace gsc { namespace iw8 { break; case symbol_kind::S_stmt: // stmt + case symbol_kind::S_stmt_or_dev: // stmt_or_dev yylhs.value.emplace< ast::stmt > (); break; @@ -1914,6 +1935,10 @@ namespace xsk { namespace gsc { namespace iw8 { yylhs.value.emplace< ast::stmt_default::ptr > (); break; + case symbol_kind::S_stmt_dev: // stmt_dev + yylhs.value.emplace< ast::stmt_dev::ptr > (); + break; + case symbol_kind::S_stmt_dowhile: // stmt_dowhile yylhs.value.emplace< ast::stmt_dowhile::ptr > (); break; @@ -1942,9 +1967,9 @@ namespace xsk { namespace gsc { namespace iw8 { yylhs.value.emplace< ast::stmt_ifelse::ptr > (); break; - case symbol_kind::S_stmt_dev: // stmt_dev - case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list + case symbol_kind::S_stmt_or_dev_list: // stmt_or_dev_list + case symbol_kind::S_stmt_block: // stmt_block yylhs.value.emplace< ast::stmt_list::ptr > (); break; @@ -2024,1333 +2049,1351 @@ namespace xsk { namespace gsc { namespace iw8 { switch (yyn) { case 2: // root: program -#line 258 "parser.ypp" +#line 260 "parser.ypp" { ast = std::move(yystack_[0].value.as < ast::program::ptr > ()); } -#line 2030 "parser.cpp" +#line 2055 "parser.cpp" break; case 3: // root: %empty -#line 259 "parser.ypp" +#line 261 "parser.ypp" { ast = std::make_unique(yylhs.location); } -#line 2036 "parser.cpp" +#line 2061 "parser.cpp" break; case 4: // program: program inline -#line 264 "parser.ypp" +#line 266 "parser.ypp" { yylhs.value.as < ast::program::ptr > () = std::move(yystack_[1].value.as < ast::program::ptr > ()); } -#line 2042 "parser.cpp" +#line 2067 "parser.cpp" break; case 5: // program: program include -#line 266 "parser.ypp" +#line 268 "parser.ypp" { yylhs.value.as < ast::program::ptr > () = std::move(yystack_[1].value.as < ast::program::ptr > ()); yylhs.value.as < ast::program::ptr > ()->includes.push_back(std::move(yystack_[0].value.as < ast::include::ptr > ())); } -#line 2048 "parser.cpp" +#line 2073 "parser.cpp" break; case 6: // program: program declaration -#line 268 "parser.ypp" +#line 270 "parser.ypp" { yylhs.value.as < ast::program::ptr > () = std::move(yystack_[1].value.as < ast::program::ptr > ()); yylhs.value.as < ast::program::ptr > ()->declarations.push_back(std::move(yystack_[0].value.as < ast::decl > ())); } -#line 2054 "parser.cpp" +#line 2079 "parser.cpp" break; case 7: // program: inline -#line 270 "parser.ypp" +#line 272 "parser.ypp" { yylhs.value.as < ast::program::ptr > () = std::make_unique(yylhs.location); } -#line 2060 "parser.cpp" +#line 2085 "parser.cpp" break; case 8: // program: include -#line 272 "parser.ypp" +#line 274 "parser.ypp" { yylhs.value.as < ast::program::ptr > () = std::make_unique(yylhs.location); yylhs.value.as < ast::program::ptr > ()->includes.push_back(std::move(yystack_[0].value.as < ast::include::ptr > ())); } -#line 2066 "parser.cpp" +#line 2091 "parser.cpp" break; case 9: // program: declaration -#line 274 "parser.ypp" +#line 276 "parser.ypp" { yylhs.value.as < ast::program::ptr > () = std::make_unique(yylhs.location); yylhs.value.as < ast::program::ptr > ()->declarations.push_back(std::move(yystack_[0].value.as < ast::decl > ())); } -#line 2072 "parser.cpp" +#line 2097 "parser.cpp" break; case 10: // inline: "#inline" expr_path ";" -#line 278 "parser.ypp" +#line 280 "parser.ypp" { lexer.push_header(yystack_[1].value.as < ast::expr_path::ptr > ()->value); } -#line 2078 "parser.cpp" +#line 2103 "parser.cpp" break; case 11: // include: "#include" expr_path ";" -#line 283 "parser.ypp" +#line 285 "parser.ypp" { yylhs.value.as < ast::include::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr_path::ptr > ())); } -#line 2084 "parser.cpp" +#line 2109 "parser.cpp" break; case 12: // declaration: "/#" -#line 287 "parser.ypp" +#line 289 "parser.ypp" { yylhs.value.as < ast::decl > ().as_dev_begin = std::make_unique(yylhs.location); } -#line 2090 "parser.cpp" +#line 2115 "parser.cpp" break; case 13: // declaration: "#/" -#line 288 "parser.ypp" +#line 290 "parser.ypp" { yylhs.value.as < ast::decl > ().as_dev_end = std::make_unique(yylhs.location); } -#line 2096 "parser.cpp" +#line 2121 "parser.cpp" break; case 14: // declaration: decl_usingtree -#line 289 "parser.ypp" +#line 291 "parser.ypp" { yylhs.value.as < ast::decl > ().as_usingtree = std::move(yystack_[0].value.as < ast::decl_usingtree::ptr > ()); } -#line 2102 "parser.cpp" +#line 2127 "parser.cpp" break; case 15: // declaration: decl_constant -#line 290 "parser.ypp" +#line 292 "parser.ypp" { yylhs.value.as < ast::decl > ().as_constant = std::move(yystack_[0].value.as < ast::decl_constant::ptr > ()); } -#line 2108 "parser.cpp" +#line 2133 "parser.cpp" break; case 16: // declaration: decl_thread -#line 291 "parser.ypp" +#line 293 "parser.ypp" { yylhs.value.as < ast::decl > ().as_thread = std::move(yystack_[0].value.as < ast::decl_thread::ptr > ()); } -#line 2114 "parser.cpp" +#line 2139 "parser.cpp" break; case 17: // decl_usingtree: "#using_animtree" "(" expr_string ")" ";" -#line 296 "parser.ypp" +#line 298 "parser.ypp" { lexer.ban_header(yylhs.location); yylhs.value.as < ast::decl_usingtree::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr_string::ptr > ())); } -#line 2120 "parser.cpp" +#line 2145 "parser.cpp" break; case 18: // decl_constant: expr_identifier "=" expr ";" -#line 301 "parser.ypp" +#line 303 "parser.ypp" { yylhs.value.as < ast::decl_constant::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr > ())); } -#line 2126 "parser.cpp" +#line 2151 "parser.cpp" break; case 19: // decl_thread: expr_identifier "(" expr_parameters ")" stmt_block -#line 306 "parser.ypp" +#line 308 "parser.ypp" { lexer.ban_header(yylhs.location); yylhs.value.as < ast::decl_thread::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[2].value.as < ast::expr_parameters::ptr > ()), std::move(yystack_[0].value.as < ast::stmt_list::ptr > ())); } -#line 2132 "parser.cpp" +#line 2157 "parser.cpp" break; - case 20: // stmt: stmt_dev -#line 310 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_list = std::move(yystack_[0].value.as < ast::stmt_list::ptr > ()); } -#line 2138 "parser.cpp" - break; - - case 21: // stmt: stmt_block -#line 311 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_list = std::move(yystack_[0].value.as < ast::stmt_list::ptr > ()); } -#line 2144 "parser.cpp" - break; - - case 22: // stmt: stmt_call + case 20: // stmt: stmt_block #line 312 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_call = std::move(yystack_[0].value.as < ast::stmt_call::ptr > ()); } -#line 2150 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_list = std::move(yystack_[0].value.as < ast::stmt_list::ptr > ()); } +#line 2163 "parser.cpp" break; - case 23: // stmt: stmt_assign + case 21: // stmt: stmt_call #line 313 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_assign = std::move(yystack_[0].value.as < ast::stmt_assign::ptr > ()); } -#line 2156 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_call = std::move(yystack_[0].value.as < ast::stmt_call::ptr > ()); } +#line 2169 "parser.cpp" break; - case 24: // stmt: stmt_endon + case 22: // stmt: stmt_assign #line 314 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_endon = std::move(yystack_[0].value.as < ast::stmt_endon::ptr > ()); } -#line 2162 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_assign = std::move(yystack_[0].value.as < ast::stmt_assign::ptr > ()); } +#line 2175 "parser.cpp" break; - case 25: // stmt: stmt_notify + case 23: // stmt: stmt_endon #line 315 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_notify = std::move(yystack_[0].value.as < ast::stmt_notify::ptr > ()); } -#line 2168 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_endon = std::move(yystack_[0].value.as < ast::stmt_endon::ptr > ()); } +#line 2181 "parser.cpp" break; - case 26: // stmt: stmt_wait + case 24: // stmt: stmt_notify #line 316 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_wait = std::move(yystack_[0].value.as < ast::stmt_wait::ptr > ()); } -#line 2174 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_notify = std::move(yystack_[0].value.as < ast::stmt_notify::ptr > ()); } +#line 2187 "parser.cpp" break; - case 27: // stmt: stmt_waittill + case 25: // stmt: stmt_wait #line 317 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_waittill = std::move(yystack_[0].value.as < ast::stmt_waittill::ptr > ()); } -#line 2180 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_wait = std::move(yystack_[0].value.as < ast::stmt_wait::ptr > ()); } +#line 2193 "parser.cpp" break; - case 28: // stmt: stmt_waittillmatch + case 26: // stmt: stmt_waittill #line 318 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_waittillmatch = std::move(yystack_[0].value.as < ast::stmt_waittillmatch::ptr > ()); } -#line 2186 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_waittill = std::move(yystack_[0].value.as < ast::stmt_waittill::ptr > ()); } +#line 2199 "parser.cpp" break; - case 29: // stmt: stmt_waittillframeend + case 27: // stmt: stmt_waittillmatch #line 319 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_waittillframeend = std::move(yystack_[0].value.as < ast::stmt_waittillframeend::ptr > ()); } -#line 2192 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_waittillmatch = std::move(yystack_[0].value.as < ast::stmt_waittillmatch::ptr > ()); } +#line 2205 "parser.cpp" break; - case 30: // stmt: stmt_waitframe + case 28: // stmt: stmt_waittillframeend #line 320 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_waitframe = std::move(yystack_[0].value.as < ast::stmt_waitframe::ptr > ()); } -#line 2198 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_waittillframeend = std::move(yystack_[0].value.as < ast::stmt_waittillframeend::ptr > ()); } +#line 2211 "parser.cpp" break; - case 31: // stmt: stmt_if + case 29: // stmt: stmt_waitframe #line 321 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_if = std::move(yystack_[0].value.as < ast::stmt_if::ptr > ()); } -#line 2204 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_waitframe = std::move(yystack_[0].value.as < ast::stmt_waitframe::ptr > ()); } +#line 2217 "parser.cpp" break; - case 32: // stmt: stmt_ifelse + case 30: // stmt: stmt_if #line 322 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_ifelse = std::move(yystack_[0].value.as < ast::stmt_ifelse::ptr > ()); } -#line 2210 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_if = std::move(yystack_[0].value.as < ast::stmt_if::ptr > ()); } +#line 2223 "parser.cpp" break; - case 33: // stmt: stmt_while + case 31: // stmt: stmt_ifelse #line 323 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_while = std::move(yystack_[0].value.as < ast::stmt_while::ptr > ()); } -#line 2216 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_ifelse = std::move(yystack_[0].value.as < ast::stmt_ifelse::ptr > ()); } +#line 2229 "parser.cpp" break; - case 34: // stmt: stmt_dowhile + case 32: // stmt: stmt_while #line 324 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_dowhile = std::move(yystack_[0].value.as < ast::stmt_dowhile::ptr > ()); } -#line 2222 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_while = std::move(yystack_[0].value.as < ast::stmt_while::ptr > ()); } +#line 2235 "parser.cpp" break; - case 35: // stmt: stmt_for + case 33: // stmt: stmt_dowhile #line 325 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_for = std::move(yystack_[0].value.as < ast::stmt_for::ptr > ()); } -#line 2228 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_dowhile = std::move(yystack_[0].value.as < ast::stmt_dowhile::ptr > ()); } +#line 2241 "parser.cpp" break; - case 36: // stmt: stmt_foreach + case 34: // stmt: stmt_for #line 326 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_foreach = std::move(yystack_[0].value.as < ast::stmt_foreach::ptr > ()); } -#line 2234 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_for = std::move(yystack_[0].value.as < ast::stmt_for::ptr > ()); } +#line 2247 "parser.cpp" break; - case 37: // stmt: stmt_switch + case 35: // stmt: stmt_foreach #line 327 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_switch = std::move(yystack_[0].value.as < ast::stmt_switch::ptr > ()); } -#line 2240 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_foreach = std::move(yystack_[0].value.as < ast::stmt_foreach::ptr > ()); } +#line 2253 "parser.cpp" break; - case 38: // stmt: stmt_case + case 36: // stmt: stmt_switch #line 328 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_case = std::move(yystack_[0].value.as < ast::stmt_case::ptr > ()); } -#line 2246 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_switch = std::move(yystack_[0].value.as < ast::stmt_switch::ptr > ()); } +#line 2259 "parser.cpp" break; - case 39: // stmt: stmt_default + case 37: // stmt: stmt_case #line 329 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_default = std::move(yystack_[0].value.as < ast::stmt_default::ptr > ()); } -#line 2252 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_case = std::move(yystack_[0].value.as < ast::stmt_case::ptr > ()); } +#line 2265 "parser.cpp" break; - case 40: // stmt: stmt_break + case 38: // stmt: stmt_default #line 330 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_break = std::move(yystack_[0].value.as < ast::stmt_break::ptr > ()); } -#line 2258 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_default = std::move(yystack_[0].value.as < ast::stmt_default::ptr > ()); } +#line 2271 "parser.cpp" break; - case 41: // stmt: stmt_continue + case 39: // stmt: stmt_break #line 331 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_continue = std::move(yystack_[0].value.as < ast::stmt_continue::ptr > ()); } -#line 2264 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_break = std::move(yystack_[0].value.as < ast::stmt_break::ptr > ()); } +#line 2277 "parser.cpp" break; - case 42: // stmt: stmt_return + case 40: // stmt: stmt_continue #line 332 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_return = std::move(yystack_[0].value.as < ast::stmt_return::ptr > ()); } -#line 2270 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_continue = std::move(yystack_[0].value.as < ast::stmt_continue::ptr > ()); } +#line 2283 "parser.cpp" break; - case 43: // stmt: stmt_breakpoint + case 41: // stmt: stmt_return #line 333 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_breakpoint = std::move(yystack_[0].value.as < ast::stmt_breakpoint::ptr > ()); } -#line 2276 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_return = std::move(yystack_[0].value.as < ast::stmt_return::ptr > ()); } +#line 2289 "parser.cpp" break; - case 44: // stmt: stmt_prof_begin + case 42: // stmt: stmt_breakpoint #line 334 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_prof_begin = std::move(yystack_[0].value.as < ast::stmt_prof_begin::ptr > ()); } -#line 2282 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_breakpoint = std::move(yystack_[0].value.as < ast::stmt_breakpoint::ptr > ()); } +#line 2295 "parser.cpp" break; - case 45: // stmt: stmt_prof_end + case 43: // stmt: stmt_prof_begin #line 335 "parser.ypp" + { yylhs.value.as < ast::stmt > ().as_prof_begin = std::move(yystack_[0].value.as < ast::stmt_prof_begin::ptr > ()); } +#line 2301 "parser.cpp" + break; + + case 44: // stmt: stmt_prof_end +#line 336 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_prof_end = std::move(yystack_[0].value.as < ast::stmt_prof_end::ptr > ()); } -#line 2288 "parser.cpp" +#line 2307 "parser.cpp" break; - case 46: // stmt_dev: "/#" stmt_list "#/" -#line 339 "parser.ypp" - { yylhs.value.as < ast::stmt_list::ptr > () = std::move(yystack_[1].value.as < ast::stmt_list::ptr > ()); } -#line 2294 "parser.cpp" - break; - - case 47: // stmt_dev: "/#" "#/" + case 45: // stmt_or_dev: stmt #line 340 "parser.ypp" - { yylhs.value.as < ast::stmt_list::ptr > () = std::make_unique(yylhs.location); } -#line 2300 "parser.cpp" + { yylhs.value.as < ast::stmt > () = std::move(yystack_[0].value.as < ast::stmt > ()); } +#line 2313 "parser.cpp" break; - case 48: // stmt_block: "{" stmt_list "}" -#line 344 "parser.ypp" - { yylhs.value.as < ast::stmt_list::ptr > () = std::move(yystack_[1].value.as < ast::stmt_list::ptr > ()); } -#line 2306 "parser.cpp" + case 46: // stmt_or_dev: stmt_dev +#line 341 "parser.ypp" + { yylhs.value.as < ast::stmt > ().as_dev = std::move(yystack_[0].value.as < ast::stmt_dev::ptr > ()); } +#line 2319 "parser.cpp" break; - case 49: // stmt_block: "{" "}" -#line 345 "parser.ypp" - { yylhs.value.as < ast::stmt_list::ptr > () = std::make_unique(yylhs.location); } -#line 2312 "parser.cpp" - break; - - case 50: // stmt_list: stmt_list stmt -#line 350 "parser.ypp" + case 47: // stmt_list: stmt_list stmt +#line 346 "parser.ypp" { yylhs.value.as < ast::stmt_list::ptr > () = std::move(yystack_[1].value.as < ast::stmt_list::ptr > ()); yylhs.value.as < ast::stmt_list::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2318 "parser.cpp" +#line 2325 "parser.cpp" break; - case 51: // stmt_list: stmt -#line 352 "parser.ypp" + case 48: // stmt_list: stmt +#line 348 "parser.ypp" { yylhs.value.as < ast::stmt_list::ptr > () = std::make_unique(yylhs.location); yylhs.value.as < ast::stmt_list::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2324 "parser.cpp" +#line 2331 "parser.cpp" break; - case 52: // stmt_expr: expr_assign -#line 357 "parser.ypp" - { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2330 "parser.cpp" + case 49: // stmt_or_dev_list: stmt_or_dev_list stmt_or_dev +#line 353 "parser.ypp" + { yylhs.value.as < ast::stmt_list::ptr > () = std::move(yystack_[1].value.as < ast::stmt_list::ptr > ()); yylhs.value.as < ast::stmt_list::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::stmt > ())); } +#line 2337 "parser.cpp" break; - case 53: // stmt_expr: expr_increment + case 50: // stmt_or_dev_list: stmt_or_dev +#line 355 "parser.ypp" + { yylhs.value.as < ast::stmt_list::ptr > () = std::make_unique(yylhs.location); yylhs.value.as < ast::stmt_list::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::stmt > ())); } +#line 2343 "parser.cpp" + break; + + case 51: // stmt_dev: "/#" stmt_list "#/" #line 359 "parser.ypp" - { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2336 "parser.cpp" + { yylhs.value.as < ast::stmt_dev::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::stmt_list::ptr > ())); } +#line 2349 "parser.cpp" break; - case 54: // stmt_expr: expr_decrement -#line 361 "parser.ypp" - { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2342 "parser.cpp" + case 52: // stmt_dev: "/#" "#/" +#line 360 "parser.ypp" + { yylhs.value.as < ast::stmt_dev::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } +#line 2355 "parser.cpp" break; - case 55: // stmt_expr: %empty -#line 363 "parser.ypp" - { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } -#line 2348 "parser.cpp" + case 53: // stmt_block: "{" stmt_or_dev_list "}" +#line 364 "parser.ypp" + { yylhs.value.as < ast::stmt_list::ptr > () = std::move(yystack_[1].value.as < ast::stmt_list::ptr > ()); } +#line 2361 "parser.cpp" break; - case 56: // stmt_call: expr_call ";" -#line 368 "parser.ypp" - { yylhs.value.as < ast::stmt_call::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[1].value.as < ast::expr_call::ptr > ()))); } -#line 2354 "parser.cpp" + case 54: // stmt_block: "{" "}" +#line 365 "parser.ypp" + { yylhs.value.as < ast::stmt_list::ptr > () = std::make_unique(yylhs.location); } +#line 2367 "parser.cpp" break; - case 57: // stmt_call: expr_method ";" + case 55: // stmt_expr: expr_assign #line 370 "parser.ypp" + { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2373 "parser.cpp" + break; + + case 56: // stmt_expr: expr_increment +#line 372 "parser.ypp" + { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2379 "parser.cpp" + break; + + case 57: // stmt_expr: expr_decrement +#line 374 "parser.ypp" + { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2385 "parser.cpp" + break; + + case 58: // stmt_expr: %empty +#line 376 "parser.ypp" + { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } +#line 2391 "parser.cpp" + break; + + case 59: // stmt_call: expr_call ";" +#line 381 "parser.ypp" + { yylhs.value.as < ast::stmt_call::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[1].value.as < ast::expr_call::ptr > ()))); } +#line 2397 "parser.cpp" + break; + + case 60: // stmt_call: expr_method ";" +#line 383 "parser.ypp" { yylhs.value.as < ast::stmt_call::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[1].value.as < ast::expr_method::ptr > ()))); } -#line 2360 "parser.cpp" +#line 2403 "parser.cpp" break; - case 58: // stmt_assign: expr_assign ";" -#line 375 "parser.ypp" + case 61: // stmt_assign: expr_assign ";" +#line 388 "parser.ypp" { yylhs.value.as < ast::stmt_assign::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } -#line 2366 "parser.cpp" +#line 2409 "parser.cpp" break; - case 59: // stmt_assign: expr_increment ";" -#line 377 "parser.ypp" + case 62: // stmt_assign: expr_increment ";" +#line 390 "parser.ypp" { yylhs.value.as < ast::stmt_assign::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } -#line 2372 "parser.cpp" +#line 2415 "parser.cpp" break; - case 60: // stmt_assign: expr_decrement ";" -#line 379 "parser.ypp" + case 63: // stmt_assign: expr_decrement ";" +#line 392 "parser.ypp" { yylhs.value.as < ast::stmt_assign::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } -#line 2378 "parser.cpp" +#line 2421 "parser.cpp" break; - case 61: // stmt_endon: expr_object "endon" "(" expr ")" ";" -#line 384 "parser.ypp" + case 64: // stmt_endon: expr_object "endon" "(" expr ")" ";" +#line 397 "parser.ypp" { yylhs.value.as < ast::stmt_endon::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr > ())); } -#line 2384 "parser.cpp" +#line 2427 "parser.cpp" break; - case 62: // stmt_notify: expr_object "notify" "(" expr "," expr_arguments_no_empty ")" ";" -#line 389 "parser.ypp" + case 65: // stmt_notify: expr_object "notify" "(" expr "," expr_arguments_no_empty ")" ";" +#line 402 "parser.ypp" { yylhs.value.as < ast::stmt_notify::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < ast::expr > ()), std::move(yystack_[4].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr_arguments::ptr > ())); } -#line 2390 "parser.cpp" +#line 2433 "parser.cpp" break; - case 63: // stmt_notify: expr_object "notify" "(" expr ")" ";" -#line 391 "parser.ypp" + case 66: // stmt_notify: expr_object "notify" "(" expr ")" ";" +#line 404 "parser.ypp" { yylhs.value.as < ast::stmt_notify::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr > ()), std::make_unique(yylhs.location)); } -#line 2396 "parser.cpp" +#line 2439 "parser.cpp" break; - case 64: // stmt_wait: "wait" expr ";" -#line 396 "parser.ypp" + case 67: // stmt_wait: "wait" expr ";" +#line 409 "parser.ypp" { yylhs.value.as < ast::stmt_wait::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } -#line 2402 "parser.cpp" +#line 2445 "parser.cpp" break; - case 65: // stmt_waittill: expr_object "waittill" "(" expr "," expr_arguments_no_empty ")" ";" -#line 401 "parser.ypp" + case 68: // stmt_waittill: expr_object "waittill" "(" expr "," expr_arguments_no_empty ")" ";" +#line 414 "parser.ypp" { yylhs.value.as < ast::stmt_waittill::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < ast::expr > ()), std::move(yystack_[4].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr_arguments::ptr > ())); } -#line 2408 "parser.cpp" +#line 2451 "parser.cpp" break; - case 66: // stmt_waittill: expr_object "waittill" "(" expr ")" ";" -#line 403 "parser.ypp" + case 69: // stmt_waittill: expr_object "waittill" "(" expr ")" ";" +#line 416 "parser.ypp" { yylhs.value.as < ast::stmt_waittill::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr > ()), std::make_unique(yylhs.location)); } -#line 2414 "parser.cpp" +#line 2457 "parser.cpp" break; - case 67: // stmt_waittillmatch: expr_object "waittillmatch" "(" expr "," expr_arguments_no_empty ")" ";" -#line 408 "parser.ypp" + case 70: // stmt_waittillmatch: expr_object "waittillmatch" "(" expr "," expr_arguments_no_empty ")" ";" +#line 421 "parser.ypp" { yylhs.value.as < ast::stmt_waittillmatch::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < ast::expr > ()), std::move(yystack_[4].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr_arguments::ptr > ())); } -#line 2420 "parser.cpp" +#line 2463 "parser.cpp" break; - case 68: // stmt_waittillmatch: expr_object "waittillmatch" "(" expr ")" ";" -#line 410 "parser.ypp" + case 71: // stmt_waittillmatch: expr_object "waittillmatch" "(" expr ")" ";" +#line 423 "parser.ypp" { yylhs.value.as < ast::stmt_waittillmatch::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr > ()), std::make_unique(yylhs.location)); } -#line 2426 "parser.cpp" +#line 2469 "parser.cpp" break; - case 69: // stmt_waittillframeend: "waittillframeend" ";" -#line 415 "parser.ypp" + case 72: // stmt_waittillframeend: "waittillframeend" ";" +#line 428 "parser.ypp" { yylhs.value.as < ast::stmt_waittillframeend::ptr > () = std::make_unique(yylhs.location); } -#line 2432 "parser.cpp" +#line 2475 "parser.cpp" break; - case 70: // stmt_waitframe: "waitframe" ";" -#line 420 "parser.ypp" + case 73: // stmt_waitframe: "waitframe" ";" +#line 433 "parser.ypp" { yylhs.value.as < ast::stmt_waitframe::ptr > () = std::make_unique(yylhs.location); } -#line 2438 "parser.cpp" +#line 2481 "parser.cpp" break; - case 71: // stmt_waitframe: "waitframe" "(" ")" ";" -#line 422 "parser.ypp" + case 74: // stmt_waitframe: "waitframe" "(" ")" ";" +#line 435 "parser.ypp" { yylhs.value.as < ast::stmt_waitframe::ptr > () = std::make_unique(yylhs.location); } -#line 2444 "parser.cpp" +#line 2487 "parser.cpp" break; - case 72: // stmt_if: "if" "(" expr ")" stmt -#line 427 "parser.ypp" + case 75: // stmt_if: "if" "(" expr ")" stmt +#line 440 "parser.ypp" { yylhs.value.as < ast::stmt_if::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2450 "parser.cpp" +#line 2493 "parser.cpp" break; - case 73: // stmt_ifelse: "if" "(" expr ")" stmt "else" stmt -#line 432 "parser.ypp" + case 76: // stmt_ifelse: "if" "(" expr ")" stmt "else" stmt +#line 445 "parser.ypp" { yylhs.value.as < ast::stmt_ifelse::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::stmt > ()), std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2456 "parser.cpp" +#line 2499 "parser.cpp" break; - case 74: // stmt_while: "while" "(" expr ")" stmt -#line 437 "parser.ypp" + case 77: // stmt_while: "while" "(" expr ")" stmt +#line 450 "parser.ypp" { yylhs.value.as < ast::stmt_while::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2462 "parser.cpp" +#line 2505 "parser.cpp" break; - case 75: // stmt_dowhile: "do" stmt "while" "(" expr ")" ";" -#line 442 "parser.ypp" + case 78: // stmt_dowhile: "do" stmt "while" "(" expr ")" ";" +#line 455 "parser.ypp" { yylhs.value.as < ast::stmt_dowhile::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[5].value.as < ast::stmt > ())); } -#line 2468 "parser.cpp" +#line 2511 "parser.cpp" break; - case 76: // stmt_for: "for" "(" stmt_expr ";" expr_or_empty ";" stmt_expr ")" stmt -#line 447 "parser.ypp" + case 79: // stmt_for: "for" "(" stmt_expr ";" expr_or_empty ";" stmt_expr ")" stmt +#line 460 "parser.ypp" { yylhs.value.as < ast::stmt_for::ptr > () = std::make_unique(yylhs.location, ast::stmt(std::move(yystack_[6].value.as < ast::stmt_expr::ptr > ())), std::move(yystack_[4].value.as < ast::expr > ()), ast::stmt(std::move(yystack_[2].value.as < ast::stmt_expr::ptr > ())), std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2474 "parser.cpp" +#line 2517 "parser.cpp" break; - case 77: // stmt_foreach: "foreach" "(" expr_identifier "in" expr ")" stmt -#line 452 "parser.ypp" + case 80: // stmt_foreach: "foreach" "(" expr_identifier "in" expr ")" stmt +#line 465 "parser.ypp" { yylhs.value.as < ast::stmt_foreach::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[4].value.as < ast::expr_identifier::ptr > ())), std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2480 "parser.cpp" +#line 2523 "parser.cpp" break; - case 78: // stmt_foreach: "foreach" "(" expr_identifier "," expr_identifier "in" expr ")" stmt -#line 454 "parser.ypp" + case 81: // stmt_foreach: "foreach" "(" expr_identifier "," expr_identifier "in" expr ")" stmt +#line 467 "parser.ypp" { yylhs.value.as < ast::stmt_foreach::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[6].value.as < ast::expr_identifier::ptr > ())), ast::expr(std::move(yystack_[4].value.as < ast::expr_identifier::ptr > ())), std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2486 "parser.cpp" +#line 2529 "parser.cpp" break; - case 79: // stmt_switch: "switch" "(" expr ")" stmt_block -#line 459 "parser.ypp" + case 82: // stmt_switch: "switch" "(" expr ")" stmt_block +#line 472 "parser.ypp" { yylhs.value.as < ast::stmt_switch::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::stmt_list::ptr > ())); } -#line 2492 "parser.cpp" +#line 2535 "parser.cpp" break; - case 80: // stmt_case: "case" expr_integer ":" -#line 464 "parser.ypp" + case 83: // stmt_case: "case" expr_integer ":" +#line 477 "parser.ypp" { yylhs.value.as < ast::stmt_case::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[1].value.as < ast::expr_integer::ptr > ())), std::make_unique(yylhs.location)); } -#line 2498 "parser.cpp" +#line 2541 "parser.cpp" break; - case 81: // stmt_case: "case" expr_string ":" -#line 466 "parser.ypp" + case 84: // stmt_case: "case" expr_string ":" +#line 479 "parser.ypp" { yylhs.value.as < ast::stmt_case::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[1].value.as < ast::expr_string::ptr > ())), std::make_unique(yylhs.location)); } -#line 2504 "parser.cpp" +#line 2547 "parser.cpp" break; - case 82: // stmt_default: "default" ":" -#line 471 "parser.ypp" + case 85: // stmt_default: "default" ":" +#line 484 "parser.ypp" { yylhs.value.as < ast::stmt_default::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } -#line 2510 "parser.cpp" +#line 2553 "parser.cpp" break; - case 83: // stmt_break: "break" ";" -#line 476 "parser.ypp" + case 86: // stmt_break: "break" ";" +#line 489 "parser.ypp" { yylhs.value.as < ast::stmt_break::ptr > () = std::make_unique(yylhs.location); } -#line 2516 "parser.cpp" +#line 2559 "parser.cpp" break; - case 84: // stmt_continue: "continue" ";" -#line 481 "parser.ypp" + case 87: // stmt_continue: "continue" ";" +#line 494 "parser.ypp" { yylhs.value.as < ast::stmt_continue::ptr > () = std::make_unique(yylhs.location); } -#line 2522 "parser.cpp" +#line 2565 "parser.cpp" break; - case 85: // stmt_return: "return" expr ";" -#line 486 "parser.ypp" + case 88: // stmt_return: "return" expr ";" +#line 499 "parser.ypp" { yylhs.value.as < ast::stmt_return::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } -#line 2528 "parser.cpp" +#line 2571 "parser.cpp" break; - case 86: // stmt_return: "return" ";" -#line 488 "parser.ypp" + case 89: // stmt_return: "return" ";" +#line 501 "parser.ypp" { yylhs.value.as < ast::stmt_return::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } -#line 2534 "parser.cpp" +#line 2577 "parser.cpp" break; - case 87: // stmt_breakpoint: "breakpoint" ";" -#line 493 "parser.ypp" + case 90: // stmt_breakpoint: "breakpoint" ";" +#line 506 "parser.ypp" { yylhs.value.as < ast::stmt_breakpoint::ptr > () = std::make_unique(yylhs.location); } -#line 2540 "parser.cpp" +#line 2583 "parser.cpp" break; - case 88: // stmt_prof_begin: "prof_begin" "(" expr_arguments ")" ";" -#line 498 "parser.ypp" + case 91: // stmt_prof_begin: "prof_begin" "(" expr_arguments ")" ";" +#line 511 "parser.ypp" { yylhs.value.as < ast::stmt_prof_begin::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr_arguments::ptr > ())); } -#line 2546 "parser.cpp" +#line 2589 "parser.cpp" break; - case 89: // stmt_prof_end: "prof_end" "(" expr_arguments ")" ";" -#line 503 "parser.ypp" + case 92: // stmt_prof_end: "prof_end" "(" expr_arguments ")" ";" +#line 516 "parser.ypp" { yylhs.value.as < ast::stmt_prof_end::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr_arguments::ptr > ())); } -#line 2552 "parser.cpp" +#line 2595 "parser.cpp" break; - case 90: // expr: expr_ternary -#line 507 "parser.ypp" + case 93: // expr: expr_ternary +#line 520 "parser.ypp" { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } -#line 2558 "parser.cpp" +#line 2601 "parser.cpp" break; - case 91: // expr: expr_binary -#line 508 "parser.ypp" - { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } -#line 2564 "parser.cpp" - break; - - case 92: // expr: expr_primitive -#line 509 "parser.ypp" - { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } -#line 2570 "parser.cpp" - break; - - case 93: // expr_or_empty: expr -#line 513 "parser.ypp" - { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } -#line 2576 "parser.cpp" - break; - - case 94: // expr_or_empty: %empty -#line 514 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location); } -#line 2582 "parser.cpp" - break; - - case 95: // expr_assign: expr_object "=" expr -#line 519 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2588 "parser.cpp" - break; - - case 96: // expr_assign: expr_object "|=" expr + case 94: // expr: expr_binary #line 521 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2594 "parser.cpp" + { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } +#line 2607 "parser.cpp" break; - case 97: // expr_assign: expr_object "&=" expr -#line 523 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2600 "parser.cpp" + case 95: // expr: expr_primitive +#line 522 "parser.ypp" + { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } +#line 2613 "parser.cpp" break; - case 98: // expr_assign: expr_object "^=" expr -#line 525 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2606 "parser.cpp" + case 96: // expr_or_empty: expr +#line 526 "parser.ypp" + { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } +#line 2619 "parser.cpp" break; - case 99: // expr_assign: expr_object "<<=" expr + case 97: // expr_or_empty: %empty #line 527 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location); } +#line 2625 "parser.cpp" + break; + + case 98: // expr_assign: expr_object "=" expr +#line 532 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2631 "parser.cpp" + break; + + case 99: // expr_assign: expr_object "|=" expr +#line 534 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2637 "parser.cpp" + break; + + case 100: // expr_assign: expr_object "&=" expr +#line 536 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2643 "parser.cpp" + break; + + case 101: // expr_assign: expr_object "^=" expr +#line 538 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2649 "parser.cpp" + break; + + case 102: // expr_assign: expr_object "<<=" expr +#line 540 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()),std::move( yystack_[0].value.as < ast::expr > ())); } -#line 2612 "parser.cpp" +#line 2655 "parser.cpp" break; - case 100: // expr_assign: expr_object ">>=" expr -#line 529 "parser.ypp" + case 103: // expr_assign: expr_object ">>=" expr +#line 542 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2618 "parser.cpp" +#line 2661 "parser.cpp" break; - case 101: // expr_assign: expr_object "+=" expr -#line 531 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2624 "parser.cpp" - break; - - case 102: // expr_assign: expr_object "-=" expr -#line 533 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2630 "parser.cpp" - break; - - case 103: // expr_assign: expr_object "*=" expr -#line 535 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2636 "parser.cpp" - break; - - case 104: // expr_assign: expr_object "/=" expr -#line 537 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2642 "parser.cpp" - break; - - case 105: // expr_assign: expr_object "%=" expr -#line 539 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2648 "parser.cpp" - break; - - case 106: // expr_increment: "++" expr_object + case 104: // expr_assign: expr_object "+=" expr #line 544 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ()), true); } -#line 2654 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2667 "parser.cpp" break; - case 107: // expr_increment: expr_object "++" + case 105: // expr_assign: expr_object "-=" expr #line 546 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2673 "parser.cpp" + break; + + case 106: // expr_assign: expr_object "*=" expr +#line 548 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2679 "parser.cpp" + break; + + case 107: // expr_assign: expr_object "/=" expr +#line 550 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2685 "parser.cpp" + break; + + case 108: // expr_assign: expr_object "%=" expr +#line 552 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2691 "parser.cpp" + break; + + case 109: // expr_increment: "++" expr_object +#line 557 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ()), true); } +#line 2697 "parser.cpp" + break; + + case 110: // expr_increment: expr_object "++" +#line 559 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ()), false); } -#line 2660 "parser.cpp" +#line 2703 "parser.cpp" break; - case 108: // expr_decrement: "--" expr_object -#line 551 "parser.ypp" + case 111: // expr_decrement: "--" expr_object +#line 564 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ()), true); } -#line 2666 "parser.cpp" +#line 2709 "parser.cpp" break; - case 109: // expr_decrement: expr_object "--" -#line 553 "parser.ypp" + case 112: // expr_decrement: expr_object "--" +#line 566 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ()), false); } -#line 2672 "parser.cpp" +#line 2715 "parser.cpp" break; - case 110: // expr_ternary: expr "?" expr ":" expr -#line 558 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2678 "parser.cpp" - break; - - case 111: // expr_binary: expr "||" expr -#line 563 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2684 "parser.cpp" - break; - - case 112: // expr_binary: expr "&&" expr -#line 565 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2690 "parser.cpp" - break; - - case 113: // expr_binary: expr "==" expr -#line 567 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2696 "parser.cpp" - break; - - case 114: // expr_binary: expr "!=" expr -#line 569 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2702 "parser.cpp" - break; - - case 115: // expr_binary: expr "<=" expr + case 113: // expr_ternary: expr "?" expr ":" expr #line 571 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2721 "parser.cpp" + break; + + case 114: // expr_binary: expr "||" expr +#line 576 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2727 "parser.cpp" + break; + + case 115: // expr_binary: expr "&&" expr +#line 578 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2733 "parser.cpp" + break; + + case 116: // expr_binary: expr "==" expr +#line 580 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2739 "parser.cpp" + break; + + case 117: // expr_binary: expr "!=" expr +#line 582 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2745 "parser.cpp" + break; + + case 118: // expr_binary: expr "<=" expr +#line 584 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2708 "parser.cpp" +#line 2751 "parser.cpp" break; - case 116: // expr_binary: expr ">=" expr -#line 573 "parser.ypp" + case 119: // expr_binary: expr ">=" expr +#line 586 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2714 "parser.cpp" +#line 2757 "parser.cpp" break; - case 117: // expr_binary: expr "<" expr -#line 575 "parser.ypp" + case 120: // expr_binary: expr "<" expr +#line 588 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2720 "parser.cpp" +#line 2763 "parser.cpp" break; - case 118: // expr_binary: expr ">" expr -#line 577 "parser.ypp" + case 121: // expr_binary: expr ">" expr +#line 590 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2726 "parser.cpp" +#line 2769 "parser.cpp" break; - case 119: // expr_binary: expr "|" expr -#line 579 "parser.ypp" + case 122: // expr_binary: expr "|" expr +#line 592 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2732 "parser.cpp" +#line 2775 "parser.cpp" break; - case 120: // expr_binary: expr "&" expr -#line 581 "parser.ypp" + case 123: // expr_binary: expr "&" expr +#line 594 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2738 "parser.cpp" +#line 2781 "parser.cpp" break; - case 121: // expr_binary: expr "^" expr -#line 583 "parser.ypp" + case 124: // expr_binary: expr "^" expr +#line 596 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2744 "parser.cpp" +#line 2787 "parser.cpp" break; - case 122: // expr_binary: expr "<<" expr -#line 585 "parser.ypp" + case 125: // expr_binary: expr "<<" expr +#line 598 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2750 "parser.cpp" +#line 2793 "parser.cpp" break; - case 123: // expr_binary: expr ">>" expr -#line 587 "parser.ypp" + case 126: // expr_binary: expr ">>" expr +#line 600 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2756 "parser.cpp" +#line 2799 "parser.cpp" break; - case 124: // expr_binary: expr "+" expr -#line 589 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2762 "parser.cpp" - break; - - case 125: // expr_binary: expr "-" expr -#line 591 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2768 "parser.cpp" - break; - - case 126: // expr_binary: expr "*" expr -#line 593 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2774 "parser.cpp" - break; - - case 127: // expr_binary: expr "/" expr -#line 595 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2780 "parser.cpp" - break; - - case 128: // expr_binary: expr "%" expr -#line 597 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2786 "parser.cpp" - break; - - case 129: // expr_primitive: expr_complement -#line 601 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_complement::ptr > ()); } -#line 2792 "parser.cpp" - break; - - case 130: // expr_primitive: expr_not + case 127: // expr_binary: expr "+" expr #line 602 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_not::ptr > ()); } -#line 2798 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2805 "parser.cpp" break; - case 131: // expr_primitive: expr_call -#line 603 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_call::ptr > ()); } -#line 2804 "parser.cpp" - break; - - case 132: // expr_primitive: expr_method + case 128: // expr_binary: expr "-" expr #line 604 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_method::ptr > ()); } -#line 2810 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2811 "parser.cpp" break; - case 133: // expr_primitive: expr_add_array -#line 605 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_add_array::ptr > ()); } -#line 2816 "parser.cpp" - break; - - case 134: // expr_primitive: expr_isdefined + case 129: // expr_binary: expr "*" expr #line 606 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_isdefined::ptr > ()); } -#line 2822 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2817 "parser.cpp" break; - case 135: // expr_primitive: expr_istrue -#line 607 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_istrue::ptr > ()); } -#line 2828 "parser.cpp" - break; - - case 136: // expr_primitive: expr_reference + case 130: // expr_binary: expr "/" expr #line 608 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_reference::ptr > ()); } -#line 2834 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2823 "parser.cpp" break; - case 137: // expr_primitive: expr_array -#line 609 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_array::ptr > ()); } -#line 2840 "parser.cpp" - break; - - case 138: // expr_primitive: expr_field + case 131: // expr_binary: expr "%" expr #line 610 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_field::ptr > ()); } -#line 2846 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2829 "parser.cpp" break; - case 139: // expr_primitive: expr_size -#line 611 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_size::ptr > ()); } -#line 2852 "parser.cpp" - break; - - case 140: // expr_primitive: expr_paren -#line 612 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_paren::ptr > ()); } -#line 2858 "parser.cpp" - break; - - case 141: // expr_primitive: expr_thisthread -#line 613 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_thisthread::ptr > ()); } -#line 2864 "parser.cpp" - break; - - case 142: // expr_primitive: expr_empty_array + case 132: // expr_primitive: expr_complement #line 614 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_empty_array::ptr > ()); } -#line 2870 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_complement::ptr > ()); } +#line 2835 "parser.cpp" break; - case 143: // expr_primitive: expr_undefined + case 133: // expr_primitive: expr_not #line 615 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_undefined::ptr > ()); } -#line 2876 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_not::ptr > ()); } +#line 2841 "parser.cpp" break; - case 144: // expr_primitive: expr_game + case 134: // expr_primitive: expr_call #line 616 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_game::ptr > ()); } -#line 2882 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_call::ptr > ()); } +#line 2847 "parser.cpp" break; - case 145: // expr_primitive: expr_self + case 135: // expr_primitive: expr_method #line 617 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_self::ptr > ()); } -#line 2888 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_method::ptr > ()); } +#line 2853 "parser.cpp" break; - case 146: // expr_primitive: expr_anim + case 136: // expr_primitive: expr_add_array #line 618 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_anim::ptr > ()); } -#line 2894 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_add_array::ptr > ()); } +#line 2859 "parser.cpp" break; - case 147: // expr_primitive: expr_level + case 137: // expr_primitive: expr_isdefined #line 619 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_level::ptr > ()); } -#line 2900 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_isdefined::ptr > ()); } +#line 2865 "parser.cpp" break; - case 148: // expr_primitive: expr_animation + case 138: // expr_primitive: expr_istrue #line 620 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_animation::ptr > ()); } -#line 2906 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_istrue::ptr > ()); } +#line 2871 "parser.cpp" break; - case 149: // expr_primitive: expr_animtree + case 139: // expr_primitive: expr_reference #line 621 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_animtree::ptr > ()); } -#line 2912 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_reference::ptr > ()); } +#line 2877 "parser.cpp" break; - case 150: // expr_primitive: expr_identifier + case 140: // expr_primitive: expr_array #line 622 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ()); } -#line 2918 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_array::ptr > ()); } +#line 2883 "parser.cpp" break; - case 151: // expr_primitive: expr_istring + case 141: // expr_primitive: expr_field #line 623 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_istring::ptr > ()); } -#line 2924 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_field::ptr > ()); } +#line 2889 "parser.cpp" break; - case 152: // expr_primitive: expr_string + case 142: // expr_primitive: expr_size #line 624 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_string::ptr > ()); } -#line 2930 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_size::ptr > ()); } +#line 2895 "parser.cpp" break; - case 153: // expr_primitive: expr_color + case 143: // expr_primitive: expr_paren #line 625 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_color::ptr > ()); } -#line 2936 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_paren::ptr > ()); } +#line 2901 "parser.cpp" break; - case 154: // expr_primitive: expr_vector + case 144: // expr_primitive: expr_thisthread #line 626 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_vector::ptr > ()); } -#line 2942 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_thisthread::ptr > ()); } +#line 2907 "parser.cpp" break; - case 155: // expr_primitive: expr_float + case 145: // expr_primitive: expr_empty_array #line 627 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_float::ptr > ()); } -#line 2948 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_empty_array::ptr > ()); } +#line 2913 "parser.cpp" break; - case 156: // expr_primitive: expr_integer + case 146: // expr_primitive: expr_undefined #line 628 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_integer::ptr > ()); } -#line 2954 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_undefined::ptr > ()); } +#line 2919 "parser.cpp" break; - case 157: // expr_primitive: expr_false + case 147: // expr_primitive: expr_game #line 629 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_false::ptr > ()); } -#line 2960 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_game::ptr > ()); } +#line 2925 "parser.cpp" break; - case 158: // expr_primitive: expr_true + case 148: // expr_primitive: expr_self #line 630 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_true::ptr > ()); } -#line 2966 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_self::ptr > ()); } +#line 2931 "parser.cpp" break; - case 159: // expr_complement: "~" expr + case 149: // expr_primitive: expr_anim +#line 631 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_anim::ptr > ()); } +#line 2937 "parser.cpp" + break; + + case 150: // expr_primitive: expr_level +#line 632 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_level::ptr > ()); } +#line 2943 "parser.cpp" + break; + + case 151: // expr_primitive: expr_animation +#line 633 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_animation::ptr > ()); } +#line 2949 "parser.cpp" + break; + + case 152: // expr_primitive: expr_animtree +#line 634 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_animtree::ptr > ()); } +#line 2955 "parser.cpp" + break; + + case 153: // expr_primitive: expr_identifier #line 635 "parser.ypp" - { yylhs.value.as < ast::expr_complement::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2972 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ()); } +#line 2961 "parser.cpp" break; - case 160: // expr_not: "!" expr + case 154: // expr_primitive: expr_istring +#line 636 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_istring::ptr > ()); } +#line 2967 "parser.cpp" + break; + + case 155: // expr_primitive: expr_string +#line 637 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_string::ptr > ()); } +#line 2973 "parser.cpp" + break; + + case 156: // expr_primitive: expr_color +#line 638 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_color::ptr > ()); } +#line 2979 "parser.cpp" + break; + + case 157: // expr_primitive: expr_vector +#line 639 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_vector::ptr > ()); } +#line 2985 "parser.cpp" + break; + + case 158: // expr_primitive: expr_float #line 640 "parser.ypp" - { yylhs.value.as < ast::expr_not::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2978 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_float::ptr > ()); } +#line 2991 "parser.cpp" break; - case 161: // expr_call: expr_function -#line 644 "parser.ypp" - { yylhs.value.as < ast::expr_call::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::call > ())); } -#line 2984 "parser.cpp" + case 159: // expr_primitive: expr_integer +#line 641 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_integer::ptr > ()); } +#line 2997 "parser.cpp" break; - case 162: // expr_call: expr_pointer -#line 645 "parser.ypp" - { yylhs.value.as < ast::expr_call::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::call > ())); } -#line 2990 "parser.cpp" + case 160: // expr_primitive: expr_false +#line 642 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_false::ptr > ()); } +#line 3003 "parser.cpp" break; - case 163: // expr_method: expr_object expr_function + case 161: // expr_primitive: expr_true +#line 643 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_true::ptr > ()); } +#line 3009 "parser.cpp" + break; + + case 162: // expr_complement: "~" expr #line 648 "parser.ypp" - { yylhs.value.as < ast::expr_method::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::call > ())); } -#line 2996 "parser.cpp" + { yylhs.value.as < ast::expr_complement::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } +#line 3015 "parser.cpp" break; - case 164: // expr_method: expr_object expr_pointer -#line 649 "parser.ypp" - { yylhs.value.as < ast::expr_method::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::call > ())); } -#line 3002 "parser.cpp" + case 163: // expr_not: "!" expr +#line 653 "parser.ypp" + { yylhs.value.as < ast::expr_not::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } +#line 3021 "parser.cpp" break; - case 165: // expr_function: expr_identifier "(" expr_arguments ")" -#line 654 "parser.ypp" - { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::normal); } -#line 3008 "parser.cpp" + case 164: // expr_call: expr_function +#line 657 "parser.ypp" + { yylhs.value.as < ast::expr_call::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::call > ())); } +#line 3027 "parser.cpp" break; - case 166: // expr_function: expr_path "::" expr_identifier "(" expr_arguments ")" -#line 656 "parser.ypp" - { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr_path::ptr > ()), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::normal); } -#line 3014 "parser.cpp" - break; - - case 167: // expr_function: "thread" expr_identifier "(" expr_arguments ")" + case 165: // expr_call: expr_pointer #line 658 "parser.ypp" - { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::thread); } -#line 3020 "parser.cpp" + { yylhs.value.as < ast::expr_call::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::call > ())); } +#line 3033 "parser.cpp" break; - case 168: // expr_function: "thread" expr_path "::" expr_identifier "(" expr_arguments ")" -#line 660 "parser.ypp" - { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr_path::ptr > ()), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::thread); } -#line 3026 "parser.cpp" + case 166: // expr_method: expr_object expr_function +#line 661 "parser.ypp" + { yylhs.value.as < ast::expr_method::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::call > ())); } +#line 3039 "parser.cpp" break; - case 169: // expr_function: "childthread" expr_identifier "(" expr_arguments ")" + case 167: // expr_method: expr_object expr_pointer #line 662 "parser.ypp" - { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::childthread); } -#line 3032 "parser.cpp" + { yylhs.value.as < ast::expr_method::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::call > ())); } +#line 3045 "parser.cpp" break; - case 170: // expr_function: "childthread" expr_path "::" expr_identifier "(" expr_arguments ")" -#line 664 "parser.ypp" - { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr_path::ptr > ()), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::childthread); } -#line 3038 "parser.cpp" + case 168: // expr_function: expr_identifier "(" expr_arguments ")" +#line 667 "parser.ypp" + { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::normal); } +#line 3051 "parser.cpp" break; - case 171: // expr_pointer: "[" "[" expr "]" "]" "(" expr_arguments ")" + case 169: // expr_function: expr_path "::" expr_identifier "(" expr_arguments ")" #line 669 "parser.ypp" - { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::normal); } -#line 3044 "parser.cpp" + { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr_path::ptr > ()), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::normal); } +#line 3057 "parser.cpp" break; - case 172: // expr_pointer: "thread" "[" "[" expr "]" "]" "(" expr_arguments ")" + case 170: // expr_function: "thread" expr_identifier "(" expr_arguments ")" #line 671 "parser.ypp" - { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::thread); } -#line 3050 "parser.cpp" + { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::thread); } +#line 3063 "parser.cpp" break; - case 173: // expr_pointer: "childthread" "[" "[" expr "]" "]" "(" expr_arguments ")" + case 171: // expr_function: "thread" expr_path "::" expr_identifier "(" expr_arguments ")" #line 673 "parser.ypp" - { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::childthread); } -#line 3056 "parser.cpp" + { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr_path::ptr > ()), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::thread); } +#line 3069 "parser.cpp" break; - case 174: // expr_pointer: "call" "[" "[" expr "]" "]" "(" expr_arguments ")" + case 172: // expr_function: "childthread" expr_identifier "(" expr_arguments ")" #line 675 "parser.ypp" + { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::childthread); } +#line 3075 "parser.cpp" + break; + + case 173: // expr_function: "childthread" expr_path "::" expr_identifier "(" expr_arguments ")" +#line 677 "parser.ypp" + { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr_path::ptr > ()), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::childthread); } +#line 3081 "parser.cpp" + break; + + case 174: // expr_pointer: "[" "[" expr "]" "]" "(" expr_arguments ")" +#line 682 "parser.ypp" + { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::normal); } +#line 3087 "parser.cpp" + break; + + case 175: // expr_pointer: "thread" "[" "[" expr "]" "]" "(" expr_arguments ")" +#line 684 "parser.ypp" + { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::thread); } +#line 3093 "parser.cpp" + break; + + case 176: // expr_pointer: "childthread" "[" "[" expr "]" "]" "(" expr_arguments ")" +#line 686 "parser.ypp" + { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::childthread); } +#line 3099 "parser.cpp" + break; + + case 177: // expr_pointer: "call" "[" "[" expr "]" "]" "(" expr_arguments ")" +#line 688 "parser.ypp" { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::builtin); } -#line 3062 "parser.cpp" +#line 3105 "parser.cpp" break; - case 175: // expr_add_array: "[" expr_arguments_no_empty "]" -#line 680 "parser.ypp" + case 178: // expr_add_array: "[" expr_arguments_no_empty "]" +#line 693 "parser.ypp" { yylhs.value.as < ast::expr_add_array::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ())); } -#line 3068 "parser.cpp" +#line 3111 "parser.cpp" break; - case 176: // expr_parameters: expr_parameters "," expr_identifier -#line 685 "parser.ypp" + case 179: // expr_parameters: expr_parameters "," expr_identifier +#line 698 "parser.ypp" { yylhs.value.as < ast::expr_parameters::ptr > () = std::move(yystack_[2].value.as < ast::expr_parameters::ptr > ()); yylhs.value.as < ast::expr_parameters::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ())); } -#line 3074 "parser.cpp" +#line 3117 "parser.cpp" break; - case 177: // expr_parameters: expr_identifier -#line 687 "parser.ypp" + case 180: // expr_parameters: expr_identifier +#line 700 "parser.ypp" { yylhs.value.as < ast::expr_parameters::ptr > () = std::make_unique(yylhs.location); yylhs.value.as < ast::expr_parameters::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ())); } -#line 3080 "parser.cpp" +#line 3123 "parser.cpp" break; - case 178: // expr_parameters: %empty -#line 689 "parser.ypp" + case 181: // expr_parameters: %empty +#line 702 "parser.ypp" { yylhs.value.as < ast::expr_parameters::ptr > () = std::make_unique(yylhs.location); } -#line 3086 "parser.cpp" +#line 3129 "parser.cpp" break; - case 179: // expr_arguments: expr_arguments_no_empty -#line 694 "parser.ypp" + case 182: // expr_arguments: expr_arguments_no_empty +#line 707 "parser.ypp" { yylhs.value.as < ast::expr_arguments::ptr > () = std::move(yystack_[0].value.as < ast::expr_arguments::ptr > ()); } -#line 3092 "parser.cpp" +#line 3135 "parser.cpp" break; - case 180: // expr_arguments: %empty -#line 696 "parser.ypp" + case 183: // expr_arguments: %empty +#line 709 "parser.ypp" { yylhs.value.as < ast::expr_arguments::ptr > () = std::make_unique(yylhs.location); } -#line 3098 "parser.cpp" +#line 3141 "parser.cpp" break; - case 181: // expr_arguments_no_empty: expr_arguments "," expr -#line 701 "parser.ypp" + case 184: // expr_arguments_no_empty: expr_arguments "," expr +#line 714 "parser.ypp" { yylhs.value.as < ast::expr_arguments::ptr > () = std::move(yystack_[2].value.as < ast::expr_arguments::ptr > ()); yylhs.value.as < ast::expr_arguments::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::expr > ())); } -#line 3104 "parser.cpp" +#line 3147 "parser.cpp" break; - case 182: // expr_arguments_no_empty: expr -#line 703 "parser.ypp" + case 185: // expr_arguments_no_empty: expr +#line 716 "parser.ypp" { yylhs.value.as < ast::expr_arguments::ptr > () = std::make_unique(yylhs.location); yylhs.value.as < ast::expr_arguments::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::expr > ())); } -#line 3110 "parser.cpp" +#line 3153 "parser.cpp" break; - case 183: // expr_isdefined: "isdefined" "(" expr ")" -#line 708 "parser.ypp" + case 186: // expr_isdefined: "isdefined" "(" expr ")" +#line 721 "parser.ypp" { yylhs.value.as < ast::expr_isdefined::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } -#line 3116 "parser.cpp" +#line 3159 "parser.cpp" break; - case 184: // expr_istrue: "istrue" "(" expr ")" -#line 713 "parser.ypp" + case 187: // expr_istrue: "istrue" "(" expr ")" +#line 726 "parser.ypp" { yylhs.value.as < ast::expr_istrue::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } -#line 3122 "parser.cpp" +#line 3165 "parser.cpp" break; - case 185: // expr_reference: "::" expr_identifier -#line 718 "parser.ypp" + case 188: // expr_reference: "::" expr_identifier +#line 731 "parser.ypp" { yylhs.value.as < ast::expr_reference::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ())); } -#line 3128 "parser.cpp" +#line 3171 "parser.cpp" break; - case 186: // expr_reference: expr_path "::" expr_identifier -#line 720 "parser.ypp" + case 189: // expr_reference: expr_path "::" expr_identifier +#line 733 "parser.ypp" { yylhs.value.as < ast::expr_reference::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr_path::ptr > ()), std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ())); } -#line 3134 "parser.cpp" +#line 3177 "parser.cpp" break; - case 187: // expr_array: expr_object "[" expr "]" -#line 725 "parser.ypp" + case 190: // expr_array: expr_object "[" expr "]" +#line 738 "parser.ypp" { yylhs.value.as < ast::expr_array::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[3].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr > ())); } -#line 3140 "parser.cpp" +#line 3183 "parser.cpp" break; - case 188: // expr_field: expr_object "." expr_identifier -#line 730 "parser.ypp" + case 191: // expr_field: expr_object "." expr_identifier +#line 743 "parser.ypp" { yylhs.value.as < ast::expr_field::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ())); } -#line 3146 "parser.cpp" +#line 3189 "parser.cpp" break; - case 189: // expr_field: expr_object "field" -#line 732 "parser.ypp" + case 192: // expr_field: expr_object "field" +#line 745 "parser.ypp" { yylhs.value.as < ast::expr_field::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ()), std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ())); } -#line 3152 "parser.cpp" +#line 3195 "parser.cpp" break; - case 190: // expr_size: expr_object ".size" -#line 737 "parser.ypp" - { yylhs.value.as < ast::expr_size::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } -#line 3158 "parser.cpp" - break; - - case 191: // expr_paren: "(" expr ")" -#line 742 "parser.ypp" - { yylhs.value.as < ast::expr_paren::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } -#line 3164 "parser.cpp" - break; - - case 192: // expr_object: expr_call -#line 746 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_call::ptr > ()); } -#line 3170 "parser.cpp" - break; - - case 193: // expr_object: expr_method -#line 747 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_method::ptr > ()); } -#line 3176 "parser.cpp" - break; - - case 194: // expr_object: expr_array -#line 748 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_array::ptr > ()); } -#line 3182 "parser.cpp" - break; - - case 195: // expr_object: expr_field -#line 749 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_field::ptr > ()); } -#line 3188 "parser.cpp" - break; - - case 196: // expr_object: expr_game + case 193: // expr_size: expr_object ".size" #line 750 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_game::ptr > ()); } -#line 3194 "parser.cpp" + { yylhs.value.as < ast::expr_size::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } +#line 3201 "parser.cpp" break; - case 197: // expr_object: expr_self -#line 751 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_self::ptr > ()); } -#line 3200 "parser.cpp" + case 194: // expr_paren: "(" expr ")" +#line 755 "parser.ypp" + { yylhs.value.as < ast::expr_paren::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } +#line 3207 "parser.cpp" break; - case 198: // expr_object: expr_anim -#line 752 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_anim::ptr > ()); } -#line 3206 "parser.cpp" - break; - - case 199: // expr_object: expr_level -#line 753 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_level::ptr > ()); } -#line 3212 "parser.cpp" - break; - - case 200: // expr_object: expr_identifier -#line 754 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ()); } -#line 3218 "parser.cpp" - break; - - case 201: // expr_thisthread: "thisthread" + case 195: // expr_object: expr_call #line 759 "parser.ypp" - { yylhs.value.as < ast::expr_thisthread::ptr > () = std::make_unique(yylhs.location); } -#line 3224 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_call::ptr > ()); } +#line 3213 "parser.cpp" break; - case 202: // expr_empty_array: "[" "]" + case 196: // expr_object: expr_method +#line 760 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_method::ptr > ()); } +#line 3219 "parser.cpp" + break; + + case 197: // expr_object: expr_array +#line 761 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_array::ptr > ()); } +#line 3225 "parser.cpp" + break; + + case 198: // expr_object: expr_field +#line 762 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_field::ptr > ()); } +#line 3231 "parser.cpp" + break; + + case 199: // expr_object: expr_game +#line 763 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_game::ptr > ()); } +#line 3237 "parser.cpp" + break; + + case 200: // expr_object: expr_self #line 764 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_self::ptr > ()); } +#line 3243 "parser.cpp" + break; + + case 201: // expr_object: expr_anim +#line 765 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_anim::ptr > ()); } +#line 3249 "parser.cpp" + break; + + case 202: // expr_object: expr_level +#line 766 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_level::ptr > ()); } +#line 3255 "parser.cpp" + break; + + case 203: // expr_object: expr_identifier +#line 767 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ()); } +#line 3261 "parser.cpp" + break; + + case 204: // expr_thisthread: "thisthread" +#line 772 "parser.ypp" + { yylhs.value.as < ast::expr_thisthread::ptr > () = std::make_unique(yylhs.location); } +#line 3267 "parser.cpp" + break; + + case 205: // expr_empty_array: "[" "]" +#line 777 "parser.ypp" { yylhs.value.as < ast::expr_empty_array::ptr > () = std::make_unique(yylhs.location); } -#line 3230 "parser.cpp" +#line 3273 "parser.cpp" break; - case 203: // expr_undefined: "undefined" -#line 769 "parser.ypp" + case 206: // expr_undefined: "undefined" +#line 782 "parser.ypp" { yylhs.value.as < ast::expr_undefined::ptr > () = std::make_unique(yylhs.location); } -#line 3236 "parser.cpp" +#line 3279 "parser.cpp" break; - case 204: // expr_game: "game" -#line 774 "parser.ypp" + case 207: // expr_game: "game" +#line 787 "parser.ypp" { yylhs.value.as < ast::expr_game::ptr > () = std::make_unique(yylhs.location); } -#line 3242 "parser.cpp" +#line 3285 "parser.cpp" break; - case 205: // expr_self: "self" -#line 779 "parser.ypp" + case 208: // expr_self: "self" +#line 792 "parser.ypp" { yylhs.value.as < ast::expr_self::ptr > () = std::make_unique(yylhs.location); } -#line 3248 "parser.cpp" +#line 3291 "parser.cpp" break; - case 206: // expr_anim: "anim" -#line 784 "parser.ypp" + case 209: // expr_anim: "anim" +#line 797 "parser.ypp" { yylhs.value.as < ast::expr_anim::ptr > () = std::make_unique(yylhs.location); } -#line 3254 "parser.cpp" +#line 3297 "parser.cpp" break; - case 207: // expr_level: "level" -#line 789 "parser.ypp" + case 210: // expr_level: "level" +#line 802 "parser.ypp" { yylhs.value.as < ast::expr_level::ptr > () = std::make_unique(yylhs.location); } -#line 3260 "parser.cpp" +#line 3303 "parser.cpp" break; - case 208: // expr_animation: "%" "identifier" -#line 794 "parser.ypp" + case 211: // expr_animation: "%" "identifier" +#line 807 "parser.ypp" { yylhs.value.as < ast::expr_animation::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3266 "parser.cpp" +#line 3309 "parser.cpp" break; - case 209: // expr_animtree: "#animtree" -#line 799 "parser.ypp" + case 212: // expr_animtree: "#animtree" +#line 812 "parser.ypp" { yylhs.value.as < ast::expr_animtree::ptr > () = std::make_unique(yylhs.location); } -#line 3272 "parser.cpp" +#line 3315 "parser.cpp" break; - case 210: // expr_identifier: "identifier" -#line 804 "parser.ypp" + case 213: // expr_identifier: "identifier" +#line 817 "parser.ypp" { yylhs.value.as < ast::expr_identifier::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3278 "parser.cpp" +#line 3321 "parser.cpp" break; - case 211: // expr_path: "path" -#line 809 "parser.ypp" + case 214: // expr_path: "path" +#line 822 "parser.ypp" { yylhs.value.as < ast::expr_path::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3284 "parser.cpp" +#line 3327 "parser.cpp" break; - case 212: // expr_path: expr_identifier -#line 811 "parser.ypp" + case 215: // expr_path: expr_identifier +#line 824 "parser.ypp" { yylhs.value.as < ast::expr_path::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < ast::expr_identifier::ptr > ()->value); } -#line 3290 "parser.cpp" +#line 3333 "parser.cpp" break; - case 213: // expr_istring: "localized string" -#line 816 "parser.ypp" + case 216: // expr_istring: "localized string" +#line 829 "parser.ypp" { yylhs.value.as < ast::expr_istring::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3296 "parser.cpp" +#line 3339 "parser.cpp" break; - case 214: // expr_string: "string literal" -#line 821 "parser.ypp" + case 217: // expr_string: "string literal" +#line 834 "parser.ypp" { yylhs.value.as < ast::expr_string::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3302 "parser.cpp" +#line 3345 "parser.cpp" break; - case 215: // expr_color: "color" -#line 826 "parser.ypp" + case 218: // expr_color: "color" +#line 839 "parser.ypp" { yylhs.value.as < ast::expr_color::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3308 "parser.cpp" +#line 3351 "parser.cpp" break; - case 216: // expr_vector: "(" expr "," expr "," expr ")" -#line 831 "parser.ypp" + case 219: // expr_vector: "(" expr "," expr "," expr ")" +#line 844 "parser.ypp" { yylhs.value.as < ast::expr_vector::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[3].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr > ())); } -#line 3314 "parser.cpp" +#line 3357 "parser.cpp" break; - case 217: // expr_float: "-" "float" -#line 836 "parser.ypp" + case 220: // expr_float: "-" "float" +#line 849 "parser.ypp" { yylhs.value.as < ast::expr_float::ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } -#line 3320 "parser.cpp" +#line 3363 "parser.cpp" break; - case 218: // expr_float: "float" -#line 838 "parser.ypp" + case 221: // expr_float: "float" +#line 851 "parser.ypp" { yylhs.value.as < ast::expr_float::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3326 "parser.cpp" +#line 3369 "parser.cpp" break; - case 219: // expr_integer: "-" "integer" -#line 843 "parser.ypp" + case 222: // expr_integer: "-" "integer" +#line 856 "parser.ypp" { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } -#line 3332 "parser.cpp" +#line 3375 "parser.cpp" break; - case 220: // expr_integer: "integer" -#line 845 "parser.ypp" + case 223: // expr_integer: "integer" +#line 858 "parser.ypp" { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3338 "parser.cpp" +#line 3381 "parser.cpp" break; - case 221: // expr_false: "false" -#line 850 "parser.ypp" + case 224: // expr_false: "false" +#line 863 "parser.ypp" { yylhs.value.as < ast::expr_false::ptr > () = std::make_unique(yylhs.location); } -#line 3344 "parser.cpp" +#line 3387 "parser.cpp" break; - case 222: // expr_true: "true" -#line 855 "parser.ypp" + case 225: // expr_true: "true" +#line 868 "parser.ypp" { yylhs.value.as < ast::expr_true::ptr > () = std::make_unique(yylhs.location); } -#line 3350 "parser.cpp" +#line 3393 "parser.cpp" break; -#line 3354 "parser.cpp" +#line 3397 "parser.cpp" default: break; @@ -3550,24 +3593,25 @@ namespace xsk { namespace gsc { namespace iw8 { "integer", "ADD_ARRAY", "THEN", "TERN", "NEG", "ANIMREF", "PREINC", "PREDEC", "POSTINC", "POSTDEC", "$accept", "root", "program", "inline", "include", "declaration", "decl_usingtree", "decl_constant", - "decl_thread", "stmt", "stmt_dev", "stmt_block", "stmt_list", - "stmt_expr", "stmt_call", "stmt_assign", "stmt_endon", "stmt_notify", - "stmt_wait", "stmt_waittill", "stmt_waittillmatch", - "stmt_waittillframeend", "stmt_waitframe", "stmt_if", "stmt_ifelse", - "stmt_while", "stmt_dowhile", "stmt_for", "stmt_foreach", "stmt_switch", - "stmt_case", "stmt_default", "stmt_break", "stmt_continue", - "stmt_return", "stmt_breakpoint", "stmt_prof_begin", "stmt_prof_end", - "expr", "expr_or_empty", "expr_assign", "expr_increment", - "expr_decrement", "expr_ternary", "expr_binary", "expr_primitive", - "expr_complement", "expr_not", "expr_call", "expr_method", - "expr_function", "expr_pointer", "expr_add_array", "expr_parameters", - "expr_arguments", "expr_arguments_no_empty", "expr_isdefined", - "expr_istrue", "expr_reference", "expr_array", "expr_field", "expr_size", - "expr_paren", "expr_object", "expr_thisthread", "expr_empty_array", - "expr_undefined", "expr_game", "expr_self", "expr_anim", "expr_level", - "expr_animation", "expr_animtree", "expr_identifier", "expr_path", - "expr_istring", "expr_string", "expr_color", "expr_vector", "expr_float", - "expr_integer", "expr_false", "expr_true", YY_NULLPTR + "decl_thread", "stmt", "stmt_or_dev", "stmt_list", "stmt_or_dev_list", + "stmt_dev", "stmt_block", "stmt_expr", "stmt_call", "stmt_assign", + "stmt_endon", "stmt_notify", "stmt_wait", "stmt_waittill", + "stmt_waittillmatch", "stmt_waittillframeend", "stmt_waitframe", + "stmt_if", "stmt_ifelse", "stmt_while", "stmt_dowhile", "stmt_for", + "stmt_foreach", "stmt_switch", "stmt_case", "stmt_default", "stmt_break", + "stmt_continue", "stmt_return", "stmt_breakpoint", "stmt_prof_begin", + "stmt_prof_end", "expr", "expr_or_empty", "expr_assign", + "expr_increment", "expr_decrement", "expr_ternary", "expr_binary", + "expr_primitive", "expr_complement", "expr_not", "expr_call", + "expr_method", "expr_function", "expr_pointer", "expr_add_array", + "expr_parameters", "expr_arguments", "expr_arguments_no_empty", + "expr_isdefined", "expr_istrue", "expr_reference", "expr_array", + "expr_field", "expr_size", "expr_paren", "expr_object", + "expr_thisthread", "expr_empty_array", "expr_undefined", "expr_game", + "expr_self", "expr_anim", "expr_level", "expr_animation", + "expr_animtree", "expr_identifier", "expr_path", "expr_istring", + "expr_string", "expr_color", "expr_vector", "expr_float", "expr_integer", + "expr_false", "expr_true", YY_NULLPTR }; return yy_sname[yysymbol]; } @@ -3832,682 +3876,681 @@ namespace xsk { namespace gsc { namespace iw8 { } - const short parser::yypact_ninf_ = -277; + const short parser::yypact_ninf_ = -279; - const short parser::yytable_ninf_ = -213; + const short parser::yytable_ninf_ = -216; const short parser::yypact_[] = { - 32, -277, -277, -48, -48, -34, -277, 7, 32, -277, - -277, -277, -277, -277, -277, -38, -277, -277, -41, -25, - -69, -277, -277, -277, -277, -51, 1135, -277, -277, -277, - -19, -29, -277, -277, -46, -43, -277, 22, -277, -277, - -277, -277, -277, -277, -277, 56, 60, 1135, 1001, -51, - 1135, 1135, 55, -30, -277, -277, -277, -277, 2131, -277, - -277, -277, -277, -277, 562, 704, -277, -277, -277, -277, - -277, -277, 1024, 1095, -277, -277, 1158, -277, -277, -277, - 1280, 1292, 1302, 1311, -277, -277, 449, 66, -277, -277, - -277, -277, -277, -277, -277, -277, 65, 81, -51, 83, - 89, 88, 97, 104, 100, 106, 1135, 1135, 1349, 1001, - -277, 2214, 105, 107, -277, -277, -277, -277, -277, -277, - -277, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, - 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, - -277, 1202, -51, -277, -277, -277, 113, 109, 1135, -51, - -277, 68, -277, -277, 1135, 1135, -51, 1135, 1135, -51, - 1135, 1515, 1549, -277, 1135, 1861, 1135, -277, 2096, 80, - 80, 2245, 2255, 2327, 2327, -31, -31, -31, -31, 2286, - 712, 2296, -37, -37, -277, -277, -277, 1901, -277, -51, - -28, -277, 127, 801, 1135, 119, -35, 130, 973, 133, - 136, 138, 140, -78, 146, 132, 137, 1068, 151, 148, - 149, -277, 163, 220, 220, -277, -277, -277, 847, -277, - -277, -277, -277, -277, -277, -277, -277, -277, -277, -277, - -277, -277, -277, -277, -277, -277, -277, -277, -277, -277, - -277, -277, -277, 158, 159, 164, 165, 167, -277, -277, - 649, -277, -277, -277, -277, -32, 1941, -4, 182, 1981, - 13, 187, 2021, -277, -277, 2060, 183, 2214, 1135, -277, - 127, -277, 1135, -277, 927, 2166, -277, 188, -277, 1135, - 219, 1135, 72, -51, 1135, 141, 186, 190, -277, -277, - -277, -277, 2201, -277, 1135, 1135, 1135, -277, -277, 139, - 139, -277, -277, -277, -277, -277, -277, -277, 200, 203, - 204, 205, -277, -277, 1135, 1135, 1135, 1135, 1135, 1135, - 1135, 1135, 1135, 1135, 1135, 206, -277, 1135, 213, -277, - 1135, 214, 1135, 208, 2214, 14, -277, -277, 191, 1583, - 210, 1617, 202, -277, -277, -277, 1229, -12, 1651, -277, - -277, -277, 15, 17, 1861, 1135, 1135, 1135, 1135, 2214, - 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, - 222, 23, 223, 26, 225, 1685, 1135, -277, -277, 973, - 1135, 973, 1135, 1135, -51, 81, 221, 228, 1719, 1393, - 1437, 1481, 1135, -277, 1135, -277, 1135, -277, 29, 259, - 1753, -277, 2214, 231, 1787, 257, -277, -277, -277, 232, - 233, 1135, 234, 1135, 238, 1135, 33, 76, 85, -277, - 973, 239, 72, 973, 1135, -277, -277, 249, -277, 254, - -277, 256, -277, -277, -277, -277, -277, 261, -277, 1821, - 248, 250, 255, 973, 973, -277, -277, -277, -277, -277 + 8, -279, -279, 12, 12, -38, -279, 65, 8, -279, + -279, -279, -279, -279, -279, -18, -279, -279, 4, 11, + -72, -279, -279, -279, -279, -29, 974, -279, -279, -279, + 24, -28, -279, -279, -43, -34, -279, 32, -279, -279, + -279, -279, -279, -279, -279, 39, 45, 974, 2, -29, + 974, 974, 48, 9, -279, -279, -279, -279, 2144, -279, + -279, -279, -279, -279, 77, 592, -279, -279, -279, -279, + -279, -279, 704, 934, -279, -279, 997, -279, -279, -279, + 1007, 1293, 1305, 1315, -279, -279, 30, 52, -279, -279, + -279, -279, -279, -279, -279, -279, 69, 90, -29, 92, + 83, 96, 102, 108, 101, 106, 974, 974, 1362, 2, + -279, 2227, 105, 113, -279, -279, -279, -279, -279, -279, + -279, 974, 974, 974, 974, 974, 974, 974, 974, 974, + 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, + -279, 1041, -29, -279, -279, -279, 119, 112, 974, -29, + -279, 825, -279, -279, 974, 974, -29, 974, 974, -29, + 974, 1528, 1562, -279, 974, 1874, 974, -279, 2109, 73, + 73, 2258, 2268, 1303, 1303, 164, 164, 164, 164, 2299, + 1055, 2309, -11, -11, -279, -279, -279, 1914, -279, -29, + 14, -279, 121, 1136, 974, 115, -26, 129, 1238, 130, + 133, 138, 140, -69, 132, 136, 141, 907, 144, 142, + 143, -279, 151, 416, 416, -279, -279, 879, -279, -279, + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + -279, -279, -279, -279, 147, 148, 152, 154, 157, -279, + -279, 712, -279, -279, -279, -279, -23, 1954, 23, 161, + 1994, 34, 168, 2034, -279, -279, 2073, 165, 2227, 974, + -279, 121, -279, 974, -279, -279, 1192, 2179, -279, 170, + -279, 974, 175, 974, 611, -29, 974, 120, 171, 172, + -279, -279, -279, -279, 2214, -279, 974, 974, 974, -279, + -279, 1324, 1324, -279, -279, -279, -279, -279, -279, -279, + 173, 174, 182, 183, -279, -279, 974, 974, 974, 974, + 974, 974, 974, 974, 974, 974, 974, 184, -279, 974, + 187, -279, 974, 188, 974, 194, 2227, 41, -279, -279, + -279, 177, 1596, 195, 1630, 191, -279, -279, -279, 1242, + -1, 1664, -279, -279, -279, 56, 66, 1874, 974, 974, + 974, 974, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, + 2227, 2227, 2227, 202, 68, 213, 72, 214, 1698, 974, + -279, -279, 1238, 974, 1238, 974, 974, -29, 90, 206, + 207, 1732, 1406, 1450, 1494, 974, -279, 974, -279, 974, + -279, 79, 247, 1766, -279, 2227, 209, 1800, 244, -279, + -279, -279, 211, 215, 974, 216, 974, 217, 974, 81, + 85, 88, -279, 1238, 219, 611, 1238, 974, -279, -279, + 232, -279, 233, -279, 234, -279, -279, -279, -279, -279, + 236, -279, 1834, 229, 230, 231, 1238, 1238, -279, -279, + -279, -279, -279 }; const unsigned char parser::yydefact_[] = { - 3, 12, 13, 0, 0, 0, 210, 0, 2, 7, - 8, 9, 14, 15, 16, 0, 211, 212, 0, 0, - 0, 1, 4, 5, 6, 178, 0, 10, 11, 214, - 0, 0, 177, 209, 0, 0, 201, 0, 222, 221, - 203, 204, 205, 206, 207, 0, 0, 0, 180, 0, - 0, 0, 0, 0, 213, 215, 218, 220, 0, 90, - 91, 92, 129, 130, 131, 132, 161, 162, 133, 134, - 135, 136, 137, 138, 139, 140, 0, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 0, 151, 152, - 153, 154, 155, 156, 157, 158, 0, 0, 0, 0, - 212, 0, 0, 212, 0, 0, 0, 0, 0, 180, - 202, 182, 0, 179, 185, 160, 159, 217, 219, 208, + 3, 12, 13, 0, 0, 0, 213, 0, 2, 7, + 8, 9, 14, 15, 16, 0, 214, 215, 0, 0, + 0, 1, 4, 5, 6, 181, 0, 10, 11, 217, + 0, 0, 180, 212, 0, 0, 204, 0, 225, 224, + 206, 207, 208, 209, 210, 0, 0, 0, 183, 0, + 0, 0, 0, 0, 216, 218, 221, 223, 0, 93, + 94, 95, 132, 133, 134, 135, 164, 165, 136, 137, + 138, 139, 140, 141, 142, 143, 0, 144, 145, 146, + 147, 148, 149, 150, 151, 152, 153, 0, 154, 155, + 156, 157, 158, 159, 160, 161, 0, 0, 0, 0, + 215, 0, 0, 215, 0, 0, 0, 0, 0, 183, + 205, 185, 0, 182, 188, 163, 162, 220, 222, 211, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 190, 0, 0, 189, 163, 164, 212, 0, 180, 0, - 17, 0, 19, 176, 0, 180, 0, 0, 180, 0, - 0, 0, 0, 191, 0, 182, 0, 175, 0, 122, - 123, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 124, 125, 126, 127, 128, 0, 188, 0, - 0, 179, 186, 0, 0, 0, 0, 0, 0, 0, + 193, 0, 0, 192, 166, 167, 215, 0, 183, 0, + 17, 0, 19, 179, 0, 183, 0, 0, 183, 0, + 0, 0, 0, 194, 0, 185, 0, 178, 0, 125, + 126, 114, 115, 116, 117, 118, 119, 120, 121, 122, + 123, 124, 127, 128, 129, 130, 131, 0, 191, 0, + 0, 182, 189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 49, 0, 0, 0, 51, 20, 21, 0, 22, - 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, - 43, 44, 45, 0, 0, 0, 192, 193, 194, 195, - 0, 196, 197, 198, 199, 200, 0, 0, 0, 0, - 0, 0, 0, 183, 184, 0, 0, 181, 0, 187, - 0, 165, 180, 47, 0, 0, 69, 0, 70, 0, - 0, 0, 55, 0, 0, 0, 0, 0, 82, 83, - 84, 86, 0, 87, 180, 180, 0, 192, 193, 106, - 108, 48, 50, 58, 59, 60, 56, 57, 0, 0, - 0, 0, 107, 109, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 167, 180, 0, 169, - 180, 0, 0, 0, 110, 0, 46, 64, 0, 0, - 0, 0, 0, 52, 53, 54, 0, 0, 0, 81, - 80, 85, 0, 0, 0, 0, 0, 0, 0, 95, - 101, 102, 103, 104, 105, 96, 97, 98, 100, 99, - 0, 0, 0, 0, 0, 0, 180, 166, 71, 0, - 0, 0, 94, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 180, 168, 180, 170, 180, 216, 0, 72, - 0, 74, 93, 0, 0, 0, 79, 88, 89, 0, - 0, 180, 0, 180, 0, 180, 0, 0, 0, 171, - 0, 0, 55, 0, 0, 61, 63, 179, 66, 179, - 68, 179, 172, 173, 174, 73, 75, 0, 77, 0, - 0, 0, 0, 0, 0, 62, 65, 67, 76, 78 + 0, 54, 0, 0, 0, 45, 50, 0, 46, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 0, 0, 0, 195, 196, 197, + 198, 0, 199, 200, 201, 202, 203, 0, 0, 0, + 0, 0, 0, 0, 186, 187, 0, 0, 184, 0, + 190, 0, 168, 183, 52, 48, 0, 0, 72, 0, + 73, 0, 0, 0, 58, 0, 0, 0, 0, 0, + 85, 86, 87, 89, 0, 90, 183, 183, 0, 195, + 196, 109, 111, 53, 49, 61, 62, 63, 59, 60, + 0, 0, 0, 0, 110, 112, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 170, 183, + 0, 172, 183, 0, 0, 0, 113, 0, 51, 47, + 67, 0, 0, 0, 0, 0, 55, 56, 57, 0, + 0, 0, 84, 83, 88, 0, 0, 0, 0, 0, + 0, 0, 98, 104, 105, 106, 107, 108, 99, 100, + 101, 103, 102, 0, 0, 0, 0, 0, 0, 183, + 169, 74, 0, 0, 0, 97, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 183, 171, 183, 173, 183, + 219, 0, 75, 0, 77, 96, 0, 0, 0, 82, + 91, 92, 0, 0, 183, 0, 183, 0, 183, 0, + 0, 0, 174, 0, 0, 58, 0, 0, 64, 66, + 182, 69, 182, 71, 182, 175, 176, 177, 76, 78, + 0, 80, 0, 0, 0, 0, 0, 0, 65, 68, + 70, 79, 81 }; const short parser::yypgoto_[] = { - -277, -277, -277, 281, 309, 310, -277, -277, -277, 207, - -277, -95, 150, -81, -277, -277, -277, -277, -277, -277, - -277, -277, -277, -277, -277, -277, -277, -277, -277, -277, - -277, -277, -277, -277, -277, -277, -277, -277, 201, -277, - -276, -269, -268, -277, -277, -277, -277, -277, -66, -7, - -65, -55, -277, -277, 306, -47, -277, -277, -277, 12, - 19, -277, -277, 196, -277, -277, -277, 253, 333, 347, - 378, -277, -277, 0, 6, -277, -15, -277, -277, -277, - 142, -277, -277 + -279, -279, -279, 289, 292, 295, -279, -279, -279, -181, + 87, -279, -279, -279, -96, -127, -279, -279, -279, -279, + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + 203, -279, -278, -273, -270, -279, -279, -279, -279, -279, + -32, -7, -71, -63, -279, -279, -33, -46, -279, -279, + -279, 256, 262, -279, -279, 290, -279, -279, -279, 317, + 343, 392, 399, -279, -279, 0, 6, -279, -13, -279, + -279, -279, 103, -279, -279 }; const short parser::yydefgoto_[] = { 0, 7, 8, 9, 10, 11, 12, 13, 14, 215, - 216, 217, 218, 342, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, - 235, 236, 237, 238, 239, 240, 241, 242, 111, 403, - 243, 244, 245, 59, 60, 61, 62, 63, 64, 65, - 66, 67, 68, 31, 112, 191, 69, 70, 71, 72, - 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - 93, 94, 95 + 216, 276, 217, 218, 219, 345, 220, 221, 222, 223, + 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, + 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, + 111, 406, 244, 245, 246, 59, 60, 61, 62, 63, + 64, 65, 66, 67, 68, 31, 112, 191, 69, 70, + 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, + 91, 92, 93, 94, 95 }; const short parser::yytable_[] = { - 15, 113, 152, 17, 17, 30, 343, 21, 15, 18, - 19, 144, 99, 344, 345, 102, 25, 285, 383, 277, - 20, 145, 148, 27, 29, 32, 97, 271, 57, 278, - -212, 98, 166, 29, 100, 103, 96, 122, 123, 28, - 101, 104, 26, 1, 2, 3, 4, 5, 384, 114, - 6, 326, 16, 6, 16, 6, 166, 16, 6, 137, - 138, 139, 113, 135, 136, 137, 138, 139, 329, 377, - 386, 119, 387, 166, 166, 166, 146, 166, 393, 193, - 105, 395, 147, 166, 419, 246, 166, 194, 432, 166, - 195, 196, 197, 166, 198, 199, 200, 201, 153, 202, + 15, 152, 113, 17, 17, 144, 346, 30, 15, 18, + 19, 347, 275, 145, 348, 99, 20, 282, 33, 1, + 2, 3, 4, 5, 102, 32, 287, 97, 279, 386, + 29, 148, 98, 29, 100, 103, 25, 57, 280, -215, + 101, 104, 34, 35, 36, 37, 38, 39, 40, 114, + 41, 42, 43, 44, 45, 46, 47, 16, 6, 387, + 109, 110, 26, 113, 49, 21, 16, 6, 27, 272, + -203, -203, 6, -203, 166, 28, 146, -203, 328, 96, + 50, 51, 147, 166, 148, 137, 138, 139, -203, 331, + 105, -203, -215, 106, 166, 339, 380, 52, 153, 107, + 53, 166, 16, 6, 29, 54, 55, 56, 57, 6, + 119, 389, 16, 6, 149, 190, 166, -195, -195, 247, + -195, 390, 258, 396, -195, 261, 166, 398, 166, -203, + -203, -203, 166, 150, 422, -195, 435, 155, -195, 166, + 436, 166, 188, 437, 248, 166, 151, 346, 166, 192, + 154, 256, 347, 117, 118, 348, 259, 147, 156, 262, + 157, 247, 158, 159, 160, 166, 247, 135, 136, 137, + 138, 139, 167, 148, 189, 273, -195, -195, -195, 278, + 144, 299, 299, 281, 283, 247, 248, 284, 145, 271, + 288, 248, 285, 256, 286, 290, 296, 297, 256, 147, + 291, 402, 343, 404, 147, 292, 300, 300, 295, 298, + 248, 305, 306, 256, 256, 329, 307, 256, 308, 147, + 147, 309, 332, 147, 335, 341, 118, 358, 359, 58, + 144, 144, 122, 123, 352, 353, 360, 361, 145, 145, + 337, 381, 438, 373, 247, 441, 375, 377, 379, 383, + 108, 146, 299, 115, 116, 385, 395, 147, 135, 136, + 137, 138, 139, 355, 356, 451, 452, 397, 399, 248, + 410, 411, 423, 425, 427, 428, 256, 300, 144, 429, + 431, 433, 147, 439, 256, 350, 145, 443, 444, 445, + 147, 446, 409, 448, 449, 450, 374, 22, 440, 376, + 23, 146, 146, 24, 304, 0, 289, 147, 147, 161, + 162, 0, 165, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 168, 169, 170, 171, 172, 173, + 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, + 184, 185, 186, 0, 187, 0, 401, 0, 0, 146, + 247, 0, 247, 0, 0, 147, 0, 257, 0, 0, + 260, 0, 419, 263, 420, 0, 421, 266, 430, 268, + 432, 0, 434, 0, 0, 248, 0, 248, 0, 0, + 0, 0, 256, 0, 256, 0, 0, 408, 147, 0, + 147, 247, 0, 299, 247, 0, 0, 277, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 249, 0, 0, + 294, 0, 0, 250, 247, 247, 248, 0, 300, 248, + 0, 0, 0, 256, 0, 256, 256, 0, 0, 147, + 0, 147, 147, 0, 0, 0, 0, 0, 0, 248, + 248, 251, 0, 0, 0, 0, 256, 256, 0, 249, + 0, 0, 147, 147, 249, 250, 34, 35, 0, 37, + 250, 0, 0, 0, 41, 42, 43, 44, 252, 249, + 249, 0, 336, 249, 212, 250, 250, 0, 0, 250, + 0, 0, 0, 251, 342, 0, 344, 0, 251, 351, + 0, 0, 0, 0, 253, 0, 0, 0, 0, 0, + 0, 357, 0, 301, 302, 0, 0, 251, 0, 0, + 252, 0, 0, 0, 0, 252, 16, 6, 0, 362, + 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, + 252, 252, 249, 0, 252, 0, 253, 378, 250, 0, + 249, 253, 0, 254, 0, 0, 250, 0, 0, 0, + 255, 0, 0, 0, 0, 0, 253, 253, 0, 0, + 253, 391, 392, 393, 394, 0, 251, 0, 0, 0, + 0, 0, 0, 0, 349, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 254, 403, 0, 405, 407, + 254, 0, 255, 252, 0, 0, 0, 255, 0, 0, + 0, 252, 0, 0, 0, 254, 254, 0, 0, 254, + 0, 0, 255, 255, 0, 0, 255, 0, 0, 253, + 0, 0, 0, 0, 0, 0, 0, 253, 0, 0, + 442, 0, -196, -196, 0, -196, 0, 0, 249, -196, + 249, 0, 0, 0, 250, 0, 250, 0, 0, 0, + -196, 34, 35, -196, 37, 0, 0, 0, 0, 41, + 42, 43, 44, 0, 0, 0, 0, 0, 254, 212, + 0, 0, 251, 0, 251, 255, 254, 213, 214, 249, + 0, 249, 249, 255, 0, 250, 0, 250, 250, 0, + 0, -196, -196, -196, 0, 0, 0, 0, 0, 252, + 0, 252, 249, 249, 0, 0, 0, 0, 250, 250, + 0, 16, 6, 251, 0, 349, 251, 0, 0, 0, + 0, 0, 0, 0, 0, 253, 0, 253, 0, 310, + 311, 0, 312, 313, 0, 0, 251, 251, 0, 0, + 252, 0, 252, 252, -197, -197, 0, -197, 0, 0, + 0, -197, 34, 35, 0, 37, 0, 0, 0, 0, + 0, 0, -197, 252, 252, -197, 253, 0, 253, 253, + 141, 0, 0, 142, 254, 0, 254, 0, 314, 315, + 0, 255, 0, 255, 0, 0, 0, 0, 0, 253, + 253, 0, 316, 317, 318, 319, 320, 321, 322, 323, + 324, 325, 326, -197, -197, -197, 0, 0, 0, 0, + 0, 143, 16, 6, 0, 254, 0, 254, 254, 0, + 0, 0, 255, 0, 255, 255, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 193, 0, 254, 254, + 0, 0, 0, 0, 194, 255, 255, 195, 196, 197, + 0, 198, 199, 200, 201, 0, 202, 203, 204, 205, + 206, 207, 208, 209, 210, 34, 35, 0, 37, 0, + 0, 0, 0, 41, 42, 43, 44, 0, 0, 0, + 0, 151, 211, 212, 0, 0, 0, 0, 0, 0, + 193, 213, 214, 0, 0, 0, 0, 0, 194, 0, + 0, 195, 196, 197, 0, 198, 199, 200, 201, 0, + 202, 203, 204, 205, 206, 207, 208, 209, 210, 34, + 35, 0, 37, 33, 0, 16, 6, 41, 42, 43, + 44, 0, 0, 0, 0, 151, 303, 212, 0, 0, + 0, 0, 0, 0, 0, 213, 214, 34, 35, 36, + 37, 38, 39, 40, 0, 41, 42, 43, 44, 45, + 46, 47, 0, 0, 0, 48, 0, 0, 0, 49, + 0, 293, 0, 0, -198, -198, 0, -198, 0, 16, + 6, -198, 0, 0, 0, 50, 51, 0, 0, 0, + 33, 0, -198, 0, 0, -198, 0, 0, 0, 0, + 0, 0, 52, 0, 0, 53, 0, 16, 6, 29, + 54, 55, 56, 57, 34, 35, 36, 37, 38, 39, + 40, 0, 41, 42, 43, 44, 45, 46, 47, 0, + 0, 0, 48, -198, -198, -198, 49, 34, 35, 0, + 37, 0, 0, 0, 140, 0, 0, -199, -199, 0, + -199, 0, 50, 51, -199, 141, 0, 33, 142, 0, + 0, 0, 0, 0, 0, -199, 0, 0, -199, 52, + 0, 0, 53, 0, 16, 6, 29, 54, 55, 56, + 57, 34, 35, 36, 37, 38, 39, 40, 0, 41, + 42, 43, 44, 45, 46, 47, 143, 16, 6, 109, + 0, 0, 0, 49, 0, 0, -199, -199, -199, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, + 51, 0, 0, 122, 123, 0, 0, 126, 127, 128, + 129, 130, 131, 0, 0, 0, 52, 0, 0, 53, + 0, 16, 6, 29, 54, 55, 56, 57, 274, 135, + 136, 137, 138, 139, 0, 194, 0, 0, 195, 196, + 197, 0, 198, 199, 200, 201, 0, 202, 203, 204, + 205, 206, 207, 208, 209, 210, 34, 35, 0, 37, + 0, 0, 0, 0, 41, 42, 43, 44, 0, 0, + 0, 0, 151, 0, 212, 0, 0, 0, 0, 0, + 0, 0, 213, 214, 338, 0, 0, 0, 0, 0, + 0, 194, 0, 0, 195, 196, 197, 0, 198, 199, + 200, 201, 0, 202, 203, 204, 205, 206, 207, 208, + 209, 210, 34, 35, 0, 37, 16, 6, 0, 0, + 41, 42, 43, 44, 0, 0, 0, 0, 151, 0, + 212, 0, 0, 0, 0, 0, 0, 194, 213, 214, + 195, 196, 197, 0, 198, 199, 200, 201, 0, 202, 203, 204, 205, 206, 207, 208, 209, 210, 34, 35, - 106, 37, 34, 35, 107, 37, 41, 42, 43, 44, - 41, 42, 43, 44, 151, 211, 212, 246, 149, 150, - 212, 433, 246, 6, 213, 214, 166, 151, 213, 214, - 434, 154, 188, 155, 247, 166, 343, 297, 297, 192, - 156, 255, 246, 344, 345, 157, 258, 147, 158, 261, - 117, 118, 159, 248, 160, 166, 167, 148, 16, 6, - 249, 189, 16, 6, 135, 136, 137, 138, 139, 34, - 35, 272, 37, 276, 279, 144, 247, 281, 286, 270, - 282, 247, 283, 255, 284, 145, 289, 141, 255, 147, - 142, 290, 294, 295, 147, 248, 298, 298, 246, 288, - 248, 247, 249, 255, 255, 293, 297, 249, 255, 147, - 147, 296, 303, 304, 147, 248, 248, 58, 305, 306, - 248, 307, 249, 249, 144, 144, 327, 249, 143, 16, - 6, 330, 333, 338, 145, 145, 340, 118, 108, 349, - 146, 115, 116, 350, 355, 378, 147, 356, 357, 358, - 34, 35, 376, 37, 380, 370, 382, 247, 41, 42, - 43, 44, 372, 374, 255, 298, 392, 394, 212, 396, - 147, 144, 255, 347, 420, 407, 248, 424, 147, 22, - 406, 145, 408, 249, 248, 422, 425, 426, 428, 146, - 146, 249, 430, 436, 440, 147, 147, 161, 162, 441, - 165, 442, 445, 246, 446, 246, 443, 23, 24, 447, - 16, 6, 168, 169, 170, 171, 172, 173, 174, 175, - 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, - 186, 437, 187, 274, 0, 287, 146, 250, 0, 0, - 0, 0, 147, 0, 246, 256, 297, 246, 259, 0, - 0, 262, 0, 0, 427, 265, 429, 267, 431, 0, - 0, 0, 247, 0, 247, 0, 0, 246, 246, 255, - 0, 255, 0, 0, 405, 147, 0, 147, 0, 250, - 0, 248, 0, 248, 250, 275, 0, 0, 249, 0, - 249, 0, 0, 0, 251, 280, 0, 0, 292, 299, - 300, 0, 0, 247, 250, 298, 247, 0, 0, 0, - 255, 0, 255, 255, 0, 302, 147, 0, 147, 147, - 0, 0, 248, 0, 248, 248, 247, 247, 0, 249, - 0, 249, 249, 255, 255, 0, 251, 0, 0, 147, - 147, 251, 0, 0, 190, 248, 248, 0, 0, 0, - 0, 257, 249, 249, 260, 0, 251, 251, 0, 334, - 250, 251, 0, 0, 0, 0, 0, 0, 346, 0, - 339, 302, 341, 0, 252, 348, 0, 0, 0, -200, - -200, 0, -200, 0, 0, 0, -200, 354, 253, 0, - 0, 0, 0, 148, 0, 0, 0, -200, 0, 0, - -200, -212, 0, 0, 0, 359, 360, 361, 362, 363, - 364, 365, 366, 367, 368, 369, 252, 251, 0, 254, - 0, 252, 0, 375, 0, 251, 0, 0, 0, 0, - 253, 0, 0, 0, 0, 253, 252, 252, -200, -200, - -200, 252, 0, 0, 0, 0, 388, 389, 390, 391, - 253, 253, 0, 0, 0, 253, 0, 0, 0, 0, - 0, 254, 0, 0, 0, 250, 254, 250, 335, 0, - 0, 400, 0, 402, 404, 0, 399, 0, 401, 0, - 0, 254, 254, 0, 0, 0, 254, 0, 0, 0, - 352, 353, -192, -192, 0, -192, 0, 252, 0, -192, - 0, 0, 0, 0, 0, 252, 250, 0, 346, 250, - -192, 253, 0, -192, 0, 439, 0, 435, 0, 253, - 438, 0, 251, 371, 251, 0, 373, 0, 0, 250, - 250, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 448, 449, 254, 0, 0, 0, 0, 0, 0, 0, - 254, -192, -192, -192, 0, 0, 308, 309, 0, 310, - 311, 0, 0, 251, 0, 251, 251, 0, 0, 0, - 0, 0, 398, 0, 0, 0, 0, 0, 0, 34, - 35, 0, 37, 0, 0, 0, 251, 251, 416, 0, - 417, 0, 418, 0, 0, 0, 0, 141, 0, 0, - 142, 0, 252, 0, 252, 312, 313, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 253, 0, 253, 314, - 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, - 0, 0, 0, 0, -193, -193, 0, -193, 143, 16, - 6, -193, 0, 252, 0, 252, 252, 254, 0, 254, - 0, 0, -193, 0, 0, -193, 0, 253, 0, 253, - 253, 0, 0, 0, 0, 0, 252, 252, 0, 0, - 122, 123, 0, 0, 126, 127, 128, 129, 130, 131, - 253, 253, 0, 0, 0, 0, 0, 0, 254, 0, - 254, 254, 0, -193, -193, -193, 135, 136, 137, 138, - 139, 0, 193, 273, 0, 0, 0, 0, 0, 0, - 194, 254, 254, 195, 196, 197, 0, 198, 199, 200, - 201, 0, 202, 203, 204, 205, 206, 207, 208, 209, - 210, 34, 35, 0, 37, 0, 0, 0, 0, 41, - 42, 43, 44, 0, 0, 0, 0, 151, 193, 212, - 0, 0, 0, 0, 0, 0, 194, 213, 214, 195, - 196, 197, 0, 198, 199, 200, 201, 0, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 34, 35, 0, - 37, 0, 0, 0, 0, 41, 42, 43, 44, 0, - 0, 16, 6, 151, 301, 212, 0, 0, 0, 0, - 0, 0, 0, 213, 214, 0, 0, 0, 0, 0, + 0, 37, 34, 35, 0, 37, 41, 42, 43, 44, + 0, 0, 16, 6, 151, 0, 212, 0, 0, 0, + 141, 0, 0, 142, 213, 214, 0, 0, 314, 315, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 193, 336, - 0, 0, 0, 0, 0, 0, 194, 16, 6, 195, - 196, 197, 0, 198, 199, 200, 201, 0, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 34, 35, 0, - 37, 0, 0, 0, 0, 41, 42, 43, 44, 0, - 0, 0, 0, 151, 193, 212, 0, 0, 0, 0, - 0, 0, 194, 213, 214, 195, 196, 197, 0, 198, - 199, 200, 201, 0, 202, 203, 204, 205, 206, 207, - 208, 209, 210, 34, 35, 0, 37, 33, 0, 0, - 0, 41, 42, 43, 44, 0, 0, 16, 6, 151, - 0, 212, 0, 0, 0, 0, 0, 0, 0, 213, - 214, 34, 35, 36, 37, 38, 39, 40, 0, 41, - 42, 43, 44, 45, 46, 47, 0, 0, 0, 109, - 110, 0, 0, 49, -194, -194, 0, -194, 0, 0, - 0, -194, 0, 16, 6, 0, 0, 0, 0, 50, - 51, 0, -194, 0, 33, -194, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 52, 0, 0, 53, - 0, 16, 6, 29, 54, 55, 56, 57, 34, 35, - 36, 37, 38, 39, 40, 0, 41, 42, 43, 44, - 45, 46, 47, -194, -194, -194, 48, 0, 0, 0, - 49, 0, 291, 0, 0, -195, -195, 0, -195, 0, - 0, 0, -195, 0, 0, 0, 50, 51, 0, 0, - 0, 33, 0, -195, 0, 0, -195, 0, 0, 0, - 0, 0, 0, 52, 0, 0, 53, 0, 16, 6, - 29, 54, 55, 56, 57, 34, 35, 36, 37, 38, - 39, 40, 0, 41, 42, 43, 44, 45, 46, 47, - 0, 0, 0, 48, -195, -195, -195, 49, 34, 35, - 0, 37, 0, 0, 0, 140, 0, 0, 0, 0, - 0, 0, 0, 50, 51, 0, 141, 0, 33, 142, + 0, 0, 316, 317, 318, 319, 320, 321, 322, 323, + 324, 325, 326, -200, -200, 0, -200, 0, 16, 6, + -200, 143, 16, 6, 0, -201, -201, 0, -201, 0, + 0, -200, -201, 0, -200, -202, -202, 0, -202, 0, + 0, 0, -202, -201, 34, 35, -201, 37, 0, 0, + 0, 122, 123, -202, 0, 0, -202, 128, 129, 130, + 131, 0, 141, 0, 0, 142, 0, 0, 0, 0, + 0, 0, -200, -200, -200, 0, 0, 135, 136, 137, + 138, 139, 0, 0, -201, -201, -201, 0, 0, 0, + 0, 0, 0, 0, -202, -202, -202, 163, 0, 0, + 0, 0, 164, 143, 16, 6, 0, 121, 0, 0, + 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 52, 0, 0, 53, 0, 16, 6, 29, 54, 55, - 56, 57, 34, 35, 36, 37, 38, 39, 40, 0, - 41, 42, 43, 44, 45, 46, 47, 143, 16, 6, - 109, 0, 0, 0, 49, 0, 0, 0, 0, 34, - 35, 0, 37, 0, 0, 0, 0, 0, 0, 0, - 50, 51, 0, 0, 0, 0, 0, 141, 0, 0, - 142, 0, 0, 0, 0, 312, 313, 52, 0, 0, - 53, 0, 16, 6, 29, 54, 55, 56, 57, 314, - 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, - -196, -196, 0, -196, 0, 0, 0, -196, 143, 16, - 6, 0, -197, -197, 0, -197, 0, 0, -196, -197, - 0, -196, -198, -198, 0, -198, 0, 0, 0, -198, - -197, -199, -199, -197, -199, 0, 0, 0, -199, 0, - -198, 0, 0, -198, 0, 0, 0, 0, 0, -199, - 0, 0, -199, 0, 0, 0, 0, 0, 0, -196, - -196, -196, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -197, -197, -197, 0, 0, 0, 0, 0, 0, - 0, -198, -198, -198, 163, 0, 0, 0, 0, 164, - -199, -199, -199, 0, 121, 0, 0, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 132, 133, 134, 135, 136, 137, 138, 139, 410, 0, - 0, 0, 0, 411, 0, 0, 0, 0, 121, 0, - 0, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 132, 133, 134, 135, 136, 137, - 138, 139, 412, 0, 0, 0, 0, 413, 0, 0, - 0, 0, 121, 0, 0, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 132, 133, - 134, 135, 136, 137, 138, 139, 414, 0, 0, 0, - 0, 415, 0, 0, 0, 0, 121, 0, 0, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 263, 0, 132, 133, 134, 135, 136, 137, 138, 139, - 121, 0, 0, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 264, 0, 132, 133, 134, 135, - 136, 137, 138, 139, 121, 0, 0, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 379, 0, - 132, 133, 134, 135, 136, 137, 138, 139, 121, 0, - 0, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 381, 0, 132, 133, 134, 135, 136, 137, - 138, 139, 121, 0, 0, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 385, 0, 132, 133, - 134, 135, 136, 137, 138, 139, 121, 0, 0, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 397, 0, 132, 133, 134, 135, 136, 137, 138, 139, - 121, 0, 0, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 409, 0, 132, 133, 134, 135, - 136, 137, 138, 139, 121, 0, 0, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 421, 0, - 132, 133, 134, 135, 136, 137, 138, 139, 121, 0, - 0, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 423, 0, 132, 133, 134, 135, 136, 137, - 138, 139, 121, 0, 0, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 444, 0, 132, 133, - 134, 135, 136, 137, 138, 139, 121, 0, 0, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 132, 133, 134, 135, 136, 137, 138, 139, - 266, 0, 0, 0, 0, 0, 121, 0, 0, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 132, 133, 134, 135, 136, 137, 138, 139, - 269, 0, 0, 0, 0, 0, 121, 0, 0, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 132, 133, 134, 135, 136, 137, 138, 139, - 325, 0, 0, 0, 0, 0, 121, 0, 0, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 132, 133, 134, 135, 136, 137, 138, 139, - 328, 0, 0, 0, 0, 0, 121, 0, 0, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 132, 133, 134, 135, 136, 137, 138, 139, - 331, 0, 0, 0, 0, 0, 121, 0, 0, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 132, 133, 134, 135, 136, 137, 138, 139, - 332, 0, 0, 0, 0, 121, 0, 0, 122, 123, - 124, 125, 126, 127, 128, 129, 130, 131, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 132, 133, 134, 135, 136, 137, 138, 139, 268, + 0, 0, 0, 132, 133, 134, 135, 136, 137, 138, + 139, 413, 0, 0, 0, 0, 414, 0, 0, 0, 0, 121, 0, 0, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 132, 133, 134, - 135, 136, 137, 138, 139, 120, 121, 0, 0, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 0, + 135, 136, 137, 138, 139, 415, 0, 0, 0, 0, + 416, 0, 0, 0, 0, 121, 0, 0, 122, 123, + 124, 125, 126, 127, 128, 129, 130, 131, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 132, 133, 134, 135, 136, 137, 138, 139, - 337, 121, 0, 0, 122, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 132, 133, 134, - 135, 136, 137, 138, 139, 351, 121, 0, 0, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 121, + 0, 132, 133, 134, 135, 136, 137, 138, 139, 417, + 0, 0, 0, 0, 418, 0, 0, 0, 0, 121, 0, 0, 122, 123, 124, 125, 126, 127, 128, 129, - 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, - 0, 0, 0, 0, 0, 132, 133, 134, 135, 136, - 137, 138, 139, 122, 123, 0, 125, 126, 127, 128, - 129, 130, 131, 122, 123, 0, 0, 126, 127, 128, - 129, 130, 131, 0, 0, 0, 132, 133, 134, 135, - 136, 137, 138, 139, 0, 0, 132, 133, 134, 135, - 136, 137, 138, 139, 122, 123, 0, 0, 126, 127, - 128, 129, 130, 131, 122, 123, 0, 0, 126, 127, - 128, 129, 130, 131, 0, 0, 0, 0, 133, 134, - 135, 136, 137, 138, 139, 0, 0, 0, 133, 0, - 135, 136, 137, 138, 139, 122, 123, 0, 0, 0, - 0, 128, 129, 130, 131, 0, 0, 0, 0, 0, + 130, 131, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 264, 0, 132, 133, 134, 135, 136, + 137, 138, 139, 121, 0, 0, 122, 123, 124, 125, + 126, 127, 128, 129, 130, 131, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 265, 0, 132, + 133, 134, 135, 136, 137, 138, 139, 121, 0, 0, + 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 135, 136, 137, 138, 139 + 0, 382, 0, 132, 133, 134, 135, 136, 137, 138, + 139, 121, 0, 0, 122, 123, 124, 125, 126, 127, + 128, 129, 130, 131, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 384, 0, 132, 133, 134, + 135, 136, 137, 138, 139, 121, 0, 0, 122, 123, + 124, 125, 126, 127, 128, 129, 130, 131, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 388, + 0, 132, 133, 134, 135, 136, 137, 138, 139, 121, + 0, 0, 122, 123, 124, 125, 126, 127, 128, 129, + 130, 131, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 400, 0, 132, 133, 134, 135, 136, + 137, 138, 139, 121, 0, 0, 122, 123, 124, 125, + 126, 127, 128, 129, 130, 131, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 412, 0, 132, + 133, 134, 135, 136, 137, 138, 139, 121, 0, 0, + 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 424, 0, 132, 133, 134, 135, 136, 137, 138, + 139, 121, 0, 0, 122, 123, 124, 125, 126, 127, + 128, 129, 130, 131, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 426, 0, 132, 133, 134, + 135, 136, 137, 138, 139, 121, 0, 0, 122, 123, + 124, 125, 126, 127, 128, 129, 130, 131, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 447, + 0, 132, 133, 134, 135, 136, 137, 138, 139, 121, + 0, 0, 122, 123, 124, 125, 126, 127, 128, 129, + 130, 131, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 132, 133, 134, 135, 136, + 137, 138, 139, 267, 0, 0, 0, 0, 0, 121, + 0, 0, 122, 123, 124, 125, 126, 127, 128, 129, + 130, 131, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 132, 133, 134, 135, 136, + 137, 138, 139, 270, 0, 0, 0, 0, 0, 121, + 0, 0, 122, 123, 124, 125, 126, 127, 128, 129, + 130, 131, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 132, 133, 134, 135, 136, + 137, 138, 139, 327, 0, 0, 0, 0, 0, 121, + 0, 0, 122, 123, 124, 125, 126, 127, 128, 129, + 130, 131, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 132, 133, 134, 135, 136, + 137, 138, 139, 330, 0, 0, 0, 0, 0, 121, + 0, 0, 122, 123, 124, 125, 126, 127, 128, 129, + 130, 131, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 132, 133, 134, 135, 136, + 137, 138, 139, 333, 0, 0, 0, 0, 0, 121, + 0, 0, 122, 123, 124, 125, 126, 127, 128, 129, + 130, 131, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 132, 133, 134, 135, 136, + 137, 138, 139, 334, 0, 0, 0, 0, 121, 0, + 0, 122, 123, 124, 125, 126, 127, 128, 129, 130, + 131, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 132, 133, 134, 135, 136, 137, + 138, 139, 269, 0, 121, 0, 0, 122, 123, 124, + 125, 126, 127, 128, 129, 130, 131, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 132, 133, 134, 135, 136, 137, 138, 139, 120, 121, + 0, 0, 122, 123, 124, 125, 126, 127, 128, 129, + 130, 131, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 132, 133, 134, 135, 136, + 137, 138, 139, 340, 121, 0, 0, 122, 123, 124, + 125, 126, 127, 128, 129, 130, 131, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 132, 133, 134, 135, 136, 137, 138, 139, 354, 121, + 0, 0, 122, 123, 124, 125, 126, 127, 128, 129, + 130, 131, 121, 0, 0, 122, 123, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, + 137, 138, 139, 0, 0, 0, 0, 0, 132, 133, + 134, 135, 136, 137, 138, 139, 122, 123, 0, 125, + 126, 127, 128, 129, 130, 131, 122, 123, 0, 0, + 126, 127, 128, 129, 130, 131, 0, 0, 0, 132, + 133, 134, 135, 136, 137, 138, 139, 0, 0, 132, + 133, 134, 135, 136, 137, 138, 139, 122, 123, 0, + 0, 126, 127, 128, 129, 130, 131, 122, 123, 0, + 0, 126, 127, 128, 129, 130, 131, 0, 0, 0, + 0, 133, 134, 135, 136, 137, 138, 139, 0, 0, + 0, 133, 0, 135, 136, 137, 138, 139 }; const short parser::yycheck_[] = { - 0, 48, 97, 3, 4, 20, 282, 0, 8, 3, - 4, 76, 58, 282, 282, 58, 54, 95, 30, 54, - 54, 76, 54, 64, 102, 25, 55, 55, 106, 64, - 62, 60, 60, 102, 34, 35, 55, 68, 69, 64, - 34, 35, 80, 11, 12, 13, 14, 15, 60, 49, - 101, 55, 100, 101, 100, 101, 60, 100, 101, 96, - 97, 98, 109, 94, 95, 96, 97, 98, 55, 55, - 55, 101, 55, 60, 60, 60, 76, 60, 55, 11, - 58, 55, 76, 60, 55, 151, 60, 19, 55, 60, - 22, 23, 24, 60, 26, 27, 28, 29, 98, 31, + 0, 97, 48, 3, 4, 76, 284, 20, 8, 3, + 4, 284, 193, 76, 284, 58, 54, 198, 16, 11, + 12, 13, 14, 15, 58, 25, 95, 55, 54, 30, + 102, 54, 60, 102, 34, 35, 54, 106, 64, 62, + 34, 35, 40, 41, 42, 43, 44, 45, 46, 49, + 48, 49, 50, 51, 52, 53, 54, 100, 101, 60, + 58, 59, 80, 109, 62, 0, 100, 101, 64, 55, + 40, 41, 101, 43, 60, 64, 76, 47, 55, 55, + 78, 79, 76, 60, 54, 96, 97, 98, 58, 55, + 58, 61, 62, 54, 60, 276, 55, 95, 98, 54, + 98, 60, 100, 101, 102, 103, 104, 105, 106, 101, + 101, 55, 100, 101, 62, 148, 60, 40, 41, 151, + 43, 55, 155, 55, 47, 158, 60, 55, 60, 99, + 100, 101, 60, 64, 55, 58, 55, 54, 61, 60, + 55, 60, 142, 55, 151, 60, 56, 425, 60, 149, + 58, 151, 425, 105, 106, 425, 156, 151, 62, 159, + 58, 193, 54, 62, 58, 60, 198, 94, 95, 96, + 97, 98, 59, 54, 62, 54, 99, 100, 101, 64, + 251, 213, 214, 54, 54, 217, 193, 54, 251, 189, + 203, 198, 54, 193, 54, 63, 54, 54, 198, 193, + 64, 382, 27, 384, 198, 64, 213, 214, 64, 58, + 217, 64, 64, 213, 214, 54, 64, 217, 64, 213, + 214, 64, 54, 217, 59, 55, 106, 54, 54, 26, + 301, 302, 68, 69, 63, 63, 54, 54, 301, 302, + 273, 64, 423, 59, 276, 426, 59, 59, 54, 54, + 47, 251, 284, 50, 51, 64, 54, 251, 94, 95, + 96, 97, 98, 296, 297, 446, 447, 54, 54, 276, + 64, 64, 25, 64, 30, 64, 276, 284, 349, 64, + 64, 64, 276, 64, 284, 285, 349, 55, 55, 55, + 284, 55, 388, 64, 64, 64, 329, 8, 425, 332, + 8, 301, 302, 8, 217, -1, 203, 301, 302, 106, + 107, -1, 109, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 121, 122, 123, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, + 137, 138, 139, -1, 141, -1, 379, -1, -1, 349, + 382, -1, 384, -1, -1, 349, -1, 154, -1, -1, + 157, -1, 395, 160, 397, -1, 399, 164, 414, 166, + 416, -1, 418, -1, -1, 382, -1, 384, -1, -1, + -1, -1, 382, -1, 384, -1, -1, 387, 382, -1, + 384, 423, -1, 425, 426, -1, -1, 194, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 151, -1, -1, + 207, -1, -1, 151, 446, 447, 423, -1, 425, 426, + -1, -1, -1, 423, -1, 425, 426, -1, -1, 423, + -1, 425, 426, -1, -1, -1, -1, -1, -1, 446, + 447, 151, -1, -1, -1, -1, 446, 447, -1, 193, + -1, -1, 446, 447, 198, 193, 40, 41, -1, 43, + 198, -1, -1, -1, 48, 49, 50, 51, 151, 213, + 214, -1, 269, 217, 58, 213, 214, -1, -1, 217, + -1, -1, -1, 193, 281, -1, 283, -1, 198, 286, + -1, -1, -1, -1, 151, -1, -1, -1, -1, -1, + -1, 298, -1, 213, 214, -1, -1, 217, -1, -1, + 193, -1, -1, -1, -1, 198, 100, 101, -1, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, + 213, 214, 276, -1, 217, -1, 193, 334, 276, -1, + 284, 198, -1, 151, -1, -1, 284, -1, -1, -1, + 151, -1, -1, -1, -1, -1, 213, 214, -1, -1, + 217, 358, 359, 360, 361, -1, 276, -1, -1, -1, + -1, -1, -1, -1, 284, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 193, 383, -1, 385, 386, + 198, -1, 193, 276, -1, -1, -1, 198, -1, -1, + -1, 284, -1, -1, -1, 213, 214, -1, -1, 217, + -1, -1, 213, 214, -1, -1, 217, -1, -1, 276, + -1, -1, -1, -1, -1, -1, -1, 284, -1, -1, + 427, -1, 40, 41, -1, 43, -1, -1, 382, 47, + 384, -1, -1, -1, 382, -1, 384, -1, -1, -1, + 58, 40, 41, 61, 43, -1, -1, -1, -1, 48, + 49, 50, 51, -1, -1, -1, -1, -1, 276, 58, + -1, -1, 382, -1, 384, 276, 284, 66, 67, 423, + -1, 425, 426, 284, -1, 423, -1, 425, 426, -1, + -1, 99, 100, 101, -1, -1, -1, -1, -1, 382, + -1, 384, 446, 447, -1, -1, -1, -1, 446, 447, + -1, 100, 101, 423, -1, 425, 426, -1, -1, -1, + -1, -1, -1, -1, -1, 382, -1, 384, -1, 17, + 18, -1, 20, 21, -1, -1, 446, 447, -1, -1, + 423, -1, 425, 426, 40, 41, -1, 43, -1, -1, + -1, 47, 40, 41, -1, 43, -1, -1, -1, -1, + -1, -1, 58, 446, 447, 61, 423, -1, 425, 426, + 58, -1, -1, 61, 382, -1, 384, -1, 66, 67, + -1, 382, -1, 384, -1, -1, -1, -1, -1, 446, + 447, -1, 80, 81, 82, 83, 84, 85, 86, 87, + 88, 89, 90, 99, 100, 101, -1, -1, -1, -1, + -1, 99, 100, 101, -1, 423, -1, 425, 426, -1, + -1, -1, 423, -1, 425, 426, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 11, -1, 446, 447, + -1, -1, -1, -1, 19, 446, 447, 22, 23, 24, + -1, 26, 27, 28, 29, -1, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, -1, 43, -1, + -1, -1, -1, 48, 49, 50, 51, -1, -1, -1, + -1, 56, 57, 58, -1, -1, -1, -1, -1, -1, + 11, 66, 67, -1, -1, -1, -1, -1, 19, -1, + -1, 22, 23, 24, -1, 26, 27, 28, 29, -1, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, -1, 43, 16, -1, 100, 101, 48, 49, 50, + 51, -1, -1, -1, -1, 56, 57, 58, -1, -1, + -1, -1, -1, -1, -1, 66, 67, 40, 41, 42, + 43, 44, 45, 46, -1, 48, 49, 50, 51, 52, + 53, 54, -1, -1, -1, 58, -1, -1, -1, 62, + -1, 64, -1, -1, 40, 41, -1, 43, -1, 100, + 101, 47, -1, -1, -1, 78, 79, -1, -1, -1, + 16, -1, 58, -1, -1, 61, -1, -1, -1, -1, + -1, -1, 95, -1, -1, 98, -1, 100, 101, 102, + 103, 104, 105, 106, 40, 41, 42, 43, 44, 45, + 46, -1, 48, 49, 50, 51, 52, 53, 54, -1, + -1, -1, 58, 99, 100, 101, 62, 40, 41, -1, + 43, -1, -1, -1, 47, -1, -1, 40, 41, -1, + 43, -1, 78, 79, 47, 58, -1, 16, 61, -1, + -1, -1, -1, -1, -1, 58, -1, -1, 61, 95, + -1, -1, 98, -1, 100, 101, 102, 103, 104, 105, + 106, 40, 41, 42, 43, 44, 45, 46, -1, 48, + 49, 50, 51, 52, 53, 54, 99, 100, 101, 58, + -1, -1, -1, 62, -1, -1, 99, 100, 101, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 78, + 79, -1, -1, 68, 69, -1, -1, 72, 73, 74, + 75, 76, 77, -1, -1, -1, 95, -1, -1, 98, + -1, 100, 101, 102, 103, 104, 105, 106, 12, 94, + 95, 96, 97, 98, -1, 19, -1, -1, 22, 23, + 24, -1, 26, 27, 28, 29, -1, 31, 32, 33, + 34, 35, 36, 37, 38, 39, 40, 41, -1, 43, + -1, -1, -1, -1, 48, 49, 50, 51, -1, -1, + -1, -1, 56, -1, 58, -1, -1, -1, -1, -1, + -1, -1, 66, 67, 12, -1, -1, -1, -1, -1, + -1, 19, -1, -1, 22, 23, 24, -1, 26, 27, + 28, 29, -1, 31, 32, 33, 34, 35, 36, 37, + 38, 39, 40, 41, -1, 43, 100, 101, -1, -1, + 48, 49, 50, 51, -1, -1, -1, -1, 56, -1, + 58, -1, -1, -1, -1, -1, -1, 19, 66, 67, + 22, 23, 24, -1, 26, 27, 28, 29, -1, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, - 54, 43, 40, 41, 54, 43, 48, 49, 50, 51, - 48, 49, 50, 51, 56, 57, 58, 193, 62, 64, - 58, 55, 198, 101, 66, 67, 60, 56, 66, 67, - 55, 58, 142, 54, 151, 60, 422, 213, 214, 149, - 62, 151, 218, 422, 422, 58, 156, 151, 54, 159, - 105, 106, 62, 151, 58, 60, 59, 54, 100, 101, - 151, 62, 100, 101, 94, 95, 96, 97, 98, 40, - 41, 54, 43, 64, 54, 250, 193, 54, 203, 189, - 54, 198, 54, 193, 54, 250, 64, 58, 198, 193, - 61, 64, 54, 54, 198, 193, 213, 214, 274, 63, - 198, 218, 193, 213, 214, 64, 282, 198, 218, 213, - 214, 58, 64, 64, 218, 213, 214, 26, 64, 64, - 218, 64, 213, 214, 299, 300, 54, 218, 99, 100, - 101, 54, 59, 55, 299, 300, 27, 106, 47, 63, - 250, 50, 51, 63, 54, 64, 250, 54, 54, 54, - 40, 41, 54, 43, 54, 59, 64, 274, 48, 49, - 50, 51, 59, 59, 274, 282, 54, 54, 58, 54, - 274, 346, 282, 283, 25, 64, 274, 30, 282, 8, - 385, 346, 64, 274, 282, 64, 64, 64, 64, 299, - 300, 282, 64, 64, 55, 299, 300, 106, 107, 55, - 109, 55, 64, 379, 64, 381, 55, 8, 8, 64, - 100, 101, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 422, 141, 193, -1, 203, 346, 151, -1, -1, - -1, -1, 346, -1, 420, 154, 422, 423, 157, -1, - -1, 160, -1, -1, 411, 164, 413, 166, 415, -1, - -1, -1, 379, -1, 381, -1, -1, 443, 444, 379, - -1, 381, -1, -1, 384, 379, -1, 381, -1, 193, - -1, 379, -1, 381, 198, 194, -1, -1, 379, -1, - 381, -1, -1, -1, 151, 198, -1, -1, 207, 213, - 214, -1, -1, 420, 218, 422, 423, -1, -1, -1, - 420, -1, 422, 423, -1, 218, 420, -1, 422, 423, - -1, -1, 420, -1, 422, 423, 443, 444, -1, 420, - -1, 422, 423, 443, 444, -1, 193, -1, -1, 443, - 444, 198, -1, -1, 148, 443, 444, -1, -1, -1, - -1, 155, 443, 444, 158, -1, 213, 214, -1, 268, - 274, 218, -1, -1, -1, -1, -1, -1, 282, -1, - 279, 274, 281, -1, 151, 284, -1, -1, -1, 40, - 41, -1, 43, -1, -1, -1, 47, 296, 151, -1, - -1, -1, -1, 54, -1, -1, -1, 58, -1, -1, - 61, 62, -1, -1, -1, 314, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 324, 193, 274, -1, 151, - -1, 198, -1, 332, -1, 282, -1, -1, -1, -1, - 193, -1, -1, -1, -1, 198, 213, 214, 99, 100, - 101, 218, -1, -1, -1, -1, 355, 356, 357, 358, - 213, 214, -1, -1, -1, 218, -1, -1, -1, -1, - -1, 193, -1, -1, -1, 379, 198, 381, 272, -1, - -1, 380, -1, 382, 383, -1, 379, -1, 381, -1, - -1, 213, 214, -1, -1, -1, 218, -1, -1, -1, - 294, 295, 40, 41, -1, 43, -1, 274, -1, 47, - -1, -1, -1, -1, -1, 282, 420, -1, 422, 423, - 58, 274, -1, 61, -1, 424, -1, 420, -1, 282, - 423, -1, 379, 327, 381, -1, 330, -1, -1, 443, - 444, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 443, 444, 274, -1, -1, -1, -1, -1, -1, -1, - 282, 99, 100, 101, -1, -1, 17, 18, -1, 20, - 21, -1, -1, 420, -1, 422, 423, -1, -1, -1, - -1, -1, 376, -1, -1, -1, -1, -1, -1, 40, - 41, -1, 43, -1, -1, -1, 443, 444, 392, -1, - 394, -1, 396, -1, -1, -1, -1, 58, -1, -1, - 61, -1, 379, -1, 381, 66, 67, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 379, -1, 381, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - -1, -1, -1, -1, 40, 41, -1, 43, 99, 100, - 101, 47, -1, 420, -1, 422, 423, 379, -1, 381, - -1, -1, 58, -1, -1, 61, -1, 420, -1, 422, - 423, -1, -1, -1, -1, -1, 443, 444, -1, -1, - 68, 69, -1, -1, 72, 73, 74, 75, 76, 77, - 443, 444, -1, -1, -1, -1, -1, -1, 420, -1, - 422, 423, -1, 99, 100, 101, 94, 95, 96, 97, - 98, -1, 11, 12, -1, -1, -1, -1, -1, -1, - 19, 443, 444, 22, 23, 24, -1, 26, 27, 28, - 29, -1, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, -1, 43, -1, -1, -1, -1, 48, - 49, 50, 51, -1, -1, -1, -1, 56, 11, 58, - -1, -1, -1, -1, -1, -1, 19, 66, 67, 22, - 23, 24, -1, 26, 27, 28, 29, -1, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, -1, - 43, -1, -1, -1, -1, 48, 49, 50, 51, -1, - -1, 100, 101, 56, 57, 58, -1, -1, -1, -1, - -1, -1, -1, 66, 67, -1, -1, -1, -1, -1, + -1, 43, 40, 41, -1, 43, 48, 49, 50, 51, + -1, -1, 100, 101, 56, -1, 58, -1, -1, -1, + 58, -1, -1, 61, 66, 67, -1, -1, 66, 67, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 11, 12, - -1, -1, -1, -1, -1, -1, 19, 100, 101, 22, - 23, 24, -1, 26, 27, 28, 29, -1, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, -1, - 43, -1, -1, -1, -1, 48, 49, 50, 51, -1, - -1, -1, -1, 56, 11, 58, -1, -1, -1, -1, - -1, -1, 19, 66, 67, 22, 23, 24, -1, 26, - 27, 28, 29, -1, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, -1, 43, 16, -1, -1, - -1, 48, 49, 50, 51, -1, -1, 100, 101, 56, - -1, 58, -1, -1, -1, -1, -1, -1, -1, 66, - 67, 40, 41, 42, 43, 44, 45, 46, -1, 48, - 49, 50, 51, 52, 53, 54, -1, -1, -1, 58, - 59, -1, -1, 62, 40, 41, -1, 43, -1, -1, - -1, 47, -1, 100, 101, -1, -1, -1, -1, 78, - 79, -1, 58, -1, 16, 61, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 95, -1, -1, 98, - -1, 100, 101, 102, 103, 104, 105, 106, 40, 41, - 42, 43, 44, 45, 46, -1, 48, 49, 50, 51, - 52, 53, 54, 99, 100, 101, 58, -1, -1, -1, - 62, -1, 64, -1, -1, 40, 41, -1, 43, -1, - -1, -1, 47, -1, -1, -1, 78, 79, -1, -1, - -1, 16, -1, 58, -1, -1, 61, -1, -1, -1, - -1, -1, -1, 95, -1, -1, 98, -1, 100, 101, - 102, 103, 104, 105, 106, 40, 41, 42, 43, 44, - 45, 46, -1, 48, 49, 50, 51, 52, 53, 54, - -1, -1, -1, 58, 99, 100, 101, 62, 40, 41, - -1, 43, -1, -1, -1, 47, -1, -1, -1, -1, - -1, -1, -1, 78, 79, -1, 58, -1, 16, 61, + -1, -1, 80, 81, 82, 83, 84, 85, 86, 87, + 88, 89, 90, 40, 41, -1, 43, -1, 100, 101, + 47, 99, 100, 101, -1, 40, 41, -1, 43, -1, + -1, 58, 47, -1, 61, 40, 41, -1, 43, -1, + -1, -1, 47, 58, 40, 41, 61, 43, -1, -1, + -1, 68, 69, 58, -1, -1, 61, 74, 75, 76, + 77, -1, 58, -1, -1, 61, -1, -1, -1, -1, + -1, -1, 99, 100, 101, -1, -1, 94, 95, 96, + 97, 98, -1, -1, 99, 100, 101, -1, -1, -1, + -1, -1, -1, -1, 99, 100, 101, 55, -1, -1, + -1, -1, 60, 99, 100, 101, -1, 65, -1, -1, + 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 95, -1, -1, 98, -1, 100, 101, 102, 103, 104, - 105, 106, 40, 41, 42, 43, 44, 45, 46, -1, - 48, 49, 50, 51, 52, 53, 54, 99, 100, 101, - 58, -1, -1, -1, 62, -1, -1, -1, -1, 40, - 41, -1, 43, -1, -1, -1, -1, -1, -1, -1, - 78, 79, -1, -1, -1, -1, -1, 58, -1, -1, - 61, -1, -1, -1, -1, 66, 67, 95, -1, -1, - 98, -1, 100, 101, 102, 103, 104, 105, 106, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 40, 41, -1, 43, -1, -1, -1, 47, 99, 100, - 101, -1, 40, 41, -1, 43, -1, -1, 58, 47, - -1, 61, 40, 41, -1, 43, -1, -1, -1, 47, - 58, 40, 41, 61, 43, -1, -1, -1, 47, -1, - 58, -1, -1, 61, -1, -1, -1, -1, -1, 58, - -1, -1, 61, -1, -1, -1, -1, -1, -1, 99, - 100, 101, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 99, 100, 101, -1, -1, -1, -1, -1, -1, - -1, 99, 100, 101, 55, -1, -1, -1, -1, 60, - 99, 100, 101, -1, 65, -1, -1, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 91, 92, 93, 94, 95, 96, 97, 98, 55, -1, - -1, -1, -1, 60, -1, -1, -1, -1, 65, -1, - -1, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 91, 92, 93, 94, 95, 96, - 97, 98, 55, -1, -1, -1, -1, 60, -1, -1, - -1, -1, 65, -1, -1, 68, 69, 70, 71, 72, - 73, 74, 75, 76, 77, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 91, 92, - 93, 94, 95, 96, 97, 98, 55, -1, -1, -1, - -1, 60, -1, -1, -1, -1, 65, -1, -1, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 55, -1, 91, 92, 93, 94, 95, 96, 97, 98, - 65, -1, -1, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 55, -1, 91, 92, 93, 94, - 95, 96, 97, 98, 65, -1, -1, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 55, -1, - 91, 92, 93, 94, 95, 96, 97, 98, 65, -1, - -1, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 55, -1, 91, 92, 93, 94, 95, 96, - 97, 98, 65, -1, -1, 68, 69, 70, 71, 72, - 73, 74, 75, 76, 77, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 55, -1, 91, 92, - 93, 94, 95, 96, 97, 98, 65, -1, -1, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 55, -1, 91, 92, 93, 94, 95, 96, 97, 98, - 65, -1, -1, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 55, -1, 91, 92, 93, 94, - 95, 96, 97, 98, 65, -1, -1, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 55, -1, - 91, 92, 93, 94, 95, 96, 97, 98, 65, -1, - -1, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 55, -1, 91, 92, 93, 94, 95, 96, - 97, 98, 65, -1, -1, 68, 69, 70, 71, 72, - 73, 74, 75, 76, 77, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 55, -1, 91, 92, - 93, 94, 95, 96, 97, 98, 65, -1, -1, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 91, 92, 93, 94, 95, 96, 97, 98, - 59, -1, -1, -1, -1, -1, 65, -1, -1, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 91, 92, 93, 94, 95, 96, 97, 98, - 59, -1, -1, -1, -1, -1, 65, -1, -1, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 91, 92, 93, 94, 95, 96, 97, 98, - 59, -1, -1, -1, -1, -1, 65, -1, -1, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 91, 92, 93, 94, 95, 96, 97, 98, - 59, -1, -1, -1, -1, -1, 65, -1, -1, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 91, 92, 93, 94, 95, 96, 97, 98, - 59, -1, -1, -1, -1, -1, 65, -1, -1, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 91, 92, 93, 94, 95, 96, 97, 98, - 60, -1, -1, -1, -1, 65, -1, -1, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 77, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 91, 92, 93, 94, 95, 96, 97, 98, 63, + -1, -1, -1, 91, 92, 93, 94, 95, 96, 97, + 98, 55, -1, -1, -1, -1, 60, -1, -1, -1, -1, 65, -1, -1, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 91, 92, 93, - 94, 95, 96, 97, 98, 64, 65, -1, -1, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, -1, + 94, 95, 96, 97, 98, 55, -1, -1, -1, -1, + 60, -1, -1, -1, -1, 65, -1, -1, 68, 69, + 70, 71, 72, 73, 74, 75, 76, 77, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 91, 92, 93, 94, 95, 96, 97, 98, - 64, 65, -1, -1, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 77, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 91, 92, 93, - 94, 95, 96, 97, 98, 64, 65, -1, -1, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 65, + -1, 91, 92, 93, 94, 95, 96, 97, 98, 55, + -1, -1, -1, -1, 60, -1, -1, -1, -1, 65, -1, -1, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 91, 92, 93, 94, 95, 96, 97, 98, - -1, -1, -1, -1, -1, 91, 92, 93, 94, 95, - 96, 97, 98, 68, 69, -1, 71, 72, 73, 74, - 75, 76, 77, 68, 69, -1, -1, 72, 73, 74, - 75, 76, 77, -1, -1, -1, 91, 92, 93, 94, - 95, 96, 97, 98, -1, -1, 91, 92, 93, 94, - 95, 96, 97, 98, 68, 69, -1, -1, 72, 73, - 74, 75, 76, 77, 68, 69, -1, -1, 72, 73, - 74, 75, 76, 77, -1, -1, -1, -1, 92, 93, - 94, 95, 96, 97, 98, -1, -1, -1, 92, -1, - 94, 95, 96, 97, 98, 68, 69, -1, -1, -1, - -1, 74, 75, 76, 77, -1, -1, -1, -1, -1, + 76, 77, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 55, -1, 91, 92, 93, 94, 95, + 96, 97, 98, 65, -1, -1, 68, 69, 70, 71, + 72, 73, 74, 75, 76, 77, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 55, -1, 91, + 92, 93, 94, 95, 96, 97, 98, 65, -1, -1, + 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 94, 95, 96, 97, 98 + -1, 55, -1, 91, 92, 93, 94, 95, 96, 97, + 98, 65, -1, -1, 68, 69, 70, 71, 72, 73, + 74, 75, 76, 77, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 55, -1, 91, 92, 93, + 94, 95, 96, 97, 98, 65, -1, -1, 68, 69, + 70, 71, 72, 73, 74, 75, 76, 77, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 55, + -1, 91, 92, 93, 94, 95, 96, 97, 98, 65, + -1, -1, 68, 69, 70, 71, 72, 73, 74, 75, + 76, 77, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 55, -1, 91, 92, 93, 94, 95, + 96, 97, 98, 65, -1, -1, 68, 69, 70, 71, + 72, 73, 74, 75, 76, 77, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 55, -1, 91, + 92, 93, 94, 95, 96, 97, 98, 65, -1, -1, + 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 55, -1, 91, 92, 93, 94, 95, 96, 97, + 98, 65, -1, -1, 68, 69, 70, 71, 72, 73, + 74, 75, 76, 77, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 55, -1, 91, 92, 93, + 94, 95, 96, 97, 98, 65, -1, -1, 68, 69, + 70, 71, 72, 73, 74, 75, 76, 77, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 55, + -1, 91, 92, 93, 94, 95, 96, 97, 98, 65, + -1, -1, 68, 69, 70, 71, 72, 73, 74, 75, + 76, 77, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 91, 92, 93, 94, 95, + 96, 97, 98, 59, -1, -1, -1, -1, -1, 65, + -1, -1, 68, 69, 70, 71, 72, 73, 74, 75, + 76, 77, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 91, 92, 93, 94, 95, + 96, 97, 98, 59, -1, -1, -1, -1, -1, 65, + -1, -1, 68, 69, 70, 71, 72, 73, 74, 75, + 76, 77, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 91, 92, 93, 94, 95, + 96, 97, 98, 59, -1, -1, -1, -1, -1, 65, + -1, -1, 68, 69, 70, 71, 72, 73, 74, 75, + 76, 77, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 91, 92, 93, 94, 95, + 96, 97, 98, 59, -1, -1, -1, -1, -1, 65, + -1, -1, 68, 69, 70, 71, 72, 73, 74, 75, + 76, 77, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 91, 92, 93, 94, 95, + 96, 97, 98, 59, -1, -1, -1, -1, -1, 65, + -1, -1, 68, 69, 70, 71, 72, 73, 74, 75, + 76, 77, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 91, 92, 93, 94, 95, + 96, 97, 98, 60, -1, -1, -1, -1, 65, -1, + -1, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 77, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 91, 92, 93, 94, 95, 96, + 97, 98, 63, -1, 65, -1, -1, 68, 69, 70, + 71, 72, 73, 74, 75, 76, 77, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 91, 92, 93, 94, 95, 96, 97, 98, 64, 65, + -1, -1, 68, 69, 70, 71, 72, 73, 74, 75, + 76, 77, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 91, 92, 93, 94, 95, + 96, 97, 98, 64, 65, -1, -1, 68, 69, 70, + 71, 72, 73, 74, 75, 76, 77, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 91, 92, 93, 94, 95, 96, 97, 98, 64, 65, + -1, -1, 68, 69, 70, 71, 72, 73, 74, 75, + 76, 77, 65, -1, -1, 68, 69, 70, 71, 72, + 73, 74, 75, 76, 77, 91, 92, 93, 94, 95, + 96, 97, 98, -1, -1, -1, -1, -1, 91, 92, + 93, 94, 95, 96, 97, 98, 68, 69, -1, 71, + 72, 73, 74, 75, 76, 77, 68, 69, -1, -1, + 72, 73, 74, 75, 76, 77, -1, -1, -1, 91, + 92, 93, 94, 95, 96, 97, 98, -1, -1, 91, + 92, 93, 94, 95, 96, 97, 98, 68, 69, -1, + -1, 72, 73, 74, 75, 76, 77, 68, 69, -1, + -1, 72, 73, 74, 75, 76, 77, -1, -1, -1, + -1, 92, 93, 94, 95, 96, 97, 98, -1, -1, + -1, 92, -1, 94, 95, 96, 97, 98 }; const unsigned char parser::yystos_[] = { 0, 11, 12, 13, 14, 15, 101, 117, 118, 119, - 120, 121, 122, 123, 124, 189, 100, 189, 190, 190, + 120, 121, 122, 123, 124, 191, 100, 191, 192, 192, 54, 0, 119, 120, 121, 54, 80, 64, 64, 102, - 192, 169, 189, 16, 40, 41, 42, 43, 44, 45, + 194, 171, 191, 16, 40, 41, 42, 43, 44, 45, 46, 48, 49, 50, 51, 52, 53, 54, 58, 62, - 78, 79, 95, 98, 103, 104, 105, 106, 154, 159, - 160, 161, 162, 163, 164, 165, 166, 167, 168, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, - 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, - 193, 194, 195, 196, 197, 198, 55, 55, 60, 58, - 189, 190, 58, 189, 190, 58, 54, 54, 154, 58, - 59, 154, 170, 171, 189, 154, 154, 105, 106, 101, + 78, 79, 95, 98, 103, 104, 105, 106, 156, 161, + 162, 163, 164, 165, 166, 167, 168, 169, 170, 174, + 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, + 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, + 195, 196, 197, 198, 199, 200, 55, 55, 60, 58, + 191, 192, 58, 191, 192, 58, 54, 54, 156, 58, + 59, 156, 172, 173, 191, 156, 156, 105, 106, 101, 64, 65, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 91, 92, 93, 94, 95, 96, 97, 98, - 47, 58, 61, 99, 166, 167, 189, 190, 54, 62, - 64, 56, 127, 189, 58, 54, 62, 58, 54, 62, - 58, 154, 154, 55, 60, 154, 60, 59, 154, 154, - 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, - 154, 154, 154, 154, 154, 154, 154, 154, 189, 62, - 170, 171, 189, 11, 19, 22, 23, 24, 26, 27, + 47, 58, 61, 99, 168, 169, 191, 192, 54, 62, + 64, 56, 130, 191, 58, 54, 62, 58, 54, 62, + 58, 156, 156, 55, 60, 156, 60, 59, 156, 156, + 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, + 156, 156, 156, 156, 156, 156, 156, 156, 191, 62, + 172, 173, 191, 11, 19, 22, 23, 24, 26, 27, 28, 29, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 57, 58, 66, 67, 125, 126, 127, 128, 130, - 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, - 151, 152, 153, 156, 157, 158, 164, 165, 175, 176, - 179, 183, 184, 185, 186, 189, 154, 170, 189, 154, - 170, 189, 154, 55, 55, 154, 59, 154, 63, 59, - 189, 55, 54, 12, 128, 154, 64, 54, 64, 54, - 125, 54, 54, 54, 54, 95, 192, 196, 63, 64, - 64, 64, 154, 64, 54, 54, 58, 164, 165, 179, - 179, 57, 125, 64, 64, 64, 64, 64, 17, 18, - 20, 21, 66, 67, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 59, 55, 54, 59, 55, - 54, 59, 60, 59, 154, 170, 12, 64, 55, 154, - 27, 154, 129, 156, 157, 158, 179, 189, 154, 63, - 63, 64, 170, 170, 154, 54, 54, 54, 54, 154, - 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, - 59, 170, 59, 170, 59, 154, 54, 55, 64, 55, - 54, 55, 64, 30, 60, 55, 55, 55, 154, 154, - 154, 154, 54, 55, 54, 55, 54, 55, 170, 125, - 154, 125, 154, 155, 154, 189, 127, 64, 64, 55, - 55, 60, 55, 60, 55, 60, 170, 170, 170, 55, - 25, 55, 64, 55, 30, 64, 64, 171, 64, 171, - 64, 171, 55, 55, 55, 125, 64, 129, 125, 154, - 55, 55, 55, 55, 55, 64, 64, 64, 125, 125 + 39, 57, 58, 66, 67, 125, 126, 128, 129, 130, + 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, + 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, + 152, 153, 154, 155, 158, 159, 160, 166, 167, 177, + 178, 181, 185, 186, 187, 188, 191, 156, 172, 191, + 156, 172, 191, 156, 55, 55, 156, 59, 156, 63, + 59, 191, 55, 54, 12, 125, 127, 156, 64, 54, + 64, 54, 125, 54, 54, 54, 54, 95, 194, 198, + 63, 64, 64, 64, 156, 64, 54, 54, 58, 166, + 167, 181, 181, 57, 126, 64, 64, 64, 64, 64, + 17, 18, 20, 21, 66, 67, 80, 81, 82, 83, + 84, 85, 86, 87, 88, 89, 90, 59, 55, 54, + 59, 55, 54, 59, 60, 59, 156, 172, 12, 125, + 64, 55, 156, 27, 156, 131, 158, 159, 160, 181, + 191, 156, 63, 63, 64, 172, 172, 156, 54, 54, + 54, 54, 156, 156, 156, 156, 156, 156, 156, 156, + 156, 156, 156, 59, 172, 59, 172, 59, 156, 54, + 55, 64, 55, 54, 55, 64, 30, 60, 55, 55, + 55, 156, 156, 156, 156, 54, 55, 54, 55, 54, + 55, 172, 125, 156, 125, 156, 157, 156, 191, 130, + 64, 64, 55, 55, 60, 55, 60, 55, 60, 172, + 172, 172, 55, 25, 55, 64, 55, 30, 64, 64, + 173, 64, 173, 64, 173, 55, 55, 55, 125, 64, + 131, 125, 156, 55, 55, 55, 55, 55, 64, 64, + 64, 125, 125 }; const unsigned char @@ -4517,25 +4560,25 @@ namespace xsk { namespace gsc { namespace iw8 { 119, 120, 121, 121, 121, 121, 121, 122, 123, 124, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 126, 126, 127, 127, - 128, 128, 129, 129, 129, 129, 130, 130, 131, 131, - 131, 132, 133, 133, 134, 135, 135, 136, 136, 137, - 138, 138, 139, 140, 141, 142, 143, 144, 144, 145, - 146, 146, 147, 148, 149, 150, 150, 151, 152, 153, - 154, 154, 154, 155, 155, 156, 156, 156, 156, 156, - 156, 156, 156, 156, 156, 156, 157, 157, 158, 158, - 159, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, 160, 161, - 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, - 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, - 161, 161, 161, 161, 161, 161, 161, 161, 161, 162, - 163, 164, 164, 165, 165, 166, 166, 166, 166, 166, - 166, 167, 167, 167, 167, 168, 169, 169, 169, 170, - 170, 171, 171, 172, 173, 174, 174, 175, 176, 176, - 177, 178, 179, 179, 179, 179, 179, 179, 179, 179, - 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 190, 191, 192, 193, 194, 195, 195, 196, - 196, 197, 198 + 125, 125, 125, 125, 125, 126, 126, 127, 127, 128, + 128, 129, 129, 130, 130, 131, 131, 131, 131, 132, + 132, 133, 133, 133, 134, 135, 135, 136, 137, 137, + 138, 138, 139, 140, 140, 141, 142, 143, 144, 145, + 146, 146, 147, 148, 148, 149, 150, 151, 152, 152, + 153, 154, 155, 156, 156, 156, 157, 157, 158, 158, + 158, 158, 158, 158, 158, 158, 158, 158, 158, 159, + 159, 160, 160, 161, 162, 162, 162, 162, 162, 162, + 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, + 162, 162, 163, 163, 163, 163, 163, 163, 163, 163, + 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, + 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, + 163, 163, 164, 165, 166, 166, 167, 167, 168, 168, + 168, 168, 168, 168, 169, 169, 169, 169, 170, 171, + 171, 171, 172, 172, 173, 173, 174, 175, 176, 176, + 177, 178, 178, 179, 180, 181, 181, 181, 181, 181, + 181, 181, 181, 181, 182, 183, 184, 185, 186, 187, + 188, 189, 190, 191, 192, 192, 193, 194, 195, 196, + 197, 197, 198, 198, 199, 200 }; const signed char @@ -4545,25 +4588,25 @@ namespace xsk { namespace gsc { namespace iw8 { 3, 3, 1, 1, 1, 1, 1, 5, 4, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 3, 2, 3, 2, - 2, 1, 1, 1, 1, 0, 2, 2, 2, 2, - 2, 6, 8, 6, 3, 8, 6, 8, 6, 2, - 2, 4, 5, 7, 5, 7, 9, 7, 9, 5, - 3, 3, 2, 2, 2, 3, 2, 2, 5, 5, - 1, 1, 1, 1, 0, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, - 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, + 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, + 1, 3, 2, 3, 2, 1, 1, 1, 0, 2, + 2, 2, 2, 2, 6, 8, 6, 3, 8, 6, + 8, 6, 2, 2, 4, 5, 7, 5, 7, 9, + 7, 9, 5, 3, 3, 2, 2, 2, 3, 2, + 2, 5, 5, 1, 1, 1, 1, 0, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, + 2, 2, 2, 5, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, - 2, 1, 1, 2, 2, 4, 6, 5, 7, 5, - 7, 8, 9, 9, 9, 3, 3, 1, 0, 1, - 0, 3, 1, 4, 4, 2, 3, 4, 3, 2, - 2, 3, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 2, 1, 1, 1, 1, 1, 2, 1, - 1, 1, 1, 1, 1, 1, 7, 2, 1, 2, - 1, 1, 1 + 1, 1, 2, 2, 1, 1, 2, 2, 4, 6, + 5, 7, 5, 7, 8, 9, 9, 9, 3, 3, + 1, 0, 1, 0, 3, 1, 4, 4, 2, 3, + 4, 3, 2, 2, 3, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, + 1, 2, 1, 1, 1, 1, 1, 1, 1, 7, + 2, 1, 2, 1, 1, 1 }; @@ -4573,29 +4616,29 @@ namespace xsk { namespace gsc { namespace iw8 { const short parser::yyrline_[] = { - 0, 258, 258, 259, 263, 265, 267, 269, 271, 273, - 278, 282, 287, 288, 289, 290, 291, 295, 300, 305, - 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, - 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, - 330, 331, 332, 333, 334, 335, 339, 340, 344, 345, - 349, 351, 356, 358, 360, 363, 367, 369, 374, 376, - 378, 383, 388, 390, 395, 400, 402, 407, 409, 414, - 419, 421, 426, 431, 436, 441, 446, 451, 453, 458, - 463, 465, 470, 475, 480, 485, 487, 492, 497, 502, - 507, 508, 509, 513, 514, 518, 520, 522, 524, 526, - 528, 530, 532, 534, 536, 538, 543, 545, 550, 552, - 557, 562, 564, 566, 568, 570, 572, 574, 576, 578, - 580, 582, 584, 586, 588, 590, 592, 594, 596, 601, - 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, - 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, - 622, 623, 624, 625, 626, 627, 628, 629, 630, 634, - 639, 644, 645, 648, 649, 653, 655, 657, 659, 661, - 663, 668, 670, 672, 674, 679, 684, 686, 689, 693, - 696, 700, 702, 707, 712, 717, 719, 724, 729, 731, - 736, 741, 746, 747, 748, 749, 750, 751, 752, 753, - 754, 758, 763, 768, 773, 778, 783, 788, 793, 798, - 803, 808, 810, 815, 820, 825, 830, 835, 837, 842, - 844, 849, 854 + 0, 260, 260, 261, 265, 267, 269, 271, 273, 275, + 280, 284, 289, 290, 291, 292, 293, 297, 302, 307, + 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, + 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, + 332, 333, 334, 335, 336, 340, 341, 345, 347, 352, + 354, 359, 360, 364, 365, 369, 371, 373, 376, 380, + 382, 387, 389, 391, 396, 401, 403, 408, 413, 415, + 420, 422, 427, 432, 434, 439, 444, 449, 454, 459, + 464, 466, 471, 476, 478, 483, 488, 493, 498, 500, + 505, 510, 515, 520, 521, 522, 526, 527, 531, 533, + 535, 537, 539, 541, 543, 545, 547, 549, 551, 556, + 558, 563, 565, 570, 575, 577, 579, 581, 583, 585, + 587, 589, 591, 593, 595, 597, 599, 601, 603, 605, + 607, 609, 614, 615, 616, 617, 618, 619, 620, 621, + 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, + 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, + 642, 643, 647, 652, 657, 658, 661, 662, 666, 668, + 670, 672, 674, 676, 681, 683, 685, 687, 692, 697, + 699, 702, 706, 709, 713, 715, 720, 725, 730, 732, + 737, 742, 744, 749, 754, 759, 760, 761, 762, 763, + 764, 765, 766, 767, 771, 776, 781, 786, 791, 796, + 801, 806, 811, 816, 821, 823, 828, 833, 838, 843, + 848, 850, 855, 857, 862, 867 }; void @@ -4628,9 +4671,9 @@ namespace xsk { namespace gsc { namespace iw8 { #line 13 "parser.ypp" } } } // xsk::gsc::iw8 -#line 4632 "parser.cpp" +#line 4675 "parser.cpp" -#line 858 "parser.ypp" +#line 871 "parser.ypp" void xsk::gsc::iw8::parser::error(const xsk::gsc::location& loc, const std::string& msg) diff --git a/src/iw8/xsk/parser.hpp b/src/iw8/xsk/parser.hpp index f44072aa..fd92392b 100644 --- a/src/iw8/xsk/parser.hpp +++ b/src/iw8/xsk/parser.hpp @@ -541,6 +541,7 @@ namespace xsk { namespace gsc { namespace iw8 { char dummy41[sizeof (ast::program::ptr)]; // stmt + // stmt_or_dev char dummy42[sizeof (ast::stmt)]; // stmt_assign @@ -564,64 +565,67 @@ namespace xsk { namespace gsc { namespace iw8 { // stmt_default char dummy49[sizeof (ast::stmt_default::ptr)]; + // stmt_dev + char dummy50[sizeof (ast::stmt_dev::ptr)]; + // stmt_dowhile - char dummy50[sizeof (ast::stmt_dowhile::ptr)]; + char dummy51[sizeof (ast::stmt_dowhile::ptr)]; // stmt_endon - char dummy51[sizeof (ast::stmt_endon::ptr)]; + char dummy52[sizeof (ast::stmt_endon::ptr)]; // stmt_expr - char dummy52[sizeof (ast::stmt_expr::ptr)]; + char dummy53[sizeof (ast::stmt_expr::ptr)]; // stmt_for - char dummy53[sizeof (ast::stmt_for::ptr)]; + char dummy54[sizeof (ast::stmt_for::ptr)]; // stmt_foreach - char dummy54[sizeof (ast::stmt_foreach::ptr)]; + char dummy55[sizeof (ast::stmt_foreach::ptr)]; // stmt_if - char dummy55[sizeof (ast::stmt_if::ptr)]; + char dummy56[sizeof (ast::stmt_if::ptr)]; // stmt_ifelse - char dummy56[sizeof (ast::stmt_ifelse::ptr)]; + char dummy57[sizeof (ast::stmt_ifelse::ptr)]; - // stmt_dev - // stmt_block // stmt_list - char dummy57[sizeof (ast::stmt_list::ptr)]; + // stmt_or_dev_list + // stmt_block + char dummy58[sizeof (ast::stmt_list::ptr)]; // stmt_notify - char dummy58[sizeof (ast::stmt_notify::ptr)]; + char dummy59[sizeof (ast::stmt_notify::ptr)]; // stmt_prof_begin - char dummy59[sizeof (ast::stmt_prof_begin::ptr)]; + char dummy60[sizeof (ast::stmt_prof_begin::ptr)]; // stmt_prof_end - char dummy60[sizeof (ast::stmt_prof_end::ptr)]; + char dummy61[sizeof (ast::stmt_prof_end::ptr)]; // stmt_return - char dummy61[sizeof (ast::stmt_return::ptr)]; + char dummy62[sizeof (ast::stmt_return::ptr)]; // stmt_switch - char dummy62[sizeof (ast::stmt_switch::ptr)]; + char dummy63[sizeof (ast::stmt_switch::ptr)]; // stmt_wait - char dummy63[sizeof (ast::stmt_wait::ptr)]; + char dummy64[sizeof (ast::stmt_wait::ptr)]; // stmt_waitframe - char dummy64[sizeof (ast::stmt_waitframe::ptr)]; + char dummy65[sizeof (ast::stmt_waitframe::ptr)]; // stmt_waittill - char dummy65[sizeof (ast::stmt_waittill::ptr)]; + char dummy66[sizeof (ast::stmt_waittill::ptr)]; // stmt_waittillframeend - char dummy66[sizeof (ast::stmt_waittillframeend::ptr)]; + char dummy67[sizeof (ast::stmt_waittillframeend::ptr)]; // stmt_waittillmatch - char dummy67[sizeof (ast::stmt_waittillmatch::ptr)]; + char dummy68[sizeof (ast::stmt_waittillmatch::ptr)]; // stmt_while - char dummy68[sizeof (ast::stmt_while::ptr)]; + char dummy69[sizeof (ast::stmt_while::ptr)]; // "field" // "path" @@ -631,7 +635,7 @@ namespace xsk { namespace gsc { namespace iw8 { // "color" // "float" // "integer" - char dummy69[sizeof (std::string)]; + char dummy70[sizeof (std::string)]; }; /// The size of the largest semantic type. @@ -940,79 +944,81 @@ namespace xsk { namespace gsc { namespace iw8 { S_decl_constant = 123, // decl_constant S_decl_thread = 124, // decl_thread S_stmt = 125, // stmt - S_stmt_dev = 126, // stmt_dev - S_stmt_block = 127, // stmt_block - S_stmt_list = 128, // stmt_list - S_stmt_expr = 129, // stmt_expr - S_stmt_call = 130, // stmt_call - S_stmt_assign = 131, // stmt_assign - S_stmt_endon = 132, // stmt_endon - S_stmt_notify = 133, // stmt_notify - S_stmt_wait = 134, // stmt_wait - S_stmt_waittill = 135, // stmt_waittill - S_stmt_waittillmatch = 136, // stmt_waittillmatch - S_stmt_waittillframeend = 137, // stmt_waittillframeend - S_stmt_waitframe = 138, // stmt_waitframe - S_stmt_if = 139, // stmt_if - S_stmt_ifelse = 140, // stmt_ifelse - S_stmt_while = 141, // stmt_while - S_stmt_dowhile = 142, // stmt_dowhile - S_stmt_for = 143, // stmt_for - S_stmt_foreach = 144, // stmt_foreach - S_stmt_switch = 145, // stmt_switch - S_stmt_case = 146, // stmt_case - S_stmt_default = 147, // stmt_default - S_stmt_break = 148, // stmt_break - S_stmt_continue = 149, // stmt_continue - S_stmt_return = 150, // stmt_return - S_stmt_breakpoint = 151, // stmt_breakpoint - S_stmt_prof_begin = 152, // stmt_prof_begin - S_stmt_prof_end = 153, // stmt_prof_end - S_expr = 154, // expr - S_expr_or_empty = 155, // expr_or_empty - S_expr_assign = 156, // expr_assign - S_expr_increment = 157, // expr_increment - S_expr_decrement = 158, // expr_decrement - S_expr_ternary = 159, // expr_ternary - S_expr_binary = 160, // expr_binary - S_expr_primitive = 161, // expr_primitive - S_expr_complement = 162, // expr_complement - S_expr_not = 163, // expr_not - S_expr_call = 164, // expr_call - S_expr_method = 165, // expr_method - S_expr_function = 166, // expr_function - S_expr_pointer = 167, // expr_pointer - S_expr_add_array = 168, // expr_add_array - S_expr_parameters = 169, // expr_parameters - S_expr_arguments = 170, // expr_arguments - S_expr_arguments_no_empty = 171, // expr_arguments_no_empty - S_expr_isdefined = 172, // expr_isdefined - S_expr_istrue = 173, // expr_istrue - S_expr_reference = 174, // expr_reference - S_expr_array = 175, // expr_array - S_expr_field = 176, // expr_field - S_expr_size = 177, // expr_size - S_expr_paren = 178, // expr_paren - S_expr_object = 179, // expr_object - S_expr_thisthread = 180, // expr_thisthread - S_expr_empty_array = 181, // expr_empty_array - S_expr_undefined = 182, // expr_undefined - S_expr_game = 183, // expr_game - S_expr_self = 184, // expr_self - S_expr_anim = 185, // expr_anim - S_expr_level = 186, // expr_level - S_expr_animation = 187, // expr_animation - S_expr_animtree = 188, // expr_animtree - S_expr_identifier = 189, // expr_identifier - S_expr_path = 190, // expr_path - S_expr_istring = 191, // expr_istring - S_expr_string = 192, // expr_string - S_expr_color = 193, // expr_color - S_expr_vector = 194, // expr_vector - S_expr_float = 195, // expr_float - S_expr_integer = 196, // expr_integer - S_expr_false = 197, // expr_false - S_expr_true = 198 // expr_true + S_stmt_or_dev = 126, // stmt_or_dev + S_stmt_list = 127, // stmt_list + S_stmt_or_dev_list = 128, // stmt_or_dev_list + S_stmt_dev = 129, // stmt_dev + S_stmt_block = 130, // stmt_block + S_stmt_expr = 131, // stmt_expr + S_stmt_call = 132, // stmt_call + S_stmt_assign = 133, // stmt_assign + S_stmt_endon = 134, // stmt_endon + S_stmt_notify = 135, // stmt_notify + S_stmt_wait = 136, // stmt_wait + S_stmt_waittill = 137, // stmt_waittill + S_stmt_waittillmatch = 138, // stmt_waittillmatch + S_stmt_waittillframeend = 139, // stmt_waittillframeend + S_stmt_waitframe = 140, // stmt_waitframe + S_stmt_if = 141, // stmt_if + S_stmt_ifelse = 142, // stmt_ifelse + S_stmt_while = 143, // stmt_while + S_stmt_dowhile = 144, // stmt_dowhile + S_stmt_for = 145, // stmt_for + S_stmt_foreach = 146, // stmt_foreach + S_stmt_switch = 147, // stmt_switch + S_stmt_case = 148, // stmt_case + S_stmt_default = 149, // stmt_default + S_stmt_break = 150, // stmt_break + S_stmt_continue = 151, // stmt_continue + S_stmt_return = 152, // stmt_return + S_stmt_breakpoint = 153, // stmt_breakpoint + S_stmt_prof_begin = 154, // stmt_prof_begin + S_stmt_prof_end = 155, // stmt_prof_end + S_expr = 156, // expr + S_expr_or_empty = 157, // expr_or_empty + S_expr_assign = 158, // expr_assign + S_expr_increment = 159, // expr_increment + S_expr_decrement = 160, // expr_decrement + S_expr_ternary = 161, // expr_ternary + S_expr_binary = 162, // expr_binary + S_expr_primitive = 163, // expr_primitive + S_expr_complement = 164, // expr_complement + S_expr_not = 165, // expr_not + S_expr_call = 166, // expr_call + S_expr_method = 167, // expr_method + S_expr_function = 168, // expr_function + S_expr_pointer = 169, // expr_pointer + S_expr_add_array = 170, // expr_add_array + S_expr_parameters = 171, // expr_parameters + S_expr_arguments = 172, // expr_arguments + S_expr_arguments_no_empty = 173, // expr_arguments_no_empty + S_expr_isdefined = 174, // expr_isdefined + S_expr_istrue = 175, // expr_istrue + S_expr_reference = 176, // expr_reference + S_expr_array = 177, // expr_array + S_expr_field = 178, // expr_field + S_expr_size = 179, // expr_size + S_expr_paren = 180, // expr_paren + S_expr_object = 181, // expr_object + S_expr_thisthread = 182, // expr_thisthread + S_expr_empty_array = 183, // expr_empty_array + S_expr_undefined = 184, // expr_undefined + S_expr_game = 185, // expr_game + S_expr_self = 186, // expr_self + S_expr_anim = 187, // expr_anim + S_expr_level = 188, // expr_level + S_expr_animation = 189, // expr_animation + S_expr_animtree = 190, // expr_animtree + S_expr_identifier = 191, // expr_identifier + S_expr_path = 192, // expr_path + S_expr_istring = 193, // expr_istring + S_expr_string = 194, // expr_string + S_expr_color = 195, // expr_color + S_expr_vector = 196, // expr_vector + S_expr_float = 197, // expr_float + S_expr_integer = 198, // expr_integer + S_expr_false = 199, // expr_false + S_expr_true = 200 // expr_true }; }; @@ -1224,6 +1230,7 @@ namespace xsk { namespace gsc { namespace iw8 { break; case symbol_kind::S_stmt: // stmt + case symbol_kind::S_stmt_or_dev: // stmt_or_dev value.move< ast::stmt > (std::move (that.value)); break; @@ -1255,6 +1262,10 @@ namespace xsk { namespace gsc { namespace iw8 { value.move< ast::stmt_default::ptr > (std::move (that.value)); break; + case symbol_kind::S_stmt_dev: // stmt_dev + value.move< ast::stmt_dev::ptr > (std::move (that.value)); + break; + case symbol_kind::S_stmt_dowhile: // stmt_dowhile value.move< ast::stmt_dowhile::ptr > (std::move (that.value)); break; @@ -1283,9 +1294,9 @@ namespace xsk { namespace gsc { namespace iw8 { value.move< ast::stmt_ifelse::ptr > (std::move (that.value)); break; - case symbol_kind::S_stmt_dev: // stmt_dev - case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list + case symbol_kind::S_stmt_or_dev_list: // stmt_or_dev_list + case symbol_kind::S_stmt_block: // stmt_block value.move< ast::stmt_list::ptr > (std::move (that.value)); break; @@ -2053,6 +2064,20 @@ namespace xsk { namespace gsc { namespace iw8 { {} #endif +#if 201103L <= YY_CPLUSPLUS + basic_symbol (typename Base::kind_type t, ast::stmt_dev::ptr&& v, location_type&& l) + : Base (t) + , value (std::move (v)) + , location (std::move (l)) + {} +#else + basic_symbol (typename Base::kind_type t, const ast::stmt_dev::ptr& v, const location_type& l) + : Base (t) + , value (v) + , location (l) + {} +#endif + #if 201103L <= YY_CPLUSPLUS basic_symbol (typename Base::kind_type t, ast::stmt_dowhile::ptr&& v, location_type&& l) : Base (t) @@ -2530,6 +2555,7 @@ switch (yykind) break; case symbol_kind::S_stmt: // stmt + case symbol_kind::S_stmt_or_dev: // stmt_or_dev value.template destroy< ast::stmt > (); break; @@ -2561,6 +2587,10 @@ switch (yykind) value.template destroy< ast::stmt_default::ptr > (); break; + case symbol_kind::S_stmt_dev: // stmt_dev + value.template destroy< ast::stmt_dev::ptr > (); + break; + case symbol_kind::S_stmt_dowhile: // stmt_dowhile value.template destroy< ast::stmt_dowhile::ptr > (); break; @@ -2589,9 +2619,9 @@ switch (yykind) value.template destroy< ast::stmt_ifelse::ptr > (); break; - case symbol_kind::S_stmt_dev: // stmt_dev - case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list + case symbol_kind::S_stmt_or_dev_list: // stmt_or_dev_list + case symbol_kind::S_stmt_block: // stmt_block value.template destroy< ast::stmt_list::ptr > (); break; @@ -4890,8 +4920,8 @@ switch (yykind) /// Constants. enum { - yylast_ = 2425, ///< Last index in yytable_. - yynnts_ = 83, ///< Number of nonterminal symbols. + yylast_ = 2407, ///< Last index in yytable_. + yynnts_ = 85, ///< Number of nonterminal symbols. yyfinal_ = 21 ///< Termination state number. }; @@ -5093,6 +5123,7 @@ switch (yykind) break; case symbol_kind::S_stmt: // stmt + case symbol_kind::S_stmt_or_dev: // stmt_or_dev value.copy< ast::stmt > (YY_MOVE (that.value)); break; @@ -5124,6 +5155,10 @@ switch (yykind) value.copy< ast::stmt_default::ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_stmt_dev: // stmt_dev + value.copy< ast::stmt_dev::ptr > (YY_MOVE (that.value)); + break; + case symbol_kind::S_stmt_dowhile: // stmt_dowhile value.copy< ast::stmt_dowhile::ptr > (YY_MOVE (that.value)); break; @@ -5152,9 +5187,9 @@ switch (yykind) value.copy< ast::stmt_ifelse::ptr > (YY_MOVE (that.value)); break; - case symbol_kind::S_stmt_dev: // stmt_dev - case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list + case symbol_kind::S_stmt_or_dev_list: // stmt_or_dev_list + case symbol_kind::S_stmt_block: // stmt_block value.copy< ast::stmt_list::ptr > (YY_MOVE (that.value)); break; @@ -5417,6 +5452,7 @@ switch (yykind) break; case symbol_kind::S_stmt: // stmt + case symbol_kind::S_stmt_or_dev: // stmt_or_dev value.move< ast::stmt > (YY_MOVE (s.value)); break; @@ -5448,6 +5484,10 @@ switch (yykind) value.move< ast::stmt_default::ptr > (YY_MOVE (s.value)); break; + case symbol_kind::S_stmt_dev: // stmt_dev + value.move< ast::stmt_dev::ptr > (YY_MOVE (s.value)); + break; + case symbol_kind::S_stmt_dowhile: // stmt_dowhile value.move< ast::stmt_dowhile::ptr > (YY_MOVE (s.value)); break; @@ -5476,9 +5516,9 @@ switch (yykind) value.move< ast::stmt_ifelse::ptr > (YY_MOVE (s.value)); break; - case symbol_kind::S_stmt_dev: // stmt_dev - case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list + case symbol_kind::S_stmt_or_dev_list: // stmt_or_dev_list + case symbol_kind::S_stmt_block: // stmt_block value.move< ast::stmt_list::ptr > (YY_MOVE (s.value)); break; @@ -5600,7 +5640,7 @@ switch (yykind) #line 13 "parser.ypp" } } } // xsk::gsc::iw8 -#line 5604 "parser.hpp" +#line 5644 "parser.hpp" diff --git a/src/iw8/xsk/resolver.cpp b/src/iw8/xsk/resolver.cpp index 7702e772..f7f4c830 100644 --- a/src/iw8/xsk/resolver.cpp +++ b/src/iw8/xsk/resolver.cpp @@ -46,7 +46,7 @@ auto resolver::opcode_name(std::uint8_t id) -> std::string auto resolver::function_id(const std::string& name) -> std::uint16_t { - if(name.starts_with("_func_")) + if (name.starts_with("_func_")) { return std::stoul(name.substr(6), nullptr, 16); } @@ -75,7 +75,7 @@ auto resolver::function_name(std::uint16_t id) -> std::string auto resolver::method_id(const std::string& name) -> std::uint16_t { - if(name.starts_with("_meth_")) + if (name.starts_with("_meth_")) { return std::stoul(name.substr(6), nullptr, 16); } @@ -104,7 +104,7 @@ auto resolver::method_name(std::uint16_t id) -> std::string auto resolver::file_id(const std::string& name) -> std::uint32_t { - if(name.starts_with("_id_")) + if (name.starts_with("_id_")) { return std::stoul(name.substr(4), nullptr, 16); } @@ -133,7 +133,7 @@ auto resolver::file_name(std::uint32_t id) -> std::string auto resolver::token_id(const std::string& name) -> std::uint32_t { - if(name.starts_with("_id_")) + if (name.starts_with("_id_")) { return std::stoul(name.substr(4), nullptr, 16); } @@ -162,7 +162,7 @@ auto resolver::token_name(std::uint32_t id) -> std::string auto resolver::find_function(const std::string& name) -> bool { - if(name.starts_with("_func_")) return true; + if (name.starts_with("_func_")) return true; const auto itr = function_map_rev.find(name); @@ -176,7 +176,7 @@ auto resolver::find_function(const std::string& name) -> bool auto resolver::find_method(const std::string& name) -> bool { - if(name.starts_with("_meth_")) return true; + if (name.starts_with("_meth_")) return true; const auto itr = method_map_rev.find(name); @@ -190,7 +190,7 @@ auto resolver::find_method(const std::string& name) -> bool auto resolver::make_token(std::string_view str) -> std::string { - if(str.starts_with("_id_") || str.starts_with("_func_") || str.starts_with("_meth_")) + if (str.starts_with("_id_") || str.starts_with("_func_") || str.starts_with("_meth_")) { return std::string(str); } @@ -213,7 +213,7 @@ auto resolver::file_data(const std::string& name) -> std::tuplefirst ,reinterpret_cast(itr->second.data()), itr->second.size() }; } @@ -222,7 +222,7 @@ auto resolver::file_data(const std::string& name) -> std::tuplefirst, reinterpret_cast(res.first->second.data()), res.first->second.size() }; } @@ -75564,7 +75564,7 @@ struct __init__ __init__() { static bool init = false; - if(init) return; + if (init) return; init = true; opcode_map.reserve(opcode_list.size()); @@ -75578,31 +75578,31 @@ struct __init__ token_map.reserve(token_list.size()); token_map_rev.reserve(token_list.size()); - for(const auto& entry : opcode_list) + for (const auto& entry : opcode_list) { opcode_map.insert({ entry.first, entry.second }); opcode_map_rev.insert({ entry.second, entry.first }); } - for(const auto& entry : function_list) + for (const auto& entry : function_list) { function_map.insert({ entry.first, entry.second }); function_map_rev.insert({ entry.second, entry.first }); } - for(const auto& entry : method_list) + for (const auto& entry : method_list) { method_map.insert({ entry.first, entry.second }); method_map_rev.insert({ entry.second, entry.first }); } - for(const auto& entry : file_list) + for (const auto& entry : file_list) { file_map.insert({ entry.first, entry.second }); file_map_rev.insert({ entry.second, entry.first }); } - for(const auto& entry : token_list) + for (const auto& entry : token_list) { token_map.insert({ entry.first, entry.second }); token_map_rev.insert({ entry.second, entry.first }); diff --git a/src/s1/xsk/assembler.cpp b/src/s1/xsk/assembler.cpp index f7f9595b..5a28f998 100644 --- a/src/s1/xsk/assembler.cpp +++ b/src/s1/xsk/assembler.cpp @@ -571,4 +571,4 @@ auto assembler::resolve_label(const std::string& name) -> std::int32_t throw asm_error("Couldn't resolve label address of '" + name + "'!"); } -} // namespace xsk::gsc::s1 +} // namespace xsk::gsc::s1 diff --git a/src/s1/xsk/compiler.cpp b/src/s1/xsk/compiler.cpp index 63e878a4..1fd9e03e 100644 --- a/src/s1/xsk/compiler.cpp +++ b/src/s1/xsk/compiler.cpp @@ -152,7 +152,7 @@ void compiler::emit_declaration(const ast::decl& decl) void compiler::emit_decl_usingtree(const ast::decl_usingtree::ptr& animtree) { - if(developer_thread_) + if (developer_thread_) throw comp_error(animtree->loc(), "cannot put #using_animtree inside /# ... #/ comment"); animtrees_.push_back({ animtree->name->value, false }); @@ -195,6 +195,9 @@ void compiler::emit_stmt(const ast::stmt& stmt, const block::ptr& blk, bool last case ast::kind::stmt_list: emit_stmt_list(stmt.as_list, blk, last); break; + case ast::kind::stmt_dev: + emit_stmt_dev(stmt.as_dev, blk, last); + break; case ast::kind::stmt_expr: emit_stmt_expr(stmt.as_expr, blk); break; @@ -284,6 +287,11 @@ void compiler::emit_stmt_list(const ast::stmt_list::ptr& stmt, const block::ptr& } } +void compiler::emit_stmt_dev(const ast::stmt_dev::ptr& stmt, const block::ptr& blk, bool last) +{ + emit_stmt_list(stmt->list, blk, last); +} + void compiler::emit_stmt_expr(const ast::stmt_expr::ptr& stmt, const block::ptr& blk) { switch (stmt->expr.kind()) @@ -580,6 +588,8 @@ void compiler::emit_stmt_dowhile(const ast::stmt_dowhile::ptr& stmt, const block emit_stmt(stmt->stmt, stmt->blk, false); + insert_label(continue_loc); + bool const_cond = is_constant_condition(stmt->test); if (!const_cond) @@ -588,7 +598,6 @@ void compiler::emit_stmt_dowhile(const ast::stmt_dowhile::ptr& stmt, const block emit_opcode(opcode::OP_JumpOnFalse, break_loc); } - insert_label(continue_loc); emit_opcode(opcode::OP_jumpback, begin_loc); insert_label(break_loc); @@ -1009,9 +1018,6 @@ void compiler::emit_expr(const ast::expr& expr, const block::ptr& blk) case ast::kind::expr_string: emit_expr_string(expr.as_string); break; - case ast::kind::expr_color: - emit_expr_color(expr.as_color); - break; case ast::kind::expr_vector: emit_expr_vector(expr.as_vector, blk); break; @@ -1961,30 +1967,6 @@ void compiler::emit_expr_string(const ast::expr_string::ptr& expr) emit_opcode(opcode::OP_GetString, expr->value); } -void compiler::emit_expr_color(const ast::expr_color::ptr& expr) -{ - std::vector data; - std::string x, y, z; - - if (expr->value.size() == 3) - { - x = "0x" + expr->value.substr(0, 1) + expr->value.substr(0, 1); - y = "0x" + expr->value.substr(1, 1) + expr->value.substr(1, 1); - z = "0x" + expr->value.substr(2, 1) + expr->value.substr(2, 1); - } - else - { - x = "0x" + expr->value.substr(0, 2); - y = "0x" + expr->value.substr(2, 2); - z = "0x" + expr->value.substr(4, 2); - } - - data.push_back(utils::string::hex_to_dec(x.data())); - data.push_back(utils::string::hex_to_dec(y.data())); - data.push_back(utils::string::hex_to_dec(z.data())); - emit_opcode(opcode::OP_GetVector, data); -} - void compiler::emit_expr_float(const ast::expr_float::ptr& expr) { emit_opcode(opcode::OP_GetFloat, expr->value); @@ -2109,6 +2091,9 @@ void compiler::process_stmt(const ast::stmt& stmt, const block::ptr& blk) case ast::kind::stmt_list: process_stmt_list(stmt.as_list, blk); break; + case ast::kind::stmt_dev: + process_stmt_dev(stmt.as_dev, blk); + break; case ast::kind::stmt_expr: process_stmt_expr(stmt.as_expr, blk); break; @@ -2174,6 +2159,11 @@ void compiler::process_stmt_list(const ast::stmt_list::ptr& stmt, const block::p } } +void compiler::process_stmt_dev(const ast::stmt_dev::ptr& stmt, const block::ptr& blk) +{ + process_stmt_list(stmt->list, blk); +} + void compiler::process_stmt_expr(const ast::stmt_expr::ptr& stmt, const block::ptr& blk) { switch (stmt->expr.kind()) diff --git a/src/s1/xsk/compiler.hpp b/src/s1/xsk/compiler.hpp index 6f4916f9..110e59a0 100644 --- a/src/s1/xsk/compiler.hpp +++ b/src/s1/xsk/compiler.hpp @@ -48,6 +48,7 @@ private: void emit_decl_thread(const ast::decl_thread::ptr& thread); void emit_stmt(const ast::stmt& stmt, const block::ptr& blk, bool last); void emit_stmt_list(const ast::stmt_list::ptr& stmt, const block::ptr& blk, bool last); + void emit_stmt_dev(const ast::stmt_dev::ptr& stmt, const block::ptr& blk, bool last); void emit_stmt_expr(const ast::stmt_expr::ptr& stmt, const block::ptr& blk); void emit_stmt_call(const ast::stmt_call::ptr& stmt, const block::ptr& blk); void emit_stmt_assign(const ast::stmt_assign::ptr& stmt, const block::ptr& blk); @@ -110,7 +111,6 @@ private: void emit_expr_animtree(const ast::expr_animtree::ptr& expr); void emit_expr_istring(const ast::expr_istring::ptr& expr); void emit_expr_string(const ast::expr_string::ptr& expr); - void emit_expr_color(const ast::expr_color::ptr& expr); void emit_expr_float(const ast::expr_float::ptr& expr); void emit_expr_integer(const ast::expr_integer::ptr& expr); void emit_expr_false(const ast::expr_false::ptr& expr); @@ -123,6 +123,7 @@ private: void process_thread(const ast::decl_thread::ptr& decl, const block::ptr& blk); void process_stmt(const ast::stmt& stmt, const block::ptr& blk); void process_stmt_list(const ast::stmt_list::ptr& stmt, const block::ptr& blk); + void process_stmt_dev(const ast::stmt_dev::ptr& stmt, const block::ptr& blk); void process_stmt_expr(const ast::stmt_expr::ptr& stmt, const block::ptr& blk); void process_stmt_assign(const ast::stmt_assign::ptr& stmt, const block::ptr& blk); void process_stmt_waittill(const ast::stmt_waittill::ptr& stmt, const block::ptr& blk); diff --git a/src/s1/xsk/decompiler.cpp b/src/s1/xsk/decompiler.cpp index 1798acad..0703315e 100644 --- a/src/s1/xsk/decompiler.cpp +++ b/src/s1/xsk/decompiler.cpp @@ -75,7 +75,7 @@ void decompiler::decompile_function(const function::ptr& func) // hotfix empty else block at func end if (stmt->list.size() > 0 && stmt->list.back() == ast::kind::asm_jump) { - if(stmt->list.back().as_jump->value == blk.loc_end) + if (stmt->list.back().as_jump->value == blk.loc_end) stmt->list.pop_back(); } @@ -255,7 +255,7 @@ void decompiler::decompile_instruction(const instruction::ptr& inst) auto name = std::make_unique(loc, inst->data[1]); auto node = std::make_unique(loc, std::move(path), std::move(name)); stack_.push(std::move(node)); - }; + } break; case opcode::OP_CreateLocalVariable: { @@ -1657,7 +1657,7 @@ void decompiler::decompile_instruction(const instruction::ptr& inst) { auto expr = std::make_unique(loc, inst->data[0]); func_->stmt->list.push_back(ast::stmt(std::move(expr))); - if(stack_.size() != 0) tern_labels_.push_back(inst->data[0]); + if (stack_.size() != 0) tern_labels_.push_back(inst->data[0]); } break; case opcode::OP_jumpback: @@ -1856,7 +1856,7 @@ void decompiler::decompile_ifelses(const ast::stmt_list::ptr& stmt) { auto& entry = stmt->list.at(i); - if(entry == ast::kind::asm_jump_cond) + if (entry == ast::kind::asm_jump_cond) { auto j = (entry.as_cond->value == blocks_.back().loc_end) ? (stmt->list.size() - 1) : (find_location_index(stmt, entry.as_cond->value) - 1); auto last_loc = blocks_.back().loc_end; @@ -2135,7 +2135,7 @@ void decompiler::decompile_loop(const ast::stmt_list::ptr& block, std::uint32_t { auto ref = block->list.at(start).loc().label(); - if(!find_location_reference(block, 0, start, ref)) + if (!find_location_reference(block, 0, start, ref)) { decompile_foreach(block, start, end); return; @@ -2144,29 +2144,29 @@ void decompiler::decompile_loop(const ast::stmt_list::ptr& block, std::uint32_t } } - if(start > 0) // while at func start + if (start > 0) // while at func start { auto index = 1; - while(block->list.at(start - index) == ast::kind::asm_create) + while (block->list.at(start - index) == ast::kind::asm_create) { - if(start - index > 0) + if (start - index > 0) index++; else break; } - if(block->list.at(start - index) == ast::kind::stmt_assign) + if (block->list.at(start - index) == ast::kind::stmt_assign) { auto ref = block->list.at(end).loc().label(); auto ref2 = block->list.at(start).loc().label(); - if(find_location_reference(block, start, end, ref)) + if (find_location_reference(block, start, end, ref)) { // continue is at jumpback, not post-expr decompile_while(block, start, end); return; } - else if(find_location_reference(block, 0, start, ref2)) + else if (find_location_reference(block, 0, start, ref2)) { // begin is at condition, not pre-expr decompile_while(block, start, end); @@ -2406,7 +2406,7 @@ void decompiler::decompile_switch(const ast::stmt_list::ptr& stmt, std::uint32_t auto list = std::make_unique(loc); list->is_case = true; auto def_stmt = ast::stmt(std::make_unique(loc_pos, std::move(list))); - while(stmt->list.at(loc_idx) == ast::kind::stmt_case) + while (stmt->list.at(loc_idx) == ast::kind::stmt_case) loc_idx++; stmt->list.insert(stmt->list.begin() + loc_idx, std::move(def_stmt)); idx += 2; @@ -2507,7 +2507,7 @@ auto decompiler::find_location_index(const ast::stmt_list::ptr& stmt, const std: for (auto& entry : stmt->list) { - if(entry.loc().label() == location) + if (entry.loc().label() == location) return index; index++; @@ -2773,7 +2773,7 @@ void decompiler::process_stmt_ifelse(const ast::stmt_ifelse::ptr& stmt, const bl { abort = stmt->blk_if->abort; - if(abort == abort_t::abort_none) + if (abort == abort_t::abort_none) childs.push_back(stmt->blk_if.get()); } diff --git a/src/s1/xsk/lexer.cpp b/src/s1/xsk/lexer.cpp index 9e5dc90f..5dadb9cd 100644 --- a/src/s1/xsk/lexer.cpp +++ b/src/s1/xsk/lexer.cpp @@ -73,12 +73,12 @@ buffer::buffer() : length(0) buffer::~buffer() { - if(data) std::free(data); + if (data) std::free(data); } bool buffer::push(char c) { - if(length >= max_buf_size) + if (length >= max_buf_size) return false; data[length++] = c; @@ -90,7 +90,7 @@ reader::reader() : state(reader::end), buffer_pos(0), bytes_remaining(0), void reader::init(const char* data, size_t size) { - if(data && size) + if (data && size) { state = reader::ok; buffer_pos = data; @@ -112,7 +112,7 @@ void reader::advance() { ++buffer_pos; - if(bytes_remaining-- == 1) + if (bytes_remaining-- == 1) { state = reader::end; bytes_remaining = 0; @@ -562,7 +562,7 @@ lex_name: advance(); } - if(state_ == state::field) + if (state_ == state::field) { if (path) throw comp_error(loc_, "invalid field token '\\'"); diff --git a/src/s1/xsk/parser.cpp b/src/s1/xsk/parser.cpp index 0a993b97..3eee5bd8 100644 --- a/src/s1/xsk/parser.cpp +++ b/src/s1/xsk/parser.cpp @@ -382,6 +382,7 @@ namespace xsk { namespace gsc { namespace s1 { break; case symbol_kind::S_stmt: // stmt + case symbol_kind::S_stmt_or_dev: // stmt_or_dev value.YY_MOVE_OR_COPY< ast::stmt > (YY_MOVE (that.value)); break; @@ -413,6 +414,10 @@ namespace xsk { namespace gsc { namespace s1 { value.YY_MOVE_OR_COPY< ast::stmt_default::ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_stmt_dev: // stmt_dev + value.YY_MOVE_OR_COPY< ast::stmt_dev::ptr > (YY_MOVE (that.value)); + break; + case symbol_kind::S_stmt_dowhile: // stmt_dowhile value.YY_MOVE_OR_COPY< ast::stmt_dowhile::ptr > (YY_MOVE (that.value)); break; @@ -441,9 +446,9 @@ namespace xsk { namespace gsc { namespace s1 { value.YY_MOVE_OR_COPY< ast::stmt_ifelse::ptr > (YY_MOVE (that.value)); break; - case symbol_kind::S_stmt_dev: // stmt_dev - case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list + case symbol_kind::S_stmt_or_dev_list: // stmt_or_dev_list + case symbol_kind::S_stmt_block: // stmt_block value.YY_MOVE_OR_COPY< ast::stmt_list::ptr > (YY_MOVE (that.value)); break; @@ -684,6 +689,7 @@ namespace xsk { namespace gsc { namespace s1 { break; case symbol_kind::S_stmt: // stmt + case symbol_kind::S_stmt_or_dev: // stmt_or_dev value.move< ast::stmt > (YY_MOVE (that.value)); break; @@ -715,6 +721,10 @@ namespace xsk { namespace gsc { namespace s1 { value.move< ast::stmt_default::ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_stmt_dev: // stmt_dev + value.move< ast::stmt_dev::ptr > (YY_MOVE (that.value)); + break; + case symbol_kind::S_stmt_dowhile: // stmt_dowhile value.move< ast::stmt_dowhile::ptr > (YY_MOVE (that.value)); break; @@ -743,9 +753,9 @@ namespace xsk { namespace gsc { namespace s1 { value.move< ast::stmt_ifelse::ptr > (YY_MOVE (that.value)); break; - case symbol_kind::S_stmt_dev: // stmt_dev - case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list + case symbol_kind::S_stmt_or_dev_list: // stmt_or_dev_list + case symbol_kind::S_stmt_block: // stmt_block value.move< ast::stmt_list::ptr > (YY_MOVE (that.value)); break; @@ -986,6 +996,7 @@ namespace xsk { namespace gsc { namespace s1 { break; case symbol_kind::S_stmt: // stmt + case symbol_kind::S_stmt_or_dev: // stmt_or_dev value.copy< ast::stmt > (that.value); break; @@ -1017,6 +1028,10 @@ namespace xsk { namespace gsc { namespace s1 { value.copy< ast::stmt_default::ptr > (that.value); break; + case symbol_kind::S_stmt_dev: // stmt_dev + value.copy< ast::stmt_dev::ptr > (that.value); + break; + case symbol_kind::S_stmt_dowhile: // stmt_dowhile value.copy< ast::stmt_dowhile::ptr > (that.value); break; @@ -1045,9 +1060,9 @@ namespace xsk { namespace gsc { namespace s1 { value.copy< ast::stmt_ifelse::ptr > (that.value); break; - case symbol_kind::S_stmt_dev: // stmt_dev - case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list + case symbol_kind::S_stmt_or_dev_list: // stmt_or_dev_list + case symbol_kind::S_stmt_block: // stmt_block value.copy< ast::stmt_list::ptr > (that.value); break; @@ -1287,6 +1302,7 @@ namespace xsk { namespace gsc { namespace s1 { break; case symbol_kind::S_stmt: // stmt + case symbol_kind::S_stmt_or_dev: // stmt_or_dev value.move< ast::stmt > (that.value); break; @@ -1318,6 +1334,10 @@ namespace xsk { namespace gsc { namespace s1 { value.move< ast::stmt_default::ptr > (that.value); break; + case symbol_kind::S_stmt_dev: // stmt_dev + value.move< ast::stmt_dev::ptr > (that.value); + break; + case symbol_kind::S_stmt_dowhile: // stmt_dowhile value.move< ast::stmt_dowhile::ptr > (that.value); break; @@ -1346,9 +1366,9 @@ namespace xsk { namespace gsc { namespace s1 { value.move< ast::stmt_ifelse::ptr > (that.value); break; - case symbol_kind::S_stmt_dev: // stmt_dev - case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list + case symbol_kind::S_stmt_or_dev_list: // stmt_or_dev_list + case symbol_kind::S_stmt_block: // stmt_block value.move< ast::stmt_list::ptr > (that.value); break; @@ -1843,6 +1863,7 @@ namespace xsk { namespace gsc { namespace s1 { break; case symbol_kind::S_stmt: // stmt + case symbol_kind::S_stmt_or_dev: // stmt_or_dev yylhs.value.emplace< ast::stmt > (); break; @@ -1874,6 +1895,10 @@ namespace xsk { namespace gsc { namespace s1 { yylhs.value.emplace< ast::stmt_default::ptr > (); break; + case symbol_kind::S_stmt_dev: // stmt_dev + yylhs.value.emplace< ast::stmt_dev::ptr > (); + break; + case symbol_kind::S_stmt_dowhile: // stmt_dowhile yylhs.value.emplace< ast::stmt_dowhile::ptr > (); break; @@ -1902,9 +1927,9 @@ namespace xsk { namespace gsc { namespace s1 { yylhs.value.emplace< ast::stmt_ifelse::ptr > (); break; - case symbol_kind::S_stmt_dev: // stmt_dev - case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list + case symbol_kind::S_stmt_or_dev_list: // stmt_or_dev_list + case symbol_kind::S_stmt_block: // stmt_block yylhs.value.emplace< ast::stmt_list::ptr > (); break; @@ -1984,1309 +2009,1327 @@ namespace xsk { namespace gsc { namespace s1 { switch (yyn) { case 2: // root: program -#line 254 "parser.ypp" +#line 256 "parser.ypp" { ast = std::move(yystack_[0].value.as < ast::program::ptr > ()); } -#line 1990 "parser.cpp" +#line 2015 "parser.cpp" break; case 3: // root: %empty -#line 255 "parser.ypp" +#line 257 "parser.ypp" { ast = std::make_unique(yylhs.location); } -#line 1996 "parser.cpp" +#line 2021 "parser.cpp" break; case 4: // program: program inline -#line 260 "parser.ypp" +#line 262 "parser.ypp" { yylhs.value.as < ast::program::ptr > () = std::move(yystack_[1].value.as < ast::program::ptr > ()); } -#line 2002 "parser.cpp" +#line 2027 "parser.cpp" break; case 5: // program: program include -#line 262 "parser.ypp" +#line 264 "parser.ypp" { yylhs.value.as < ast::program::ptr > () = std::move(yystack_[1].value.as < ast::program::ptr > ()); yylhs.value.as < ast::program::ptr > ()->includes.push_back(std::move(yystack_[0].value.as < ast::include::ptr > ())); } -#line 2008 "parser.cpp" +#line 2033 "parser.cpp" break; case 6: // program: program declaration -#line 264 "parser.ypp" +#line 266 "parser.ypp" { yylhs.value.as < ast::program::ptr > () = std::move(yystack_[1].value.as < ast::program::ptr > ()); yylhs.value.as < ast::program::ptr > ()->declarations.push_back(std::move(yystack_[0].value.as < ast::decl > ())); } -#line 2014 "parser.cpp" +#line 2039 "parser.cpp" break; case 7: // program: inline -#line 266 "parser.ypp" +#line 268 "parser.ypp" { yylhs.value.as < ast::program::ptr > () = std::make_unique(yylhs.location); } -#line 2020 "parser.cpp" +#line 2045 "parser.cpp" break; case 8: // program: include -#line 268 "parser.ypp" +#line 270 "parser.ypp" { yylhs.value.as < ast::program::ptr > () = std::make_unique(yylhs.location); yylhs.value.as < ast::program::ptr > ()->includes.push_back(std::move(yystack_[0].value.as < ast::include::ptr > ())); } -#line 2026 "parser.cpp" +#line 2051 "parser.cpp" break; case 9: // program: declaration -#line 270 "parser.ypp" +#line 272 "parser.ypp" { yylhs.value.as < ast::program::ptr > () = std::make_unique(yylhs.location); yylhs.value.as < ast::program::ptr > ()->declarations.push_back(std::move(yystack_[0].value.as < ast::decl > ())); } -#line 2032 "parser.cpp" +#line 2057 "parser.cpp" break; case 10: // inline: "#inline" expr_path ";" -#line 274 "parser.ypp" +#line 276 "parser.ypp" { lexer.push_header(yystack_[1].value.as < ast::expr_path::ptr > ()->value); } -#line 2038 "parser.cpp" +#line 2063 "parser.cpp" break; case 11: // include: "#include" expr_path ";" -#line 279 "parser.ypp" +#line 281 "parser.ypp" { yylhs.value.as < ast::include::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr_path::ptr > ())); } -#line 2044 "parser.cpp" +#line 2069 "parser.cpp" break; case 12: // declaration: "/#" -#line 283 "parser.ypp" +#line 285 "parser.ypp" { yylhs.value.as < ast::decl > ().as_dev_begin = std::make_unique(yylhs.location); } -#line 2050 "parser.cpp" +#line 2075 "parser.cpp" break; case 13: // declaration: "#/" -#line 284 "parser.ypp" +#line 286 "parser.ypp" { yylhs.value.as < ast::decl > ().as_dev_end = std::make_unique(yylhs.location); } -#line 2056 "parser.cpp" +#line 2081 "parser.cpp" break; case 14: // declaration: decl_usingtree -#line 285 "parser.ypp" +#line 287 "parser.ypp" { yylhs.value.as < ast::decl > ().as_usingtree = std::move(yystack_[0].value.as < ast::decl_usingtree::ptr > ()); } -#line 2062 "parser.cpp" +#line 2087 "parser.cpp" break; case 15: // declaration: decl_constant -#line 286 "parser.ypp" +#line 288 "parser.ypp" { yylhs.value.as < ast::decl > ().as_constant = std::move(yystack_[0].value.as < ast::decl_constant::ptr > ()); } -#line 2068 "parser.cpp" +#line 2093 "parser.cpp" break; case 16: // declaration: decl_thread -#line 287 "parser.ypp" +#line 289 "parser.ypp" { yylhs.value.as < ast::decl > ().as_thread = std::move(yystack_[0].value.as < ast::decl_thread::ptr > ()); } -#line 2074 "parser.cpp" +#line 2099 "parser.cpp" break; case 17: // decl_usingtree: "#using_animtree" "(" expr_string ")" ";" -#line 292 "parser.ypp" +#line 294 "parser.ypp" { lexer.ban_header(yylhs.location); yylhs.value.as < ast::decl_usingtree::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr_string::ptr > ())); } -#line 2080 "parser.cpp" +#line 2105 "parser.cpp" break; case 18: // decl_constant: expr_identifier "=" expr ";" -#line 297 "parser.ypp" +#line 299 "parser.ypp" { yylhs.value.as < ast::decl_constant::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr > ())); } -#line 2086 "parser.cpp" +#line 2111 "parser.cpp" break; case 19: // decl_thread: expr_identifier "(" expr_parameters ")" stmt_block -#line 302 "parser.ypp" +#line 304 "parser.ypp" { lexer.ban_header(yylhs.location); yylhs.value.as < ast::decl_thread::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[2].value.as < ast::expr_parameters::ptr > ()), std::move(yystack_[0].value.as < ast::stmt_list::ptr > ())); } -#line 2092 "parser.cpp" +#line 2117 "parser.cpp" break; - case 20: // stmt: stmt_dev -#line 306 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_list = std::move(yystack_[0].value.as < ast::stmt_list::ptr > ()); } -#line 2098 "parser.cpp" - break; - - case 21: // stmt: stmt_block -#line 307 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_list = std::move(yystack_[0].value.as < ast::stmt_list::ptr > ()); } -#line 2104 "parser.cpp" - break; - - case 22: // stmt: stmt_call + case 20: // stmt: stmt_block #line 308 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_call = std::move(yystack_[0].value.as < ast::stmt_call::ptr > ()); } -#line 2110 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_list = std::move(yystack_[0].value.as < ast::stmt_list::ptr > ()); } +#line 2123 "parser.cpp" break; - case 23: // stmt: stmt_assign + case 21: // stmt: stmt_call #line 309 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_assign = std::move(yystack_[0].value.as < ast::stmt_assign::ptr > ()); } -#line 2116 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_call = std::move(yystack_[0].value.as < ast::stmt_call::ptr > ()); } +#line 2129 "parser.cpp" break; - case 24: // stmt: stmt_endon + case 22: // stmt: stmt_assign #line 310 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_endon = std::move(yystack_[0].value.as < ast::stmt_endon::ptr > ()); } -#line 2122 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_assign = std::move(yystack_[0].value.as < ast::stmt_assign::ptr > ()); } +#line 2135 "parser.cpp" break; - case 25: // stmt: stmt_notify + case 23: // stmt: stmt_endon #line 311 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_notify = std::move(yystack_[0].value.as < ast::stmt_notify::ptr > ()); } -#line 2128 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_endon = std::move(yystack_[0].value.as < ast::stmt_endon::ptr > ()); } +#line 2141 "parser.cpp" break; - case 26: // stmt: stmt_wait + case 24: // stmt: stmt_notify #line 312 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_wait = std::move(yystack_[0].value.as < ast::stmt_wait::ptr > ()); } -#line 2134 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_notify = std::move(yystack_[0].value.as < ast::stmt_notify::ptr > ()); } +#line 2147 "parser.cpp" break; - case 27: // stmt: stmt_waittill + case 25: // stmt: stmt_wait #line 313 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_waittill = std::move(yystack_[0].value.as < ast::stmt_waittill::ptr > ()); } -#line 2140 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_wait = std::move(yystack_[0].value.as < ast::stmt_wait::ptr > ()); } +#line 2153 "parser.cpp" break; - case 28: // stmt: stmt_waittillmatch + case 26: // stmt: stmt_waittill #line 314 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_waittillmatch = std::move(yystack_[0].value.as < ast::stmt_waittillmatch::ptr > ()); } -#line 2146 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_waittill = std::move(yystack_[0].value.as < ast::stmt_waittill::ptr > ()); } +#line 2159 "parser.cpp" break; - case 29: // stmt: stmt_waittillframeend + case 27: // stmt: stmt_waittillmatch #line 315 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_waittillframeend = std::move(yystack_[0].value.as < ast::stmt_waittillframeend::ptr > ()); } -#line 2152 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_waittillmatch = std::move(yystack_[0].value.as < ast::stmt_waittillmatch::ptr > ()); } +#line 2165 "parser.cpp" break; - case 30: // stmt: stmt_waitframe + case 28: // stmt: stmt_waittillframeend #line 316 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_waitframe = std::move(yystack_[0].value.as < ast::stmt_waitframe::ptr > ()); } -#line 2158 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_waittillframeend = std::move(yystack_[0].value.as < ast::stmt_waittillframeend::ptr > ()); } +#line 2171 "parser.cpp" break; - case 31: // stmt: stmt_if + case 29: // stmt: stmt_waitframe #line 317 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_if = std::move(yystack_[0].value.as < ast::stmt_if::ptr > ()); } -#line 2164 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_waitframe = std::move(yystack_[0].value.as < ast::stmt_waitframe::ptr > ()); } +#line 2177 "parser.cpp" break; - case 32: // stmt: stmt_ifelse + case 30: // stmt: stmt_if #line 318 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_ifelse = std::move(yystack_[0].value.as < ast::stmt_ifelse::ptr > ()); } -#line 2170 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_if = std::move(yystack_[0].value.as < ast::stmt_if::ptr > ()); } +#line 2183 "parser.cpp" break; - case 33: // stmt: stmt_while + case 31: // stmt: stmt_ifelse #line 319 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_while = std::move(yystack_[0].value.as < ast::stmt_while::ptr > ()); } -#line 2176 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_ifelse = std::move(yystack_[0].value.as < ast::stmt_ifelse::ptr > ()); } +#line 2189 "parser.cpp" break; - case 34: // stmt: stmt_dowhile + case 32: // stmt: stmt_while #line 320 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_dowhile = std::move(yystack_[0].value.as < ast::stmt_dowhile::ptr > ()); } -#line 2182 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_while = std::move(yystack_[0].value.as < ast::stmt_while::ptr > ()); } +#line 2195 "parser.cpp" break; - case 35: // stmt: stmt_for + case 33: // stmt: stmt_dowhile #line 321 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_for = std::move(yystack_[0].value.as < ast::stmt_for::ptr > ()); } -#line 2188 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_dowhile = std::move(yystack_[0].value.as < ast::stmt_dowhile::ptr > ()); } +#line 2201 "parser.cpp" break; - case 36: // stmt: stmt_foreach + case 34: // stmt: stmt_for #line 322 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_foreach = std::move(yystack_[0].value.as < ast::stmt_foreach::ptr > ()); } -#line 2194 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_for = std::move(yystack_[0].value.as < ast::stmt_for::ptr > ()); } +#line 2207 "parser.cpp" break; - case 37: // stmt: stmt_switch + case 35: // stmt: stmt_foreach #line 323 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_switch = std::move(yystack_[0].value.as < ast::stmt_switch::ptr > ()); } -#line 2200 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_foreach = std::move(yystack_[0].value.as < ast::stmt_foreach::ptr > ()); } +#line 2213 "parser.cpp" break; - case 38: // stmt: stmt_case + case 36: // stmt: stmt_switch #line 324 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_case = std::move(yystack_[0].value.as < ast::stmt_case::ptr > ()); } -#line 2206 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_switch = std::move(yystack_[0].value.as < ast::stmt_switch::ptr > ()); } +#line 2219 "parser.cpp" break; - case 39: // stmt: stmt_default + case 37: // stmt: stmt_case #line 325 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_default = std::move(yystack_[0].value.as < ast::stmt_default::ptr > ()); } -#line 2212 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_case = std::move(yystack_[0].value.as < ast::stmt_case::ptr > ()); } +#line 2225 "parser.cpp" break; - case 40: // stmt: stmt_break + case 38: // stmt: stmt_default #line 326 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_break = std::move(yystack_[0].value.as < ast::stmt_break::ptr > ()); } -#line 2218 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_default = std::move(yystack_[0].value.as < ast::stmt_default::ptr > ()); } +#line 2231 "parser.cpp" break; - case 41: // stmt: stmt_continue + case 39: // stmt: stmt_break #line 327 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_continue = std::move(yystack_[0].value.as < ast::stmt_continue::ptr > ()); } -#line 2224 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_break = std::move(yystack_[0].value.as < ast::stmt_break::ptr > ()); } +#line 2237 "parser.cpp" break; - case 42: // stmt: stmt_return + case 40: // stmt: stmt_continue #line 328 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_return = std::move(yystack_[0].value.as < ast::stmt_return::ptr > ()); } -#line 2230 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_continue = std::move(yystack_[0].value.as < ast::stmt_continue::ptr > ()); } +#line 2243 "parser.cpp" break; - case 43: // stmt: stmt_breakpoint + case 41: // stmt: stmt_return #line 329 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_breakpoint = std::move(yystack_[0].value.as < ast::stmt_breakpoint::ptr > ()); } -#line 2236 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_return = std::move(yystack_[0].value.as < ast::stmt_return::ptr > ()); } +#line 2249 "parser.cpp" break; - case 44: // stmt: stmt_prof_begin + case 42: // stmt: stmt_breakpoint #line 330 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_prof_begin = std::move(yystack_[0].value.as < ast::stmt_prof_begin::ptr > ()); } -#line 2242 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_breakpoint = std::move(yystack_[0].value.as < ast::stmt_breakpoint::ptr > ()); } +#line 2255 "parser.cpp" break; - case 45: // stmt: stmt_prof_end + case 43: // stmt: stmt_prof_begin #line 331 "parser.ypp" + { yylhs.value.as < ast::stmt > ().as_prof_begin = std::move(yystack_[0].value.as < ast::stmt_prof_begin::ptr > ()); } +#line 2261 "parser.cpp" + break; + + case 44: // stmt: stmt_prof_end +#line 332 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_prof_end = std::move(yystack_[0].value.as < ast::stmt_prof_end::ptr > ()); } -#line 2248 "parser.cpp" +#line 2267 "parser.cpp" break; - case 46: // stmt_dev: "/#" stmt_list "#/" -#line 335 "parser.ypp" - { yylhs.value.as < ast::stmt_list::ptr > () = std::move(yystack_[1].value.as < ast::stmt_list::ptr > ()); } -#line 2254 "parser.cpp" - break; - - case 47: // stmt_dev: "/#" "#/" + case 45: // stmt_or_dev: stmt #line 336 "parser.ypp" - { yylhs.value.as < ast::stmt_list::ptr > () = std::make_unique(yylhs.location); } -#line 2260 "parser.cpp" + { yylhs.value.as < ast::stmt > () = std::move(yystack_[0].value.as < ast::stmt > ()); } +#line 2273 "parser.cpp" break; - case 48: // stmt_block: "{" stmt_list "}" -#line 340 "parser.ypp" - { yylhs.value.as < ast::stmt_list::ptr > () = std::move(yystack_[1].value.as < ast::stmt_list::ptr > ()); } -#line 2266 "parser.cpp" + case 46: // stmt_or_dev: stmt_dev +#line 337 "parser.ypp" + { yylhs.value.as < ast::stmt > ().as_dev = std::move(yystack_[0].value.as < ast::stmt_dev::ptr > ()); } +#line 2279 "parser.cpp" break; - case 49: // stmt_block: "{" "}" -#line 341 "parser.ypp" - { yylhs.value.as < ast::stmt_list::ptr > () = std::make_unique(yylhs.location); } -#line 2272 "parser.cpp" - break; - - case 50: // stmt_list: stmt_list stmt -#line 346 "parser.ypp" + case 47: // stmt_list: stmt_list stmt +#line 342 "parser.ypp" { yylhs.value.as < ast::stmt_list::ptr > () = std::move(yystack_[1].value.as < ast::stmt_list::ptr > ()); yylhs.value.as < ast::stmt_list::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2278 "parser.cpp" +#line 2285 "parser.cpp" break; - case 51: // stmt_list: stmt -#line 348 "parser.ypp" + case 48: // stmt_list: stmt +#line 344 "parser.ypp" { yylhs.value.as < ast::stmt_list::ptr > () = std::make_unique(yylhs.location); yylhs.value.as < ast::stmt_list::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2284 "parser.cpp" +#line 2291 "parser.cpp" break; - case 52: // stmt_expr: expr_assign -#line 353 "parser.ypp" - { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2290 "parser.cpp" + case 49: // stmt_or_dev_list: stmt_or_dev_list stmt_or_dev +#line 349 "parser.ypp" + { yylhs.value.as < ast::stmt_list::ptr > () = std::move(yystack_[1].value.as < ast::stmt_list::ptr > ()); yylhs.value.as < ast::stmt_list::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::stmt > ())); } +#line 2297 "parser.cpp" break; - case 53: // stmt_expr: expr_increment + case 50: // stmt_or_dev_list: stmt_or_dev +#line 351 "parser.ypp" + { yylhs.value.as < ast::stmt_list::ptr > () = std::make_unique(yylhs.location); yylhs.value.as < ast::stmt_list::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::stmt > ())); } +#line 2303 "parser.cpp" + break; + + case 51: // stmt_dev: "/#" stmt_list "#/" #line 355 "parser.ypp" - { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2296 "parser.cpp" + { yylhs.value.as < ast::stmt_dev::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::stmt_list::ptr > ())); } +#line 2309 "parser.cpp" break; - case 54: // stmt_expr: expr_decrement -#line 357 "parser.ypp" - { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2302 "parser.cpp" + case 52: // stmt_dev: "/#" "#/" +#line 356 "parser.ypp" + { yylhs.value.as < ast::stmt_dev::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } +#line 2315 "parser.cpp" break; - case 55: // stmt_expr: %empty -#line 359 "parser.ypp" - { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } -#line 2308 "parser.cpp" + case 53: // stmt_block: "{" stmt_or_dev_list "}" +#line 360 "parser.ypp" + { yylhs.value.as < ast::stmt_list::ptr > () = std::move(yystack_[1].value.as < ast::stmt_list::ptr > ()); } +#line 2321 "parser.cpp" break; - case 56: // stmt_call: expr_call ";" -#line 364 "parser.ypp" - { yylhs.value.as < ast::stmt_call::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[1].value.as < ast::expr_call::ptr > ()))); } -#line 2314 "parser.cpp" + case 54: // stmt_block: "{" "}" +#line 361 "parser.ypp" + { yylhs.value.as < ast::stmt_list::ptr > () = std::make_unique(yylhs.location); } +#line 2327 "parser.cpp" break; - case 57: // stmt_call: expr_method ";" + case 55: // stmt_expr: expr_assign #line 366 "parser.ypp" + { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2333 "parser.cpp" + break; + + case 56: // stmt_expr: expr_increment +#line 368 "parser.ypp" + { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2339 "parser.cpp" + break; + + case 57: // stmt_expr: expr_decrement +#line 370 "parser.ypp" + { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2345 "parser.cpp" + break; + + case 58: // stmt_expr: %empty +#line 372 "parser.ypp" + { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } +#line 2351 "parser.cpp" + break; + + case 59: // stmt_call: expr_call ";" +#line 377 "parser.ypp" + { yylhs.value.as < ast::stmt_call::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[1].value.as < ast::expr_call::ptr > ()))); } +#line 2357 "parser.cpp" + break; + + case 60: // stmt_call: expr_method ";" +#line 379 "parser.ypp" { yylhs.value.as < ast::stmt_call::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[1].value.as < ast::expr_method::ptr > ()))); } -#line 2320 "parser.cpp" +#line 2363 "parser.cpp" break; - case 58: // stmt_assign: expr_assign ";" -#line 371 "parser.ypp" + case 61: // stmt_assign: expr_assign ";" +#line 384 "parser.ypp" { yylhs.value.as < ast::stmt_assign::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } -#line 2326 "parser.cpp" +#line 2369 "parser.cpp" break; - case 59: // stmt_assign: expr_increment ";" -#line 373 "parser.ypp" + case 62: // stmt_assign: expr_increment ";" +#line 386 "parser.ypp" { yylhs.value.as < ast::stmt_assign::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } -#line 2332 "parser.cpp" +#line 2375 "parser.cpp" break; - case 60: // stmt_assign: expr_decrement ";" -#line 375 "parser.ypp" + case 63: // stmt_assign: expr_decrement ";" +#line 388 "parser.ypp" { yylhs.value.as < ast::stmt_assign::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } -#line 2338 "parser.cpp" +#line 2381 "parser.cpp" break; - case 61: // stmt_endon: expr_object "endon" "(" expr ")" ";" -#line 380 "parser.ypp" + case 64: // stmt_endon: expr_object "endon" "(" expr ")" ";" +#line 393 "parser.ypp" { yylhs.value.as < ast::stmt_endon::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr > ())); } -#line 2344 "parser.cpp" +#line 2387 "parser.cpp" break; - case 62: // stmt_notify: expr_object "notify" "(" expr "," expr_arguments_no_empty ")" ";" -#line 385 "parser.ypp" + case 65: // stmt_notify: expr_object "notify" "(" expr "," expr_arguments_no_empty ")" ";" +#line 398 "parser.ypp" { yylhs.value.as < ast::stmt_notify::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < ast::expr > ()), std::move(yystack_[4].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr_arguments::ptr > ())); } -#line 2350 "parser.cpp" +#line 2393 "parser.cpp" break; - case 63: // stmt_notify: expr_object "notify" "(" expr ")" ";" -#line 387 "parser.ypp" + case 66: // stmt_notify: expr_object "notify" "(" expr ")" ";" +#line 400 "parser.ypp" { yylhs.value.as < ast::stmt_notify::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr > ()), std::make_unique(yylhs.location)); } -#line 2356 "parser.cpp" +#line 2399 "parser.cpp" break; - case 64: // stmt_wait: "wait" expr ";" -#line 392 "parser.ypp" + case 67: // stmt_wait: "wait" expr ";" +#line 405 "parser.ypp" { yylhs.value.as < ast::stmt_wait::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } -#line 2362 "parser.cpp" +#line 2405 "parser.cpp" break; - case 65: // stmt_waittill: expr_object "waittill" "(" expr "," expr_arguments_no_empty ")" ";" -#line 397 "parser.ypp" + case 68: // stmt_waittill: expr_object "waittill" "(" expr "," expr_arguments_no_empty ")" ";" +#line 410 "parser.ypp" { yylhs.value.as < ast::stmt_waittill::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < ast::expr > ()), std::move(yystack_[4].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr_arguments::ptr > ())); } -#line 2368 "parser.cpp" +#line 2411 "parser.cpp" break; - case 66: // stmt_waittill: expr_object "waittill" "(" expr ")" ";" -#line 399 "parser.ypp" + case 69: // stmt_waittill: expr_object "waittill" "(" expr ")" ";" +#line 412 "parser.ypp" { yylhs.value.as < ast::stmt_waittill::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr > ()), std::make_unique(yylhs.location)); } -#line 2374 "parser.cpp" +#line 2417 "parser.cpp" break; - case 67: // stmt_waittillmatch: expr_object "waittillmatch" "(" expr "," expr_arguments_no_empty ")" ";" -#line 404 "parser.ypp" + case 70: // stmt_waittillmatch: expr_object "waittillmatch" "(" expr "," expr_arguments_no_empty ")" ";" +#line 417 "parser.ypp" { yylhs.value.as < ast::stmt_waittillmatch::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < ast::expr > ()), std::move(yystack_[4].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr_arguments::ptr > ())); } -#line 2380 "parser.cpp" +#line 2423 "parser.cpp" break; - case 68: // stmt_waittillmatch: expr_object "waittillmatch" "(" expr ")" ";" -#line 406 "parser.ypp" + case 71: // stmt_waittillmatch: expr_object "waittillmatch" "(" expr ")" ";" +#line 419 "parser.ypp" { yylhs.value.as < ast::stmt_waittillmatch::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr > ()), std::make_unique(yylhs.location)); } -#line 2386 "parser.cpp" +#line 2429 "parser.cpp" break; - case 69: // stmt_waittillframeend: "waittillframeend" ";" -#line 411 "parser.ypp" + case 72: // stmt_waittillframeend: "waittillframeend" ";" +#line 424 "parser.ypp" { yylhs.value.as < ast::stmt_waittillframeend::ptr > () = std::make_unique(yylhs.location); } -#line 2392 "parser.cpp" +#line 2435 "parser.cpp" break; - case 70: // stmt_waitframe: "waitframe" ";" -#line 416 "parser.ypp" + case 73: // stmt_waitframe: "waitframe" ";" +#line 429 "parser.ypp" { yylhs.value.as < ast::stmt_waitframe::ptr > () = std::make_unique(yylhs.location); } -#line 2398 "parser.cpp" +#line 2441 "parser.cpp" break; - case 71: // stmt_waitframe: "waitframe" "(" ")" ";" -#line 418 "parser.ypp" + case 74: // stmt_waitframe: "waitframe" "(" ")" ";" +#line 431 "parser.ypp" { yylhs.value.as < ast::stmt_waitframe::ptr > () = std::make_unique(yylhs.location); } -#line 2404 "parser.cpp" +#line 2447 "parser.cpp" break; - case 72: // stmt_if: "if" "(" expr ")" stmt -#line 423 "parser.ypp" + case 75: // stmt_if: "if" "(" expr ")" stmt +#line 436 "parser.ypp" { yylhs.value.as < ast::stmt_if::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2410 "parser.cpp" +#line 2453 "parser.cpp" break; - case 73: // stmt_ifelse: "if" "(" expr ")" stmt "else" stmt -#line 428 "parser.ypp" + case 76: // stmt_ifelse: "if" "(" expr ")" stmt "else" stmt +#line 441 "parser.ypp" { yylhs.value.as < ast::stmt_ifelse::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::stmt > ()), std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2416 "parser.cpp" +#line 2459 "parser.cpp" break; - case 74: // stmt_while: "while" "(" expr ")" stmt -#line 433 "parser.ypp" + case 77: // stmt_while: "while" "(" expr ")" stmt +#line 446 "parser.ypp" { yylhs.value.as < ast::stmt_while::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2422 "parser.cpp" +#line 2465 "parser.cpp" break; - case 75: // stmt_dowhile: "do" stmt "while" "(" expr ")" ";" -#line 438 "parser.ypp" + case 78: // stmt_dowhile: "do" stmt "while" "(" expr ")" ";" +#line 451 "parser.ypp" { yylhs.value.as < ast::stmt_dowhile::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[5].value.as < ast::stmt > ())); } -#line 2428 "parser.cpp" +#line 2471 "parser.cpp" break; - case 76: // stmt_for: "for" "(" stmt_expr ";" expr_or_empty ";" stmt_expr ")" stmt -#line 443 "parser.ypp" + case 79: // stmt_for: "for" "(" stmt_expr ";" expr_or_empty ";" stmt_expr ")" stmt +#line 456 "parser.ypp" { yylhs.value.as < ast::stmt_for::ptr > () = std::make_unique(yylhs.location, ast::stmt(std::move(yystack_[6].value.as < ast::stmt_expr::ptr > ())), std::move(yystack_[4].value.as < ast::expr > ()), ast::stmt(std::move(yystack_[2].value.as < ast::stmt_expr::ptr > ())), std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2434 "parser.cpp" +#line 2477 "parser.cpp" break; - case 77: // stmt_foreach: "foreach" "(" expr_identifier "in" expr ")" stmt -#line 448 "parser.ypp" + case 80: // stmt_foreach: "foreach" "(" expr_identifier "in" expr ")" stmt +#line 461 "parser.ypp" { yylhs.value.as < ast::stmt_foreach::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[4].value.as < ast::expr_identifier::ptr > ())), std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2440 "parser.cpp" +#line 2483 "parser.cpp" break; - case 78: // stmt_foreach: "foreach" "(" expr_identifier "," expr_identifier "in" expr ")" stmt -#line 450 "parser.ypp" + case 81: // stmt_foreach: "foreach" "(" expr_identifier "," expr_identifier "in" expr ")" stmt +#line 463 "parser.ypp" { yylhs.value.as < ast::stmt_foreach::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[6].value.as < ast::expr_identifier::ptr > ())), ast::expr(std::move(yystack_[4].value.as < ast::expr_identifier::ptr > ())), std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2446 "parser.cpp" +#line 2489 "parser.cpp" break; - case 79: // stmt_switch: "switch" "(" expr ")" stmt_block -#line 455 "parser.ypp" + case 82: // stmt_switch: "switch" "(" expr ")" stmt_block +#line 468 "parser.ypp" { yylhs.value.as < ast::stmt_switch::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::stmt_list::ptr > ())); } -#line 2452 "parser.cpp" +#line 2495 "parser.cpp" break; - case 80: // stmt_case: "case" expr_integer ":" -#line 460 "parser.ypp" + case 83: // stmt_case: "case" expr_integer ":" +#line 473 "parser.ypp" { yylhs.value.as < ast::stmt_case::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[1].value.as < ast::expr_integer::ptr > ())), std::make_unique(yylhs.location)); } -#line 2458 "parser.cpp" +#line 2501 "parser.cpp" break; - case 81: // stmt_case: "case" expr_string ":" -#line 462 "parser.ypp" + case 84: // stmt_case: "case" expr_string ":" +#line 475 "parser.ypp" { yylhs.value.as < ast::stmt_case::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[1].value.as < ast::expr_string::ptr > ())), std::make_unique(yylhs.location)); } -#line 2464 "parser.cpp" +#line 2507 "parser.cpp" break; - case 82: // stmt_default: "default" ":" -#line 467 "parser.ypp" + case 85: // stmt_default: "default" ":" +#line 480 "parser.ypp" { yylhs.value.as < ast::stmt_default::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } -#line 2470 "parser.cpp" +#line 2513 "parser.cpp" break; - case 83: // stmt_break: "break" ";" -#line 472 "parser.ypp" + case 86: // stmt_break: "break" ";" +#line 485 "parser.ypp" { yylhs.value.as < ast::stmt_break::ptr > () = std::make_unique(yylhs.location); } -#line 2476 "parser.cpp" +#line 2519 "parser.cpp" break; - case 84: // stmt_continue: "continue" ";" -#line 477 "parser.ypp" + case 87: // stmt_continue: "continue" ";" +#line 490 "parser.ypp" { yylhs.value.as < ast::stmt_continue::ptr > () = std::make_unique(yylhs.location); } -#line 2482 "parser.cpp" +#line 2525 "parser.cpp" break; - case 85: // stmt_return: "return" expr ";" -#line 482 "parser.ypp" + case 88: // stmt_return: "return" expr ";" +#line 495 "parser.ypp" { yylhs.value.as < ast::stmt_return::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } -#line 2488 "parser.cpp" +#line 2531 "parser.cpp" break; - case 86: // stmt_return: "return" ";" -#line 484 "parser.ypp" + case 89: // stmt_return: "return" ";" +#line 497 "parser.ypp" { yylhs.value.as < ast::stmt_return::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } -#line 2494 "parser.cpp" +#line 2537 "parser.cpp" break; - case 87: // stmt_breakpoint: "breakpoint" ";" -#line 489 "parser.ypp" + case 90: // stmt_breakpoint: "breakpoint" ";" +#line 502 "parser.ypp" { yylhs.value.as < ast::stmt_breakpoint::ptr > () = std::make_unique(yylhs.location); } -#line 2500 "parser.cpp" +#line 2543 "parser.cpp" break; - case 88: // stmt_prof_begin: "prof_begin" "(" expr_arguments ")" ";" -#line 494 "parser.ypp" + case 91: // stmt_prof_begin: "prof_begin" "(" expr_arguments ")" ";" +#line 507 "parser.ypp" { yylhs.value.as < ast::stmt_prof_begin::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr_arguments::ptr > ())); } -#line 2506 "parser.cpp" +#line 2549 "parser.cpp" break; - case 89: // stmt_prof_end: "prof_end" "(" expr_arguments ")" ";" -#line 499 "parser.ypp" + case 92: // stmt_prof_end: "prof_end" "(" expr_arguments ")" ";" +#line 512 "parser.ypp" { yylhs.value.as < ast::stmt_prof_end::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr_arguments::ptr > ())); } -#line 2512 "parser.cpp" +#line 2555 "parser.cpp" break; - case 90: // expr: expr_ternary -#line 503 "parser.ypp" + case 93: // expr: expr_ternary +#line 516 "parser.ypp" { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } -#line 2518 "parser.cpp" +#line 2561 "parser.cpp" break; - case 91: // expr: expr_binary -#line 504 "parser.ypp" - { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } -#line 2524 "parser.cpp" - break; - - case 92: // expr: expr_primitive -#line 505 "parser.ypp" - { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } -#line 2530 "parser.cpp" - break; - - case 93: // expr_or_empty: expr -#line 509 "parser.ypp" - { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } -#line 2536 "parser.cpp" - break; - - case 94: // expr_or_empty: %empty -#line 510 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location); } -#line 2542 "parser.cpp" - break; - - case 95: // expr_assign: expr_object "=" expr -#line 515 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2548 "parser.cpp" - break; - - case 96: // expr_assign: expr_object "|=" expr + case 94: // expr: expr_binary #line 517 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2554 "parser.cpp" + { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } +#line 2567 "parser.cpp" break; - case 97: // expr_assign: expr_object "&=" expr -#line 519 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2560 "parser.cpp" + case 95: // expr: expr_primitive +#line 518 "parser.ypp" + { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } +#line 2573 "parser.cpp" break; - case 98: // expr_assign: expr_object "^=" expr -#line 521 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2566 "parser.cpp" + case 96: // expr_or_empty: expr +#line 522 "parser.ypp" + { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } +#line 2579 "parser.cpp" break; - case 99: // expr_assign: expr_object "<<=" expr + case 97: // expr_or_empty: %empty #line 523 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location); } +#line 2585 "parser.cpp" + break; + + case 98: // expr_assign: expr_object "=" expr +#line 528 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2591 "parser.cpp" + break; + + case 99: // expr_assign: expr_object "|=" expr +#line 530 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2597 "parser.cpp" + break; + + case 100: // expr_assign: expr_object "&=" expr +#line 532 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2603 "parser.cpp" + break; + + case 101: // expr_assign: expr_object "^=" expr +#line 534 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2609 "parser.cpp" + break; + + case 102: // expr_assign: expr_object "<<=" expr +#line 536 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()),std::move( yystack_[0].value.as < ast::expr > ())); } -#line 2572 "parser.cpp" +#line 2615 "parser.cpp" break; - case 100: // expr_assign: expr_object ">>=" expr -#line 525 "parser.ypp" + case 103: // expr_assign: expr_object ">>=" expr +#line 538 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2578 "parser.cpp" +#line 2621 "parser.cpp" break; - case 101: // expr_assign: expr_object "+=" expr -#line 527 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2584 "parser.cpp" - break; - - case 102: // expr_assign: expr_object "-=" expr -#line 529 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2590 "parser.cpp" - break; - - case 103: // expr_assign: expr_object "*=" expr -#line 531 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2596 "parser.cpp" - break; - - case 104: // expr_assign: expr_object "/=" expr -#line 533 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2602 "parser.cpp" - break; - - case 105: // expr_assign: expr_object "%=" expr -#line 535 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2608 "parser.cpp" - break; - - case 106: // expr_increment: "++" expr_object + case 104: // expr_assign: expr_object "+=" expr #line 540 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ()), true); } -#line 2614 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2627 "parser.cpp" break; - case 107: // expr_increment: expr_object "++" + case 105: // expr_assign: expr_object "-=" expr #line 542 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2633 "parser.cpp" + break; + + case 106: // expr_assign: expr_object "*=" expr +#line 544 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2639 "parser.cpp" + break; + + case 107: // expr_assign: expr_object "/=" expr +#line 546 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2645 "parser.cpp" + break; + + case 108: // expr_assign: expr_object "%=" expr +#line 548 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2651 "parser.cpp" + break; + + case 109: // expr_increment: "++" expr_object +#line 553 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ()), true); } +#line 2657 "parser.cpp" + break; + + case 110: // expr_increment: expr_object "++" +#line 555 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ()), false); } -#line 2620 "parser.cpp" +#line 2663 "parser.cpp" break; - case 108: // expr_decrement: "--" expr_object -#line 547 "parser.ypp" + case 111: // expr_decrement: "--" expr_object +#line 560 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ()), true); } -#line 2626 "parser.cpp" +#line 2669 "parser.cpp" break; - case 109: // expr_decrement: expr_object "--" -#line 549 "parser.ypp" + case 112: // expr_decrement: expr_object "--" +#line 562 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ()), false); } -#line 2632 "parser.cpp" +#line 2675 "parser.cpp" break; - case 110: // expr_ternary: expr "?" expr ":" expr -#line 554 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2638 "parser.cpp" - break; - - case 111: // expr_binary: expr "||" expr -#line 559 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2644 "parser.cpp" - break; - - case 112: // expr_binary: expr "&&" expr -#line 561 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2650 "parser.cpp" - break; - - case 113: // expr_binary: expr "==" expr -#line 563 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2656 "parser.cpp" - break; - - case 114: // expr_binary: expr "!=" expr -#line 565 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2662 "parser.cpp" - break; - - case 115: // expr_binary: expr "<=" expr + case 113: // expr_ternary: expr "?" expr ":" expr #line 567 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2681 "parser.cpp" + break; + + case 114: // expr_binary: expr "||" expr +#line 572 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2687 "parser.cpp" + break; + + case 115: // expr_binary: expr "&&" expr +#line 574 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2693 "parser.cpp" + break; + + case 116: // expr_binary: expr "==" expr +#line 576 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2699 "parser.cpp" + break; + + case 117: // expr_binary: expr "!=" expr +#line 578 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2705 "parser.cpp" + break; + + case 118: // expr_binary: expr "<=" expr +#line 580 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2668 "parser.cpp" +#line 2711 "parser.cpp" break; - case 116: // expr_binary: expr ">=" expr -#line 569 "parser.ypp" + case 119: // expr_binary: expr ">=" expr +#line 582 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2674 "parser.cpp" +#line 2717 "parser.cpp" break; - case 117: // expr_binary: expr "<" expr -#line 571 "parser.ypp" + case 120: // expr_binary: expr "<" expr +#line 584 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2680 "parser.cpp" +#line 2723 "parser.cpp" break; - case 118: // expr_binary: expr ">" expr -#line 573 "parser.ypp" + case 121: // expr_binary: expr ">" expr +#line 586 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2686 "parser.cpp" +#line 2729 "parser.cpp" break; - case 119: // expr_binary: expr "|" expr -#line 575 "parser.ypp" + case 122: // expr_binary: expr "|" expr +#line 588 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2692 "parser.cpp" +#line 2735 "parser.cpp" break; - case 120: // expr_binary: expr "&" expr -#line 577 "parser.ypp" + case 123: // expr_binary: expr "&" expr +#line 590 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2698 "parser.cpp" +#line 2741 "parser.cpp" break; - case 121: // expr_binary: expr "^" expr -#line 579 "parser.ypp" + case 124: // expr_binary: expr "^" expr +#line 592 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2704 "parser.cpp" +#line 2747 "parser.cpp" break; - case 122: // expr_binary: expr "<<" expr -#line 581 "parser.ypp" + case 125: // expr_binary: expr "<<" expr +#line 594 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2710 "parser.cpp" +#line 2753 "parser.cpp" break; - case 123: // expr_binary: expr ">>" expr -#line 583 "parser.ypp" + case 126: // expr_binary: expr ">>" expr +#line 596 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2716 "parser.cpp" +#line 2759 "parser.cpp" break; - case 124: // expr_binary: expr "+" expr -#line 585 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2722 "parser.cpp" - break; - - case 125: // expr_binary: expr "-" expr -#line 587 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2728 "parser.cpp" - break; - - case 126: // expr_binary: expr "*" expr -#line 589 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2734 "parser.cpp" - break; - - case 127: // expr_binary: expr "/" expr -#line 591 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2740 "parser.cpp" - break; - - case 128: // expr_binary: expr "%" expr -#line 593 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2746 "parser.cpp" - break; - - case 129: // expr_primitive: expr_complement -#line 597 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_complement::ptr > ()); } -#line 2752 "parser.cpp" - break; - - case 130: // expr_primitive: expr_not + case 127: // expr_binary: expr "+" expr #line 598 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_not::ptr > ()); } -#line 2758 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2765 "parser.cpp" break; - case 131: // expr_primitive: expr_call -#line 599 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_call::ptr > ()); } -#line 2764 "parser.cpp" - break; - - case 132: // expr_primitive: expr_method + case 128: // expr_binary: expr "-" expr #line 600 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_method::ptr > ()); } -#line 2770 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2771 "parser.cpp" break; - case 133: // expr_primitive: expr_add_array -#line 601 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_add_array::ptr > ()); } -#line 2776 "parser.cpp" - break; - - case 134: // expr_primitive: expr_reference + case 129: // expr_binary: expr "*" expr #line 602 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_reference::ptr > ()); } -#line 2782 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2777 "parser.cpp" break; - case 135: // expr_primitive: expr_array -#line 603 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_array::ptr > ()); } -#line 2788 "parser.cpp" - break; - - case 136: // expr_primitive: expr_field + case 130: // expr_binary: expr "/" expr #line 604 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_field::ptr > ()); } -#line 2794 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2783 "parser.cpp" break; - case 137: // expr_primitive: expr_size -#line 605 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_size::ptr > ()); } -#line 2800 "parser.cpp" - break; - - case 138: // expr_primitive: expr_paren + case 131: // expr_binary: expr "%" expr #line 606 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_paren::ptr > ()); } -#line 2806 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2789 "parser.cpp" break; - case 139: // expr_primitive: expr_thisthread -#line 607 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_thisthread::ptr > ()); } -#line 2812 "parser.cpp" - break; - - case 140: // expr_primitive: expr_empty_array -#line 608 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_empty_array::ptr > ()); } -#line 2818 "parser.cpp" - break; - - case 141: // expr_primitive: expr_undefined -#line 609 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_undefined::ptr > ()); } -#line 2824 "parser.cpp" - break; - - case 142: // expr_primitive: expr_game + case 132: // expr_primitive: expr_complement #line 610 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_game::ptr > ()); } -#line 2830 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_complement::ptr > ()); } +#line 2795 "parser.cpp" break; - case 143: // expr_primitive: expr_self + case 133: // expr_primitive: expr_not #line 611 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_self::ptr > ()); } -#line 2836 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_not::ptr > ()); } +#line 2801 "parser.cpp" break; - case 144: // expr_primitive: expr_anim + case 134: // expr_primitive: expr_call #line 612 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_anim::ptr > ()); } -#line 2842 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_call::ptr > ()); } +#line 2807 "parser.cpp" break; - case 145: // expr_primitive: expr_level + case 135: // expr_primitive: expr_method #line 613 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_level::ptr > ()); } -#line 2848 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_method::ptr > ()); } +#line 2813 "parser.cpp" break; - case 146: // expr_primitive: expr_animation + case 136: // expr_primitive: expr_add_array #line 614 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_animation::ptr > ()); } -#line 2854 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_add_array::ptr > ()); } +#line 2819 "parser.cpp" break; - case 147: // expr_primitive: expr_animtree + case 137: // expr_primitive: expr_reference #line 615 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_animtree::ptr > ()); } -#line 2860 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_reference::ptr > ()); } +#line 2825 "parser.cpp" break; - case 148: // expr_primitive: expr_identifier + case 138: // expr_primitive: expr_array #line 616 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ()); } -#line 2866 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_array::ptr > ()); } +#line 2831 "parser.cpp" break; - case 149: // expr_primitive: expr_istring + case 139: // expr_primitive: expr_field #line 617 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_istring::ptr > ()); } -#line 2872 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_field::ptr > ()); } +#line 2837 "parser.cpp" break; - case 150: // expr_primitive: expr_string + case 140: // expr_primitive: expr_size #line 618 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_string::ptr > ()); } -#line 2878 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_size::ptr > ()); } +#line 2843 "parser.cpp" break; - case 151: // expr_primitive: expr_color + case 141: // expr_primitive: expr_paren #line 619 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_color::ptr > ()); } -#line 2884 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_paren::ptr > ()); } +#line 2849 "parser.cpp" break; - case 152: // expr_primitive: expr_vector + case 142: // expr_primitive: expr_thisthread #line 620 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_vector::ptr > ()); } -#line 2890 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_thisthread::ptr > ()); } +#line 2855 "parser.cpp" break; - case 153: // expr_primitive: expr_float + case 143: // expr_primitive: expr_empty_array #line 621 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_float::ptr > ()); } -#line 2896 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_empty_array::ptr > ()); } +#line 2861 "parser.cpp" break; - case 154: // expr_primitive: expr_integer + case 144: // expr_primitive: expr_undefined #line 622 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_integer::ptr > ()); } -#line 2902 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_undefined::ptr > ()); } +#line 2867 "parser.cpp" break; - case 155: // expr_primitive: expr_false + case 145: // expr_primitive: expr_game #line 623 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_false::ptr > ()); } -#line 2908 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_game::ptr > ()); } +#line 2873 "parser.cpp" break; - case 156: // expr_primitive: expr_true + case 146: // expr_primitive: expr_self #line 624 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_true::ptr > ()); } -#line 2914 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_self::ptr > ()); } +#line 2879 "parser.cpp" break; - case 157: // expr_complement: "~" expr + case 147: // expr_primitive: expr_anim +#line 625 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_anim::ptr > ()); } +#line 2885 "parser.cpp" + break; + + case 148: // expr_primitive: expr_level +#line 626 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_level::ptr > ()); } +#line 2891 "parser.cpp" + break; + + case 149: // expr_primitive: expr_animation +#line 627 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_animation::ptr > ()); } +#line 2897 "parser.cpp" + break; + + case 150: // expr_primitive: expr_animtree +#line 628 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_animtree::ptr > ()); } +#line 2903 "parser.cpp" + break; + + case 151: // expr_primitive: expr_identifier #line 629 "parser.ypp" - { yylhs.value.as < ast::expr_complement::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2920 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ()); } +#line 2909 "parser.cpp" break; - case 158: // expr_not: "!" expr + case 152: // expr_primitive: expr_istring +#line 630 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_istring::ptr > ()); } +#line 2915 "parser.cpp" + break; + + case 153: // expr_primitive: expr_string +#line 631 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_string::ptr > ()); } +#line 2921 "parser.cpp" + break; + + case 154: // expr_primitive: expr_color +#line 632 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_color::ptr > ()); } +#line 2927 "parser.cpp" + break; + + case 155: // expr_primitive: expr_vector +#line 633 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_vector::ptr > ()); } +#line 2933 "parser.cpp" + break; + + case 156: // expr_primitive: expr_float #line 634 "parser.ypp" - { yylhs.value.as < ast::expr_not::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2926 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_float::ptr > ()); } +#line 2939 "parser.cpp" break; - case 159: // expr_call: expr_function -#line 638 "parser.ypp" - { yylhs.value.as < ast::expr_call::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::call > ())); } -#line 2932 "parser.cpp" + case 157: // expr_primitive: expr_integer +#line 635 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_integer::ptr > ()); } +#line 2945 "parser.cpp" break; - case 160: // expr_call: expr_pointer -#line 639 "parser.ypp" - { yylhs.value.as < ast::expr_call::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::call > ())); } -#line 2938 "parser.cpp" + case 158: // expr_primitive: expr_false +#line 636 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_false::ptr > ()); } +#line 2951 "parser.cpp" break; - case 161: // expr_method: expr_object expr_function + case 159: // expr_primitive: expr_true +#line 637 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_true::ptr > ()); } +#line 2957 "parser.cpp" + break; + + case 160: // expr_complement: "~" expr #line 642 "parser.ypp" - { yylhs.value.as < ast::expr_method::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::call > ())); } -#line 2944 "parser.cpp" + { yylhs.value.as < ast::expr_complement::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2963 "parser.cpp" break; - case 162: // expr_method: expr_object expr_pointer -#line 643 "parser.ypp" - { yylhs.value.as < ast::expr_method::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::call > ())); } -#line 2950 "parser.cpp" + case 161: // expr_not: "!" expr +#line 647 "parser.ypp" + { yylhs.value.as < ast::expr_not::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2969 "parser.cpp" break; - case 163: // expr_function: expr_identifier "(" expr_arguments ")" -#line 648 "parser.ypp" - { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::normal); } -#line 2956 "parser.cpp" + case 162: // expr_call: expr_function +#line 651 "parser.ypp" + { yylhs.value.as < ast::expr_call::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::call > ())); } +#line 2975 "parser.cpp" break; - case 164: // expr_function: expr_path "::" expr_identifier "(" expr_arguments ")" -#line 650 "parser.ypp" - { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr_path::ptr > ()), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::normal); } -#line 2962 "parser.cpp" - break; - - case 165: // expr_function: "thread" expr_identifier "(" expr_arguments ")" + case 163: // expr_call: expr_pointer #line 652 "parser.ypp" - { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::thread); } -#line 2968 "parser.cpp" + { yylhs.value.as < ast::expr_call::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::call > ())); } +#line 2981 "parser.cpp" break; - case 166: // expr_function: "thread" expr_path "::" expr_identifier "(" expr_arguments ")" -#line 654 "parser.ypp" - { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr_path::ptr > ()), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::thread); } -#line 2974 "parser.cpp" + case 164: // expr_method: expr_object expr_function +#line 655 "parser.ypp" + { yylhs.value.as < ast::expr_method::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::call > ())); } +#line 2987 "parser.cpp" break; - case 167: // expr_function: "childthread" expr_identifier "(" expr_arguments ")" + case 165: // expr_method: expr_object expr_pointer #line 656 "parser.ypp" - { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::childthread); } -#line 2980 "parser.cpp" + { yylhs.value.as < ast::expr_method::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::call > ())); } +#line 2993 "parser.cpp" break; - case 168: // expr_function: "childthread" expr_path "::" expr_identifier "(" expr_arguments ")" -#line 658 "parser.ypp" - { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr_path::ptr > ()), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::childthread); } -#line 2986 "parser.cpp" + case 166: // expr_function: expr_identifier "(" expr_arguments ")" +#line 661 "parser.ypp" + { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::normal); } +#line 2999 "parser.cpp" break; - case 169: // expr_pointer: "[" "[" expr "]" "]" "(" expr_arguments ")" + case 167: // expr_function: expr_path "::" expr_identifier "(" expr_arguments ")" #line 663 "parser.ypp" - { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::normal); } -#line 2992 "parser.cpp" + { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr_path::ptr > ()), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::normal); } +#line 3005 "parser.cpp" break; - case 170: // expr_pointer: "thread" "[" "[" expr "]" "]" "(" expr_arguments ")" + case 168: // expr_function: "thread" expr_identifier "(" expr_arguments ")" #line 665 "parser.ypp" - { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::thread); } -#line 2998 "parser.cpp" + { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::thread); } +#line 3011 "parser.cpp" break; - case 171: // expr_pointer: "childthread" "[" "[" expr "]" "]" "(" expr_arguments ")" + case 169: // expr_function: "thread" expr_path "::" expr_identifier "(" expr_arguments ")" #line 667 "parser.ypp" - { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::childthread); } -#line 3004 "parser.cpp" + { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr_path::ptr > ()), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::thread); } +#line 3017 "parser.cpp" break; - case 172: // expr_pointer: "call" "[" "[" expr "]" "]" "(" expr_arguments ")" + case 170: // expr_function: "childthread" expr_identifier "(" expr_arguments ")" #line 669 "parser.ypp" + { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::childthread); } +#line 3023 "parser.cpp" + break; + + case 171: // expr_function: "childthread" expr_path "::" expr_identifier "(" expr_arguments ")" +#line 671 "parser.ypp" + { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr_path::ptr > ()), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::childthread); } +#line 3029 "parser.cpp" + break; + + case 172: // expr_pointer: "[" "[" expr "]" "]" "(" expr_arguments ")" +#line 676 "parser.ypp" + { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::normal); } +#line 3035 "parser.cpp" + break; + + case 173: // expr_pointer: "thread" "[" "[" expr "]" "]" "(" expr_arguments ")" +#line 678 "parser.ypp" + { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::thread); } +#line 3041 "parser.cpp" + break; + + case 174: // expr_pointer: "childthread" "[" "[" expr "]" "]" "(" expr_arguments ")" +#line 680 "parser.ypp" + { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::childthread); } +#line 3047 "parser.cpp" + break; + + case 175: // expr_pointer: "call" "[" "[" expr "]" "]" "(" expr_arguments ")" +#line 682 "parser.ypp" { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::builtin); } -#line 3010 "parser.cpp" +#line 3053 "parser.cpp" break; - case 173: // expr_add_array: "[" expr_arguments_no_empty "]" -#line 674 "parser.ypp" + case 176: // expr_add_array: "[" expr_arguments_no_empty "]" +#line 687 "parser.ypp" { yylhs.value.as < ast::expr_add_array::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ())); } -#line 3016 "parser.cpp" +#line 3059 "parser.cpp" break; - case 174: // expr_parameters: expr_parameters "," expr_identifier -#line 679 "parser.ypp" + case 177: // expr_parameters: expr_parameters "," expr_identifier +#line 692 "parser.ypp" { yylhs.value.as < ast::expr_parameters::ptr > () = std::move(yystack_[2].value.as < ast::expr_parameters::ptr > ()); yylhs.value.as < ast::expr_parameters::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ())); } -#line 3022 "parser.cpp" +#line 3065 "parser.cpp" break; - case 175: // expr_parameters: expr_identifier -#line 681 "parser.ypp" + case 178: // expr_parameters: expr_identifier +#line 694 "parser.ypp" { yylhs.value.as < ast::expr_parameters::ptr > () = std::make_unique(yylhs.location); yylhs.value.as < ast::expr_parameters::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ())); } -#line 3028 "parser.cpp" +#line 3071 "parser.cpp" break; - case 176: // expr_parameters: %empty -#line 683 "parser.ypp" + case 179: // expr_parameters: %empty +#line 696 "parser.ypp" { yylhs.value.as < ast::expr_parameters::ptr > () = std::make_unique(yylhs.location); } -#line 3034 "parser.cpp" +#line 3077 "parser.cpp" break; - case 177: // expr_arguments: expr_arguments_no_empty -#line 688 "parser.ypp" + case 180: // expr_arguments: expr_arguments_no_empty +#line 701 "parser.ypp" { yylhs.value.as < ast::expr_arguments::ptr > () = std::move(yystack_[0].value.as < ast::expr_arguments::ptr > ()); } -#line 3040 "parser.cpp" +#line 3083 "parser.cpp" break; - case 178: // expr_arguments: %empty -#line 690 "parser.ypp" + case 181: // expr_arguments: %empty +#line 703 "parser.ypp" { yylhs.value.as < ast::expr_arguments::ptr > () = std::make_unique(yylhs.location); } -#line 3046 "parser.cpp" +#line 3089 "parser.cpp" break; - case 179: // expr_arguments_no_empty: expr_arguments "," expr -#line 695 "parser.ypp" + case 182: // expr_arguments_no_empty: expr_arguments "," expr +#line 708 "parser.ypp" { yylhs.value.as < ast::expr_arguments::ptr > () = std::move(yystack_[2].value.as < ast::expr_arguments::ptr > ()); yylhs.value.as < ast::expr_arguments::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::expr > ())); } -#line 3052 "parser.cpp" +#line 3095 "parser.cpp" break; - case 180: // expr_arguments_no_empty: expr -#line 697 "parser.ypp" + case 183: // expr_arguments_no_empty: expr +#line 710 "parser.ypp" { yylhs.value.as < ast::expr_arguments::ptr > () = std::make_unique(yylhs.location); yylhs.value.as < ast::expr_arguments::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::expr > ())); } -#line 3058 "parser.cpp" +#line 3101 "parser.cpp" break; - case 181: // expr_reference: "::" expr_identifier -#line 702 "parser.ypp" + case 184: // expr_reference: "::" expr_identifier +#line 715 "parser.ypp" { yylhs.value.as < ast::expr_reference::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ())); } -#line 3064 "parser.cpp" +#line 3107 "parser.cpp" break; - case 182: // expr_reference: expr_path "::" expr_identifier -#line 704 "parser.ypp" + case 185: // expr_reference: expr_path "::" expr_identifier +#line 717 "parser.ypp" { yylhs.value.as < ast::expr_reference::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr_path::ptr > ()), std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ())); } -#line 3070 "parser.cpp" +#line 3113 "parser.cpp" break; - case 183: // expr_array: expr_object "[" expr "]" -#line 709 "parser.ypp" + case 186: // expr_array: expr_object "[" expr "]" +#line 722 "parser.ypp" { yylhs.value.as < ast::expr_array::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[3].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr > ())); } -#line 3076 "parser.cpp" +#line 3119 "parser.cpp" break; - case 184: // expr_field: expr_object "." expr_identifier -#line 714 "parser.ypp" + case 187: // expr_field: expr_object "." expr_identifier +#line 727 "parser.ypp" { yylhs.value.as < ast::expr_field::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ())); } -#line 3082 "parser.cpp" +#line 3125 "parser.cpp" break; - case 185: // expr_field: expr_object "field" -#line 716 "parser.ypp" + case 188: // expr_field: expr_object "field" +#line 729 "parser.ypp" { yylhs.value.as < ast::expr_field::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ()), std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ())); } -#line 3088 "parser.cpp" +#line 3131 "parser.cpp" break; - case 186: // expr_size: expr_object ".size" -#line 721 "parser.ypp" - { yylhs.value.as < ast::expr_size::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } -#line 3094 "parser.cpp" - break; - - case 187: // expr_paren: "(" expr ")" -#line 726 "parser.ypp" - { yylhs.value.as < ast::expr_paren::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } -#line 3100 "parser.cpp" - break; - - case 188: // expr_object: expr_call -#line 730 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_call::ptr > ()); } -#line 3106 "parser.cpp" - break; - - case 189: // expr_object: expr_method -#line 731 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_method::ptr > ()); } -#line 3112 "parser.cpp" - break; - - case 190: // expr_object: expr_array -#line 732 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_array::ptr > ()); } -#line 3118 "parser.cpp" - break; - - case 191: // expr_object: expr_field -#line 733 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_field::ptr > ()); } -#line 3124 "parser.cpp" - break; - - case 192: // expr_object: expr_game + case 189: // expr_size: expr_object ".size" #line 734 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_game::ptr > ()); } -#line 3130 "parser.cpp" + { yylhs.value.as < ast::expr_size::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } +#line 3137 "parser.cpp" break; - case 193: // expr_object: expr_self -#line 735 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_self::ptr > ()); } -#line 3136 "parser.cpp" + case 190: // expr_paren: "(" expr ")" +#line 739 "parser.ypp" + { yylhs.value.as < ast::expr_paren::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } +#line 3143 "parser.cpp" break; - case 194: // expr_object: expr_anim -#line 736 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_anim::ptr > ()); } -#line 3142 "parser.cpp" - break; - - case 195: // expr_object: expr_level -#line 737 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_level::ptr > ()); } -#line 3148 "parser.cpp" - break; - - case 196: // expr_object: expr_identifier -#line 738 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ()); } -#line 3154 "parser.cpp" - break; - - case 197: // expr_thisthread: "thisthread" + case 191: // expr_object: expr_call #line 743 "parser.ypp" - { yylhs.value.as < ast::expr_thisthread::ptr > () = std::make_unique(yylhs.location); } -#line 3160 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_call::ptr > ()); } +#line 3149 "parser.cpp" break; - case 198: // expr_empty_array: "[" "]" + case 192: // expr_object: expr_method +#line 744 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_method::ptr > ()); } +#line 3155 "parser.cpp" + break; + + case 193: // expr_object: expr_array +#line 745 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_array::ptr > ()); } +#line 3161 "parser.cpp" + break; + + case 194: // expr_object: expr_field +#line 746 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_field::ptr > ()); } +#line 3167 "parser.cpp" + break; + + case 195: // expr_object: expr_game +#line 747 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_game::ptr > ()); } +#line 3173 "parser.cpp" + break; + + case 196: // expr_object: expr_self #line 748 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_self::ptr > ()); } +#line 3179 "parser.cpp" + break; + + case 197: // expr_object: expr_anim +#line 749 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_anim::ptr > ()); } +#line 3185 "parser.cpp" + break; + + case 198: // expr_object: expr_level +#line 750 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_level::ptr > ()); } +#line 3191 "parser.cpp" + break; + + case 199: // expr_object: expr_identifier +#line 751 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ()); } +#line 3197 "parser.cpp" + break; + + case 200: // expr_thisthread: "thisthread" +#line 756 "parser.ypp" + { yylhs.value.as < ast::expr_thisthread::ptr > () = std::make_unique(yylhs.location); } +#line 3203 "parser.cpp" + break; + + case 201: // expr_empty_array: "[" "]" +#line 761 "parser.ypp" { yylhs.value.as < ast::expr_empty_array::ptr > () = std::make_unique(yylhs.location); } -#line 3166 "parser.cpp" +#line 3209 "parser.cpp" break; - case 199: // expr_undefined: "undefined" -#line 753 "parser.ypp" + case 202: // expr_undefined: "undefined" +#line 766 "parser.ypp" { yylhs.value.as < ast::expr_undefined::ptr > () = std::make_unique(yylhs.location); } -#line 3172 "parser.cpp" +#line 3215 "parser.cpp" break; - case 200: // expr_game: "game" -#line 758 "parser.ypp" + case 203: // expr_game: "game" +#line 771 "parser.ypp" { yylhs.value.as < ast::expr_game::ptr > () = std::make_unique(yylhs.location); } -#line 3178 "parser.cpp" +#line 3221 "parser.cpp" break; - case 201: // expr_self: "self" -#line 763 "parser.ypp" + case 204: // expr_self: "self" +#line 776 "parser.ypp" { yylhs.value.as < ast::expr_self::ptr > () = std::make_unique(yylhs.location); } -#line 3184 "parser.cpp" +#line 3227 "parser.cpp" break; - case 202: // expr_anim: "anim" -#line 768 "parser.ypp" + case 205: // expr_anim: "anim" +#line 781 "parser.ypp" { yylhs.value.as < ast::expr_anim::ptr > () = std::make_unique(yylhs.location); } -#line 3190 "parser.cpp" +#line 3233 "parser.cpp" break; - case 203: // expr_level: "level" -#line 773 "parser.ypp" + case 206: // expr_level: "level" +#line 786 "parser.ypp" { yylhs.value.as < ast::expr_level::ptr > () = std::make_unique(yylhs.location); } -#line 3196 "parser.cpp" +#line 3239 "parser.cpp" break; - case 204: // expr_animation: "%" "identifier" -#line 778 "parser.ypp" + case 207: // expr_animation: "%" "identifier" +#line 791 "parser.ypp" { yylhs.value.as < ast::expr_animation::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3202 "parser.cpp" +#line 3245 "parser.cpp" break; - case 205: // expr_animtree: "#animtree" -#line 783 "parser.ypp" + case 208: // expr_animtree: "#animtree" +#line 796 "parser.ypp" { yylhs.value.as < ast::expr_animtree::ptr > () = std::make_unique(yylhs.location); } -#line 3208 "parser.cpp" +#line 3251 "parser.cpp" break; - case 206: // expr_identifier: "identifier" -#line 788 "parser.ypp" + case 209: // expr_identifier: "identifier" +#line 801 "parser.ypp" { yylhs.value.as < ast::expr_identifier::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3214 "parser.cpp" +#line 3257 "parser.cpp" break; - case 207: // expr_path: "path" -#line 793 "parser.ypp" + case 210: // expr_path: "path" +#line 806 "parser.ypp" { yylhs.value.as < ast::expr_path::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3220 "parser.cpp" +#line 3263 "parser.cpp" break; - case 208: // expr_path: expr_identifier -#line 795 "parser.ypp" + case 211: // expr_path: expr_identifier +#line 808 "parser.ypp" { yylhs.value.as < ast::expr_path::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < ast::expr_identifier::ptr > ()->value); } -#line 3226 "parser.cpp" +#line 3269 "parser.cpp" break; - case 209: // expr_istring: "localized string" -#line 800 "parser.ypp" + case 212: // expr_istring: "localized string" +#line 813 "parser.ypp" { yylhs.value.as < ast::expr_istring::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3232 "parser.cpp" +#line 3275 "parser.cpp" break; - case 210: // expr_string: "string literal" -#line 805 "parser.ypp" + case 213: // expr_string: "string literal" +#line 818 "parser.ypp" { yylhs.value.as < ast::expr_string::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3238 "parser.cpp" +#line 3281 "parser.cpp" break; - case 211: // expr_color: "color" -#line 810 "parser.ypp" + case 214: // expr_color: "color" +#line 823 "parser.ypp" { yylhs.value.as < ast::expr_color::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3244 "parser.cpp" +#line 3287 "parser.cpp" break; - case 212: // expr_vector: "(" expr "," expr "," expr ")" -#line 815 "parser.ypp" + case 215: // expr_vector: "(" expr "," expr "," expr ")" +#line 828 "parser.ypp" { yylhs.value.as < ast::expr_vector::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[3].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr > ())); } -#line 3250 "parser.cpp" +#line 3293 "parser.cpp" break; - case 213: // expr_float: "-" "float" -#line 820 "parser.ypp" + case 216: // expr_float: "-" "float" +#line 833 "parser.ypp" { yylhs.value.as < ast::expr_float::ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } -#line 3256 "parser.cpp" +#line 3299 "parser.cpp" break; - case 214: // expr_float: "float" -#line 822 "parser.ypp" + case 217: // expr_float: "float" +#line 835 "parser.ypp" { yylhs.value.as < ast::expr_float::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3262 "parser.cpp" +#line 3305 "parser.cpp" break; - case 215: // expr_integer: "-" "integer" -#line 827 "parser.ypp" + case 218: // expr_integer: "-" "integer" +#line 840 "parser.ypp" { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } -#line 3268 "parser.cpp" +#line 3311 "parser.cpp" break; - case 216: // expr_integer: "integer" -#line 829 "parser.ypp" + case 219: // expr_integer: "integer" +#line 842 "parser.ypp" { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3274 "parser.cpp" +#line 3317 "parser.cpp" break; - case 217: // expr_false: "false" -#line 834 "parser.ypp" + case 220: // expr_false: "false" +#line 847 "parser.ypp" { yylhs.value.as < ast::expr_false::ptr > () = std::make_unique(yylhs.location); } -#line 3280 "parser.cpp" +#line 3323 "parser.cpp" break; - case 218: // expr_true: "true" -#line 839 "parser.ypp" + case 221: // expr_true: "true" +#line 852 "parser.ypp" { yylhs.value.as < ast::expr_true::ptr > () = std::make_unique(yylhs.location); } -#line 3286 "parser.cpp" +#line 3329 "parser.cpp" break; -#line 3290 "parser.cpp" +#line 3333 "parser.cpp" default: break; @@ -3485,24 +3528,25 @@ namespace xsk { namespace gsc { namespace s1 { "localized string", "color", "float", "integer", "ADD_ARRAY", "THEN", "TERN", "NEG", "ANIMREF", "PREINC", "PREDEC", "POSTINC", "POSTDEC", "$accept", "root", "program", "inline", "include", "declaration", - "decl_usingtree", "decl_constant", "decl_thread", "stmt", "stmt_dev", - "stmt_block", "stmt_list", "stmt_expr", "stmt_call", "stmt_assign", - "stmt_endon", "stmt_notify", "stmt_wait", "stmt_waittill", - "stmt_waittillmatch", "stmt_waittillframeend", "stmt_waitframe", - "stmt_if", "stmt_ifelse", "stmt_while", "stmt_dowhile", "stmt_for", - "stmt_foreach", "stmt_switch", "stmt_case", "stmt_default", "stmt_break", - "stmt_continue", "stmt_return", "stmt_breakpoint", "stmt_prof_begin", - "stmt_prof_end", "expr", "expr_or_empty", "expr_assign", - "expr_increment", "expr_decrement", "expr_ternary", "expr_binary", - "expr_primitive", "expr_complement", "expr_not", "expr_call", - "expr_method", "expr_function", "expr_pointer", "expr_add_array", - "expr_parameters", "expr_arguments", "expr_arguments_no_empty", - "expr_reference", "expr_array", "expr_field", "expr_size", "expr_paren", - "expr_object", "expr_thisthread", "expr_empty_array", "expr_undefined", - "expr_game", "expr_self", "expr_anim", "expr_level", "expr_animation", - "expr_animtree", "expr_identifier", "expr_path", "expr_istring", - "expr_string", "expr_color", "expr_vector", "expr_float", "expr_integer", - "expr_false", "expr_true", YY_NULLPTR + "decl_usingtree", "decl_constant", "decl_thread", "stmt", "stmt_or_dev", + "stmt_list", "stmt_or_dev_list", "stmt_dev", "stmt_block", "stmt_expr", + "stmt_call", "stmt_assign", "stmt_endon", "stmt_notify", "stmt_wait", + "stmt_waittill", "stmt_waittillmatch", "stmt_waittillframeend", + "stmt_waitframe", "stmt_if", "stmt_ifelse", "stmt_while", "stmt_dowhile", + "stmt_for", "stmt_foreach", "stmt_switch", "stmt_case", "stmt_default", + "stmt_break", "stmt_continue", "stmt_return", "stmt_breakpoint", + "stmt_prof_begin", "stmt_prof_end", "expr", "expr_or_empty", + "expr_assign", "expr_increment", "expr_decrement", "expr_ternary", + "expr_binary", "expr_primitive", "expr_complement", "expr_not", + "expr_call", "expr_method", "expr_function", "expr_pointer", + "expr_add_array", "expr_parameters", "expr_arguments", + "expr_arguments_no_empty", "expr_reference", "expr_array", "expr_field", + "expr_size", "expr_paren", "expr_object", "expr_thisthread", + "expr_empty_array", "expr_undefined", "expr_game", "expr_self", + "expr_anim", "expr_level", "expr_animation", "expr_animtree", + "expr_identifier", "expr_path", "expr_istring", "expr_string", + "expr_color", "expr_vector", "expr_float", "expr_integer", "expr_false", + "expr_true", YY_NULLPTR }; return yy_sname[yysymbol]; } @@ -3767,577 +3811,584 @@ namespace xsk { namespace gsc { namespace s1 { } - const short parser::yypact_ninf_ = -267; + const short parser::yypact_ninf_ = -270; - const short parser::yytable_ninf_ = -209; + const short parser::yytable_ninf_ = -212; const short parser::yypact_[] = { - 5, -267, -267, 49, 49, -28, -267, 26, 5, -267, - -267, -267, -267, -267, -267, -39, -267, -267, -34, -32, - -64, -267, -267, -267, -267, -61, 1195, -267, -267, -267, - 8, -26, -267, -267, -25, -13, -267, -3, -267, -267, - -267, -267, -267, -267, -267, 1195, 1065, -61, 1195, 1195, - -14, -55, -267, -267, -267, -267, 1999, -267, -267, -267, - -267, -267, 23, 346, -267, -267, -267, -267, 432, 805, - -267, -267, 935, -267, -267, -267, 1161, 1226, 1274, 1288, - -267, -267, 548, 17, -267, -267, -267, -267, -267, -267, - -267, -267, 3, 27, -61, 41, 31, 57, 42, 71, - 77, 45, 1325, 1065, -267, 2082, 83, 111, -267, -267, - -267, -267, -267, -267, -267, 1195, 1195, 1195, 1195, 1195, - 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, - 1195, 1195, 1195, 1195, -267, 1260, -61, -267, -267, -267, - 117, 110, 1195, -61, -267, 779, -267, -267, 1195, 1195, - -61, 1195, 1195, -61, 1195, -267, 1195, 1061, 1195, -267, - 1964, 134, 134, 2113, 2123, 609, 609, 36, 36, 36, - 36, 2154, 2195, 2164, 65, 65, -267, -267, -267, 1769, - -267, -61, -16, -267, 122, 857, 1195, 118, -29, 124, - 1039, 130, 131, 135, 136, -5, 128, 133, 139, 1130, - 140, 145, 151, -267, 152, 115, 115, -267, -267, -267, - 909, -267, -267, -267, -267, -267, -267, -267, -267, -267, - -267, -267, -267, -267, -267, -267, -267, -267, -267, -267, - -267, -267, -267, -267, -267, 147, 153, 157, 169, 170, - -267, -267, 28, -267, -267, -267, -267, -31, 1809, -2, - 155, 1849, -1, 182, 1889, 1928, 178, 2082, 1195, -267, - 122, -267, 1195, -267, 987, 2034, -267, 184, -267, 1195, - 211, 1195, 534, -61, 1195, 141, 185, 186, -267, -267, - -267, -267, 2069, -267, 1195, 1195, 1195, -267, -267, 177, - 177, -267, -267, -267, -267, -267, -267, -267, 197, 198, - 199, 201, -267, -267, 1195, 1195, 1195, 1195, 1195, 1195, - 1195, 1195, 1195, 1195, 1195, 200, -267, 1195, 202, -267, - 1195, 204, 1195, 203, 2082, 1, -267, -267, 192, 1491, - 210, 1525, 194, -267, -267, -267, 669, -8, 1559, -267, - -267, -267, 9, 38, 1061, 1195, 1195, 1195, 1195, 2082, - 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, - 213, 47, 215, 66, 216, 1593, 1195, -267, -267, 1039, - 1195, 1039, 1195, 1195, -61, 27, 217, 219, 1627, 1369, - 1413, 1457, 1195, -267, 1195, -267, 1195, -267, 82, 238, - 1661, -267, 2082, 223, 1695, 247, -267, -267, -267, 224, - 225, 1195, 226, 1195, 229, 1195, 91, 104, 114, -267, - 1039, 230, 534, 1039, 1195, -267, -267, 240, -267, 241, - -267, 248, -267, -267, -267, -267, -267, 249, -267, 1729, - 243, 244, 245, 1039, 1039, -267, -267, -267, -267, -267 + 3, -270, -270, -42, -42, -16, -270, 43, 3, -270, + -270, -270, -270, -270, -270, -25, -270, -270, 1, 7, + -50, -270, -270, -270, -270, -28, 934, -270, -270, -270, + 24, -14, -270, -270, -37, -33, -270, 59, -270, -270, + -270, -270, -270, -270, -270, 934, 627, -28, 934, 934, + 37, -11, -270, -270, -270, -270, 2024, -270, -270, -270, + -270, -270, 69, 293, -270, -270, -270, -270, 433, 532, + -270, -270, 542, -270, -270, -270, 665, 692, 965, 1179, + -270, -270, 8, 41, -270, -270, -270, -270, -270, -270, + -270, -270, 49, 73, -28, 62, 82, 78, 88, 95, + 89, 96, 1310, 627, -270, 2107, 98, 106, -270, -270, + -270, -270, -270, -270, -270, 934, 934, 934, 934, 934, + 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, + 934, 934, 934, 934, -270, 999, -28, -270, -270, -270, + 112, 114, 934, -28, -270, 791, -270, -270, 934, 934, + -28, 934, 934, -28, 934, -270, 934, 1754, 934, -270, + 1989, 65, 65, 2138, 2148, 860, 860, 152, 152, 152, + 152, 2179, 1013, 2189, 75, 75, -270, -270, -270, 1794, + -270, -28, 17, -270, 120, 1092, 934, 113, -10, 124, + 1268, 131, 134, 137, 140, -7, 141, 133, 136, 869, + 139, 155, 156, -270, 148, 33, 33, -270, -270, 843, + -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, + -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, + -270, -270, -270, -270, -270, -270, 151, 159, 161, 162, + 165, -270, -270, 1187, -270, -270, -270, -270, -32, 1834, + 32, 158, 1874, 34, 176, 1914, 1953, 157, 2107, 934, + -270, 120, -270, 934, -270, -270, 1146, 2059, -270, 164, + -270, 934, 202, 934, -19, -28, 934, 128, 172, 173, + -270, -270, -270, -270, 2094, -270, 934, 934, 934, -270, + -270, 592, 592, -270, -270, -270, -270, -270, -270, -270, + 184, 185, 188, 189, -270, -270, 934, 934, 934, 934, + 934, 934, 934, 934, 934, 934, 934, 193, -270, 934, + 194, -270, 934, 195, 934, 201, 2107, 38, -270, -270, + -270, 180, 1476, 203, 1510, 196, -270, -270, -270, 1272, + -4, 1544, -270, -270, -270, 42, 45, 1754, 934, 934, + 934, 934, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, + 2107, 2107, 2107, 204, 55, 205, 64, 207, 1578, 934, + -270, -270, 1268, 934, 1268, 934, 934, -28, 73, 208, + 209, 1612, 1354, 1398, 1442, 934, -270, 934, -270, 934, + -270, 68, 238, 1646, -270, 2107, 215, 1680, 235, -270, + -270, -270, 217, 219, 934, 220, 934, 221, 934, 71, + 77, 84, -270, 1268, 227, -19, 1268, 934, -270, -270, + 214, -270, 216, -270, 237, -270, -270, -270, -270, -270, + 241, -270, 1714, 233, 234, 239, 1268, 1268, -270, -270, + -270, -270, -270 }; const unsigned char parser::yydefact_[] = { - 3, 12, 13, 0, 0, 0, 206, 0, 2, 7, - 8, 9, 14, 15, 16, 0, 207, 208, 0, 0, - 0, 1, 4, 5, 6, 176, 0, 10, 11, 210, - 0, 0, 175, 205, 0, 0, 197, 0, 218, 217, - 199, 200, 201, 202, 203, 0, 178, 0, 0, 0, - 0, 0, 209, 211, 214, 216, 0, 90, 91, 92, - 129, 130, 131, 132, 159, 160, 133, 134, 135, 136, - 137, 138, 0, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 0, 149, 150, 151, 152, 153, 154, - 155, 156, 0, 0, 0, 0, 208, 0, 0, 208, - 0, 0, 0, 178, 198, 180, 0, 177, 181, 158, - 157, 213, 215, 204, 18, 0, 0, 0, 0, 0, + 3, 12, 13, 0, 0, 0, 209, 0, 2, 7, + 8, 9, 14, 15, 16, 0, 210, 211, 0, 0, + 0, 1, 4, 5, 6, 179, 0, 10, 11, 213, + 0, 0, 178, 208, 0, 0, 200, 0, 221, 220, + 202, 203, 204, 205, 206, 0, 181, 0, 0, 0, + 0, 0, 212, 214, 217, 219, 0, 93, 94, 95, + 132, 133, 134, 135, 162, 163, 136, 137, 138, 139, + 140, 141, 0, 142, 143, 144, 145, 146, 147, 148, + 149, 150, 151, 0, 152, 153, 154, 155, 156, 157, + 158, 159, 0, 0, 0, 0, 211, 0, 0, 211, + 0, 0, 0, 181, 201, 183, 0, 180, 184, 161, + 160, 216, 218, 207, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 186, 0, 0, 185, 161, 162, - 208, 0, 178, 0, 17, 0, 19, 174, 0, 178, - 0, 0, 178, 0, 0, 187, 0, 180, 0, 173, - 0, 122, 123, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 124, 125, 126, 127, 128, 0, - 184, 0, 0, 177, 182, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 189, 0, 0, 188, 164, 165, + 211, 0, 181, 0, 17, 0, 19, 177, 0, 181, + 0, 0, 181, 0, 0, 190, 0, 183, 0, 176, + 0, 125, 126, 114, 115, 116, 117, 118, 119, 120, + 121, 122, 123, 124, 127, 128, 129, 130, 131, 0, + 187, 0, 0, 180, 185, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 49, 0, 0, 0, 51, 20, 21, - 0, 22, 23, 24, 25, 26, 27, 28, 29, 30, - 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 0, 0, 0, 188, 189, - 190, 191, 0, 192, 193, 194, 195, 196, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 179, 0, 183, - 0, 163, 178, 47, 0, 0, 69, 0, 70, 0, - 0, 0, 55, 0, 0, 0, 0, 0, 82, 83, - 84, 86, 0, 87, 178, 178, 0, 188, 189, 106, - 108, 48, 50, 58, 59, 60, 56, 57, 0, 0, - 0, 0, 107, 109, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 165, 178, 0, 167, - 178, 0, 0, 0, 110, 0, 46, 64, 0, 0, - 0, 0, 0, 52, 53, 54, 0, 0, 0, 81, - 80, 85, 0, 0, 0, 0, 0, 0, 0, 95, - 101, 102, 103, 104, 105, 96, 97, 98, 100, 99, - 0, 0, 0, 0, 0, 0, 178, 164, 71, 0, - 0, 0, 94, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 178, 166, 178, 168, 178, 212, 0, 72, - 0, 74, 93, 0, 0, 0, 79, 88, 89, 0, - 0, 178, 0, 178, 0, 178, 0, 0, 0, 169, - 0, 0, 55, 0, 0, 61, 63, 177, 66, 177, - 68, 177, 170, 171, 172, 73, 75, 0, 77, 0, - 0, 0, 0, 0, 0, 62, 65, 67, 76, 78 + 0, 0, 0, 54, 0, 0, 0, 45, 50, 0, + 46, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 0, 0, 0, 191, + 192, 193, 194, 0, 195, 196, 197, 198, 199, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 182, 0, + 186, 0, 166, 181, 52, 48, 0, 0, 72, 0, + 73, 0, 0, 0, 58, 0, 0, 0, 0, 0, + 85, 86, 87, 89, 0, 90, 181, 181, 0, 191, + 192, 109, 111, 53, 49, 61, 62, 63, 59, 60, + 0, 0, 0, 0, 110, 112, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 168, 181, + 0, 170, 181, 0, 0, 0, 113, 0, 51, 47, + 67, 0, 0, 0, 0, 0, 55, 56, 57, 0, + 0, 0, 84, 83, 88, 0, 0, 0, 0, 0, + 0, 0, 98, 104, 105, 106, 107, 108, 99, 100, + 101, 103, 102, 0, 0, 0, 0, 0, 0, 181, + 167, 74, 0, 0, 0, 97, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 181, 169, 181, 171, 181, + 215, 0, 75, 0, 77, 96, 0, 0, 0, 82, + 91, 92, 0, 0, 181, 0, 181, 0, 181, 0, + 0, 0, 172, 0, 0, 58, 0, 0, 64, 66, + 180, 69, 180, 71, 180, 173, 174, 175, 76, 78, + 0, 80, 0, 0, 0, 0, 0, 0, 65, 68, + 70, 79, 81 }; const short parser::yypgoto_[] = { - -267, -267, -267, 292, 300, 301, -267, -267, -267, -72, - -267, -91, 144, -81, -267, -267, -267, -267, -267, -267, - -267, -267, -267, -267, -267, -267, -267, -267, -267, -267, - -267, -267, -267, -267, -267, -267, -267, -267, 195, -267, - -266, -260, -258, -267, -267, -267, -267, -267, -130, -12, - -67, -65, -267, -267, 340, -45, -267, -6, 246, -267, - -267, 252, -267, -267, -267, 280, 329, 348, 366, -267, - -267, 0, 6, -267, -9, -267, -267, -267, 137, -267, - -267 + -270, -270, -270, 294, 295, 296, -270, -270, -270, -152, + 117, -270, -270, -270, -91, -87, -270, -270, -270, -270, + -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, + -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, + 190, -270, -269, -267, -261, -270, -270, -270, -270, -270, + -86, -12, -66, -61, -270, -270, 13, -45, -270, -6, + 179, -270, -270, 249, -270, -270, -270, 282, 337, 362, + 372, -270, -270, 0, 6, -270, -8, -270, -270, -270, + 142, -270, -270 }; const short parser::yydefgoto_[] = { 0, 7, 8, 9, 10, 11, 12, 13, 14, 207, - 208, 209, 210, 332, 211, 212, 213, 214, 215, 216, - 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, - 227, 228, 229, 230, 231, 232, 233, 234, 105, 393, - 235, 236, 237, 57, 58, 59, 60, 61, 62, 63, - 64, 65, 66, 31, 106, 183, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91 + 208, 266, 209, 210, 211, 335, 212, 213, 214, 215, + 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, + 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, + 105, 396, 236, 237, 238, 57, 58, 59, 60, 61, + 62, 63, 64, 65, 66, 31, 106, 183, 67, 68, + 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, + 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, + 89, 90, 91 }; const short parser::yytable_[] = { - 15, 107, 146, 17, 17, 138, 333, 139, 15, 18, - 19, 30, 334, 25, 335, 238, 1, 2, 3, 4, - 5, 142, 373, 267, 20, 32, 21, 93, 27, -208, - 28, 95, 94, 268, 96, 99, 29, 261, 6, 26, - 97, 100, 158, 98, 113, 298, 299, 108, 300, 301, - 374, 316, 319, 101, 367, 238, 158, 158, 107, 158, - 238, 92, 376, -188, -188, 144, -188, 158, 34, 35, - -188, 37, 140, 16, 6, 287, 287, 143, 141, -188, - 238, 145, -188, 149, 135, 16, 6, 136, 275, 111, - 112, 377, 302, 303, 147, 29, 158, 148, 151, 55, - 383, 154, 116, 117, 6, 158, 304, 305, 306, 307, - 308, 309, 310, 311, 312, 313, 314, 150, 270, 385, - -188, -188, -188, 152, 158, 137, 16, 6, 129, 130, - 131, 132, 133, 239, 238, 409, 180, 153, 292, 240, - 158, 158, 287, 184, 422, 247, 333, 16, 6, 158, - 250, 141, 334, 253, 335, 34, 35, 423, 37, 131, - 132, 133, 158, 41, 42, 43, 44, 424, 159, 142, - 181, 204, 158, 239, 262, 138, 269, 139, 239, 240, - 266, 260, 271, 272, 240, 247, 276, 273, 274, 278, - 247, 141, 292, 288, 288, 279, 141, 284, 239, 240, - 240, 280, 283, 285, 240, 247, 247, 317, 286, 293, - 247, 141, 141, 16, 6, 294, 141, 34, 35, 295, - 37, 56, 138, 138, 139, 139, 129, 130, 131, 132, - 133, 296, 297, 135, 320, 323, 136, 328, 330, 238, - 102, 238, 140, 109, 110, 112, 339, 340, 141, 345, - 346, 347, 239, 348, 368, 366, 372, 360, 240, 362, - 288, 364, 370, 410, 247, 382, 240, 384, 386, 138, - 141, 139, 247, 337, 137, 16, 6, 414, 141, 397, - 238, 398, 287, 238, 396, 412, 415, 416, 418, 140, - 140, 420, 426, 430, 431, 141, 141, 389, 157, 391, - 22, 432, 433, 238, 238, 435, 436, 437, 23, 24, - 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 264, - 179, 427, 277, 0, 0, 0, 140, 0, 425, 0, - 0, 428, 141, 248, 0, 0, 251, 0, 0, 254, - 0, 255, 0, 257, 0, 0, 417, 239, 419, 239, - 421, 438, 439, 240, 0, 240, 0, 0, 0, 247, - 0, 247, 0, 0, 395, 141, 0, 141, 0, 0, - 0, 265, 0, 0, 0, 0, -189, -189, 0, -189, - 0, 241, 0, -189, 282, 0, 0, 242, 239, 0, - 288, 239, -189, 0, 240, -189, 240, 240, 0, 0, - 247, 0, 247, 247, 0, 0, 141, 0, 141, 141, - 0, 239, 239, 0, 0, 243, 0, 240, 240, 0, - 0, 241, 0, 247, 247, 0, 241, 242, 0, 141, - 141, 0, 242, -189, -189, -189, 0, 0, 0, 0, - 0, 241, 241, 324, 0, 0, 241, 289, 290, 0, - 0, 0, 242, 0, 329, 243, 331, 0, 0, 338, - 243, 0, -190, -190, 244, -190, 0, 0, 0, -190, - 0, 344, 182, 0, 0, 243, 243, 0, -190, 249, - 243, -190, 252, 245, 0, 0, 0, 0, 0, 349, - 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, - 241, 246, 0, 0, 244, 0, 242, 365, 241, 244, - 0, 0, 0, 0, 336, 0, 0, 0, 0, -190, - -190, -190, 0, 245, 244, 244, 0, 0, 245, 244, - 378, 379, 380, 381, 243, 0, 0, 0, 0, 0, - 0, 246, 243, 245, 245, 0, 246, 0, 245, 0, - 0, 0, 0, 0, 0, 390, 0, 392, 394, 0, - 0, 246, 246, 0, 34, 35, 246, 37, 0, 0, - 0, 0, 41, 42, 43, 44, 0, 0, -196, -196, - 204, -196, 0, 244, 0, -196, 0, 0, 205, 206, - 142, 244, 325, 0, -196, 0, 0, -196, -208, 429, - 0, 0, 245, 0, 0, 241, 0, 241, 0, 0, - 245, 242, 0, 242, 342, 343, 0, 0, 0, 0, - 246, 0, 16, 6, 0, 0, 0, 0, 246, 0, - 0, 0, 0, 0, 0, -196, -196, -196, 0, 243, - 0, 243, 0, 0, 0, 0, 241, 361, 241, 241, - 363, 0, 242, 0, 336, 242, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 116, 117, 0, 0, 241, - 241, 122, 123, 124, 125, 242, 242, 0, 0, 0, - 243, 0, 243, 243, 0, 0, 0, 0, 244, 0, - 244, 129, 130, 131, 132, 133, 388, 0, 0, 34, - 35, 0, 37, 243, 243, 0, 0, 245, 0, 245, - 0, 0, 406, 0, 407, 135, 408, 0, 136, 0, - 0, 0, 0, 302, 303, 246, 0, 246, 0, 244, - 0, 244, 244, 0, 0, 0, 0, 304, 305, 306, - 307, 308, 309, 310, 311, 312, 313, 314, 245, 0, - 245, 245, 244, 244, 0, 0, 137, 16, 6, 0, - 0, 0, 0, 0, 0, 0, 246, 0, 246, 246, - 0, 245, 245, 0, 0, 0, 0, 0, 0, 0, - 185, 0, 0, 0, 0, 0, 0, 0, 186, 246, - 246, 187, 188, 189, 0, 190, 191, 192, 193, 0, - 194, 195, 196, 197, 198, 199, 200, 201, 202, 34, - 35, 0, 37, 0, 0, 0, 0, 41, 42, 43, - 44, 0, 0, 145, 203, 204, 0, 0, 0, 0, - 0, 0, 0, 205, 206, -191, -191, 0, -191, 0, - 0, 0, -191, 0, 0, 0, 0, 0, 0, 0, - 0, -191, 0, 0, -191, 0, 0, 0, 185, 263, - 0, 0, 0, 0, 0, 0, 186, 16, 6, 187, - 188, 189, 0, 190, 191, 192, 193, 0, 194, 195, - 196, 197, 198, 199, 200, 201, 202, 34, 35, 0, - 37, 0, -191, -191, -191, 41, 42, 43, 44, 0, - 0, 145, 0, 204, 0, 0, 0, 0, 0, 0, - 185, 205, 206, 0, 0, 0, 0, 0, 186, 0, - 0, 187, 188, 189, 0, 190, 191, 192, 193, 0, - 194, 195, 196, 197, 198, 199, 200, 201, 202, 34, - 35, 0, 37, 0, 0, 16, 6, 41, 42, 43, - 44, 0, 0, 145, 291, 204, 0, 0, 0, 0, - 0, 0, 0, 205, 206, 34, 35, 0, 37, 0, - 0, 0, 134, 0, 0, 0, 0, 0, 0, 0, - 0, 135, 0, 0, 136, 0, 0, 0, 185, 326, - 0, 0, 0, 0, 0, 0, 186, 16, 6, 187, - 188, 189, 0, 190, 191, 192, 193, 0, 194, 195, - 196, 197, 198, 199, 200, 201, 202, 34, 35, 0, - 37, 0, 137, 16, 6, 41, 42, 43, 44, 0, - 0, 145, 0, 204, 0, 0, 0, 0, 0, 0, - 185, 205, 206, 0, 0, 0, 0, 0, 186, 0, - 0, 187, 188, 189, 0, 190, 191, 192, 193, 0, - 194, 195, 196, 197, 198, 199, 200, 201, 202, 34, - 35, 33, 37, 0, 0, 16, 6, 41, 42, 43, - 44, 0, 0, 145, 0, 204, 0, 0, 0, 0, - 0, 0, 0, 205, 206, 34, 35, 36, 37, 38, - 39, 40, 0, 41, 42, 43, 44, 45, 256, 0, - 0, 103, 104, 0, 115, 47, 0, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 16, 6, 0, - 0, 48, 49, 0, 0, 0, 33, 0, 0, 0, - 126, 127, 128, 129, 130, 131, 132, 133, 50, 0, - 0, 51, 0, 16, 6, 29, 52, 53, 54, 55, - 34, 35, 36, 37, 38, 39, 40, 0, 41, 42, - 43, 44, 45, 0, 0, 0, 46, 0, 0, 0, - 47, 0, 281, 0, 0, 0, 0, 0, 0, 0, - 0, -192, -192, 0, -192, 0, 48, 49, -192, 0, - 0, 33, 0, 0, 0, 0, 0, -192, 0, 0, - -192, 0, 0, 50, 0, 0, 51, 0, 16, 6, - 29, 52, 53, 54, 55, 34, 35, 36, 37, 38, - 39, 40, 0, 41, 42, 43, 44, 45, 0, 0, - 0, 46, 0, 0, 0, 47, 0, 0, -192, -192, - -192, 0, 0, 0, 0, 0, -193, -193, 0, -193, - 0, 48, 49, -193, 0, 0, 33, 0, 0, 0, - 0, 0, -193, 0, 0, -193, 0, 0, 50, 0, - 0, 51, 0, 16, 6, 29, 52, 53, 54, 55, - 34, 35, 36, 37, 38, 39, 40, 0, 41, 42, - 43, 44, 45, 0, -194, -194, 103, -194, 0, 0, - 47, -194, 0, -193, -193, -193, 0, 0, -195, -195, - -194, -195, 0, -194, 0, -195, 48, 49, 0, 0, - 0, 0, 0, 0, -195, 0, 0, -195, 0, 0, - 0, 0, 0, 50, 0, 0, 51, 0, 16, 6, - 29, 52, 53, 54, 55, 0, 0, 0, 0, 0, - 0, -194, -194, -194, 0, 0, 0, 0, 155, 0, - 0, 0, 0, 156, 0, -195, -195, -195, 115, 0, - 0, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 126, 127, 128, 129, 130, 131, - 132, 133, 400, 0, 0, 0, 0, 401, 0, 0, - 0, 0, 115, 0, 0, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 126, 127, - 128, 129, 130, 131, 132, 133, 402, 0, 0, 0, - 0, 403, 0, 0, 0, 0, 115, 0, 0, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 0, + 15, 107, 146, 17, 17, 336, 138, 337, 15, 18, + 19, 139, 30, 338, 1, 2, 3, 4, 5, 95, + 142, 34, 35, 98, 37, 32, 376, 25, -211, 41, + 42, 43, 44, 265, 96, 99, 20, 204, 272, 93, + 97, 100, 269, 21, 94, 205, 206, 108, -199, -199, + 29, -199, 270, 26, 377, -199, 16, 6, 107, 239, + 142, 16, 6, 27, -199, 16, 6, -199, -211, 28, + 262, 6, 140, 34, 35, 158, 37, 92, 141, 16, + 6, 41, 42, 43, 44, 318, 277, 321, 113, 204, + 158, 370, 158, 29, 147, 379, 158, 55, 380, 239, + 158, 143, 6, 158, 239, -199, -199, -199, 386, -191, + -191, 144, -191, 158, 329, 101, -191, 388, 148, 289, + 289, 412, 158, 239, 425, -191, 158, 145, -191, 158, + 426, 16, 6, 240, 149, 158, 180, 427, 150, 241, + 111, 112, 158, 184, 151, 248, 336, 152, 337, 153, + 251, 141, 154, 254, 338, 182, 158, 129, 130, 131, + 132, 133, 250, 159, 142, 253, -191, -191, -191, 131, + 132, 133, 263, 240, 181, 268, 271, 138, 240, 241, + 239, 261, 139, 273, 241, 248, 274, 278, 289, 275, + 248, 141, 276, 290, 290, 281, 141, 240, 282, 241, + 241, 285, 280, 241, 288, 248, 248, 286, 287, 248, + 319, 141, 141, 295, 325, 141, 56, 331, 116, 117, + 392, 296, 394, 297, 298, 138, 138, 299, 322, 333, + 139, 139, 112, 342, 343, 102, 348, 349, 109, 110, + 350, 351, 371, 140, 129, 130, 131, 132, 133, 141, + 363, 365, 367, 369, 240, 373, 385, 387, 375, 389, + 241, 428, 290, 413, 431, 417, 248, 433, 241, 434, + 400, 401, 141, 138, 248, 340, 327, 415, 139, 418, + 141, 419, 421, 423, 441, 442, 239, 399, 239, 429, + 435, 140, 140, 157, 436, 438, 439, 141, 141, 345, + 346, 440, 22, 23, 24, 160, 161, 162, 163, 164, + 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, + 175, 176, 177, 178, 242, 179, 294, 239, 430, 289, + 239, 0, 364, -192, -192, 366, -192, 279, 249, 140, + -192, 252, 0, 0, 255, 141, 256, 0, 258, -192, + 239, 239, -192, 0, 0, 0, 0, 0, 0, 420, + 240, 422, 240, 424, 242, 0, 241, 0, 241, 242, + 0, 0, 248, 0, 248, 0, 267, 398, 141, 0, + 141, 0, 391, 0, 242, 242, 0, 0, 242, 284, + -192, -192, -192, 0, 243, 0, 0, 0, 409, 0, + 410, 240, 411, 290, 240, 0, 0, 241, 0, 241, + 241, 0, 0, 248, 0, 248, 248, 0, 0, 141, + 0, 141, 141, 0, 240, 240, 0, 244, 0, 0, + 241, 241, 0, 0, 243, 0, 248, 248, 0, 243, + 0, 0, 141, 141, 0, 242, 0, 0, 0, 326, + 0, 0, 0, 242, 291, 292, 0, 0, 243, 0, + 0, 332, 0, 334, 0, 0, 341, 244, 0, 0, + 0, 0, 244, -193, -193, 0, -193, 0, 347, 0, + -193, 0, 245, 0, 0, 0, 0, 244, 244, -193, + 0, 244, -193, 0, 0, 0, 352, 353, 354, 355, + 356, 357, 358, 359, 360, 361, 362, 246, 0, 0, + 0, 0, 0, 0, 368, 243, 0, 247, 0, 0, + 0, 0, 245, 339, 0, 0, 0, 245, 0, 0, + -193, -193, -193, 0, 0, 0, 0, 0, 381, 382, + 383, 384, 245, 245, 0, 0, 245, 246, 244, 0, + 0, 242, 246, 242, 0, 0, 244, 247, 0, 0, + 0, 0, 247, 393, 0, 395, 397, 246, 246, 0, + 0, 246, -194, -194, 0, -194, 0, 247, 247, -194, + 0, 247, 34, 35, 0, 37, 0, 0, -194, 134, + 0, -194, 242, 0, 242, 242, 0, 0, 135, 0, + 0, 136, 0, 245, 0, 0, 0, 432, 0, 0, + 0, 245, 0, 0, 0, 242, 242, 0, 0, 0, + 0, 243, 0, 243, 0, 0, 0, 0, 246, -194, + -194, -194, 34, 35, 0, 37, 246, 0, 247, 137, + 16, 6, 0, 33, 0, 0, 247, 0, 135, 0, + 0, 136, 0, 0, 244, 0, 244, 0, 0, 0, + 0, 0, 243, 0, 339, 243, 0, 34, 35, 36, + 37, 38, 39, 40, 0, 41, 42, 43, 44, 45, + 0, 0, 0, 103, 104, 243, 243, 47, 0, 137, + 16, 6, 0, 0, 0, 244, 0, 244, 244, 0, + 0, 0, 0, 48, 49, -195, -195, 0, -195, 245, + 0, 245, -195, 0, 0, 0, 0, 0, 244, 244, + 50, -195, 0, 51, -195, 16, 6, 29, 52, 53, + 54, 55, -196, -196, 246, -196, 246, 0, 0, -196, + 0, 0, 0, 0, 247, 0, 247, 0, -196, 0, + 245, -196, 245, 245, 0, 0, 0, 0, 0, 0, + 0, 0, -195, -195, -195, 0, 0, 0, 0, 0, + 0, 0, 0, 245, 245, 246, 0, 246, 246, 0, + 0, 0, 0, 0, 0, 247, 0, 247, 247, -196, + -196, -196, 0, 0, 0, 0, 0, 0, 246, 246, + 0, 0, 185, 0, 0, 0, 0, 0, 247, 247, + 186, 0, 0, 187, 188, 189, 0, 190, 191, 192, + 193, 0, 194, 195, 196, 197, 198, 199, 200, 201, + 202, 34, 35, 0, 37, 0, 0, 0, 0, 41, + 42, 43, 44, 0, 0, 145, 203, 204, 0, 0, + 0, 0, 0, 0, 185, 205, 206, 0, 0, 0, + 0, 0, 186, 0, 0, 187, 188, 189, 0, 190, + 191, 192, 193, 0, 194, 195, 196, 197, 198, 199, + 200, 201, 202, 34, 35, 33, 37, 0, 0, 16, + 6, 41, 42, 43, 44, 0, 0, 145, 293, 204, + 0, 0, 0, 0, 0, 0, 0, 205, 206, 34, + 35, 36, 37, 38, 39, 40, 0, 41, 42, 43, + 44, 45, 0, 0, 0, 46, 116, 117, 0, 47, + 0, 283, 122, 123, 124, 125, 0, 0, 0, 0, + 0, 16, 6, 0, 0, 48, 49, 0, 0, 0, + 33, 0, 129, 130, 131, 132, 133, 0, 0, 0, + 0, 0, 50, 0, 0, 51, 0, 16, 6, 29, + 52, 53, 54, 55, 34, 35, 36, 37, 38, 39, + 40, 0, 41, 42, 43, 44, 45, 0, 0, 0, + 46, 0, 0, 0, 47, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, -197, -197, 0, -197, 0, + 48, 49, -197, 0, 0, 33, 0, 0, 0, 0, + 0, -197, 0, 0, -197, 0, 0, 50, 0, 0, + 51, 0, 16, 6, 29, 52, 53, 54, 55, 34, + 35, 36, 37, 38, 39, 40, 0, 41, 42, 43, + 44, 45, 0, 0, 0, 103, 0, 0, 0, 47, + 0, 0, -197, -197, -197, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 48, 49, 0, 0, 116, + 117, 0, 0, 120, 121, 122, 123, 124, 125, 0, + 0, 0, 50, 0, 0, 51, 0, 16, 6, 29, + 52, 53, 54, 55, 264, 129, 130, 131, 132, 133, + 0, 186, 0, 0, 187, 188, 189, 0, 190, 191, + 192, 193, 0, 194, 195, 196, 197, 198, 199, 200, + 201, 202, 34, 35, 0, 37, 0, 0, 0, 0, + 41, 42, 43, 44, 0, 0, 145, 0, 204, 0, + 0, 0, 0, 0, 0, 0, 205, 206, 328, 0, + 0, 0, 0, 0, 0, 186, 0, 0, 187, 188, + 189, 0, 190, 191, 192, 193, 0, 194, 195, 196, + 197, 198, 199, 200, 201, 202, 34, 35, 0, 37, + 16, 6, 0, 0, 41, 42, 43, 44, 0, 0, + 145, 0, 204, 0, 300, 301, 0, 302, 303, 0, + 205, 206, 0, 0, 0, 0, 0, 0, 0, -198, + -198, 0, -198, 0, 0, 0, -198, 34, 35, 0, + 37, 0, 0, 0, 0, -198, 0, 0, -198, 0, + 0, 0, 0, 135, 16, 6, 136, 0, 0, 0, + 0, 304, 305, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 306, 307, 308, 309, 310, + 311, 312, 313, 314, 315, 316, -198, -198, -198, 0, + 0, 0, 0, 0, 137, 16, 6, 186, 0, 0, + 187, 188, 189, 0, 190, 191, 192, 193, 0, 194, + 195, 196, 197, 198, 199, 200, 201, 202, 34, 35, + 0, 37, 34, 35, 0, 37, 41, 42, 43, 44, + 0, 0, 145, 0, 204, 0, 0, 0, 135, 0, + 0, 136, 205, 206, 0, 0, 304, 305, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 126, 127, 128, 129, 130, 131, 132, 133, - 404, 0, 0, 0, 0, 405, 0, 0, 0, 0, - 115, 0, 0, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 369, 0, 126, 127, 128, 129, - 130, 131, 132, 133, 115, 0, 0, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 371, 0, - 126, 127, 128, 129, 130, 131, 132, 133, 115, 0, - 0, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 375, 0, 126, 127, 128, 129, 130, 131, - 132, 133, 115, 0, 0, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 387, 0, 126, 127, - 128, 129, 130, 131, 132, 133, 115, 0, 0, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 0, + 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, + 316, 0, 0, 155, 0, 0, 16, 6, 156, 137, + 16, 6, 0, 115, 0, 0, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 126, + 127, 128, 129, 130, 131, 132, 133, 403, 0, 0, + 0, 0, 404, 0, 0, 0, 0, 115, 0, 0, + 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 399, 0, 126, 127, 128, 129, 130, 131, 132, 133, - 115, 0, 0, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 411, 0, 126, 127, 128, 129, - 130, 131, 132, 133, 115, 0, 0, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 413, 0, - 126, 127, 128, 129, 130, 131, 132, 133, 115, 0, - 0, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 434, 0, 126, 127, 128, 129, 130, 131, - 132, 133, 115, 0, 0, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 126, 127, - 128, 129, 130, 131, 132, 133, 259, 0, 0, 0, - 0, 0, 115, 0, 0, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 126, 127, - 128, 129, 130, 131, 132, 133, 315, 0, 0, 0, - 0, 0, 115, 0, 0, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 126, 127, - 128, 129, 130, 131, 132, 133, 318, 0, 0, 0, - 0, 0, 115, 0, 0, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 126, 127, - 128, 129, 130, 131, 132, 133, 321, 0, 0, 0, - 0, 0, 115, 0, 0, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 126, 127, - 128, 129, 130, 131, 132, 133, 322, 0, 0, 0, + 0, 0, 0, 126, 127, 128, 129, 130, 131, 132, + 133, 405, 0, 0, 0, 0, 406, 0, 0, 0, 0, 115, 0, 0, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 126, 127, 128, - 129, 130, 131, 132, 133, 258, 0, 115, 0, 0, + 129, 130, 131, 132, 133, 407, 0, 0, 0, 0, + 408, 0, 0, 0, 0, 115, 0, 0, 116, 117, + 118, 119, 120, 121, 122, 123, 124, 125, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 372, + 0, 126, 127, 128, 129, 130, 131, 132, 133, 115, + 0, 0, 116, 117, 118, 119, 120, 121, 122, 123, + 124, 125, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 374, 0, 126, 127, 128, 129, 130, + 131, 132, 133, 115, 0, 0, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 378, 0, 126, + 127, 128, 129, 130, 131, 132, 133, 115, 0, 0, + 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 390, 0, 126, 127, 128, 129, 130, 131, 132, + 133, 115, 0, 0, 116, 117, 118, 119, 120, 121, + 122, 123, 124, 125, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 402, 0, 126, 127, 128, + 129, 130, 131, 132, 133, 115, 0, 0, 116, 117, + 118, 119, 120, 121, 122, 123, 124, 125, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 414, + 0, 126, 127, 128, 129, 130, 131, 132, 133, 115, + 0, 0, 116, 117, 118, 119, 120, 121, 122, 123, + 124, 125, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 416, 0, 126, 127, 128, 129, 130, + 131, 132, 133, 115, 0, 0, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 437, 0, 126, + 127, 128, 129, 130, 131, 132, 133, 115, 0, 0, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 126, 127, 128, 129, 130, 131, 132, - 133, 114, 115, 0, 0, 116, 117, 118, 119, 120, + 133, 257, 0, 0, 0, 0, 0, 115, 0, 0, + 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 126, 127, 128, 129, 130, 131, 132, + 133, 260, 0, 0, 0, 0, 0, 115, 0, 0, + 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 126, 127, 128, 129, 130, 131, 132, + 133, 317, 0, 0, 0, 0, 0, 115, 0, 0, + 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 126, 127, 128, 129, 130, 131, 132, + 133, 320, 0, 0, 0, 0, 0, 115, 0, 0, + 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 126, 127, 128, 129, 130, 131, 132, + 133, 323, 0, 0, 0, 0, 0, 115, 0, 0, + 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 126, 127, 128, 129, 130, 131, 132, + 133, 324, 0, 0, 0, 0, 115, 0, 0, 116, + 117, 118, 119, 120, 121, 122, 123, 124, 125, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 126, 127, 128, 129, 130, 131, 132, 133, + 259, 0, 115, 0, 0, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 126, 127, - 128, 129, 130, 131, 132, 133, 327, 115, 0, 0, + 128, 129, 130, 131, 132, 133, 114, 115, 0, 0, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 126, 127, 128, 129, 130, 131, 132, - 133, 341, 115, 0, 0, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 115, 0, 0, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 0, 0, 0, 0, - 0, 126, 127, 128, 129, 130, 131, 132, 133, 116, - 117, 0, 119, 120, 121, 122, 123, 124, 125, 116, - 117, 0, 0, 120, 121, 122, 123, 124, 125, 0, - 0, 0, 126, 127, 128, 129, 130, 131, 132, 133, - 0, 0, 126, 127, 128, 129, 130, 131, 132, 133, - 116, 117, 0, 0, 120, 121, 122, 123, 124, 125, - 116, 117, 0, 0, 120, 121, 122, 123, 124, 125, - 0, 0, 0, 0, 127, 128, 129, 130, 131, 132, - 133, 0, 0, 0, 127, 0, 129, 130, 131, 132, - 133, 116, 117, 0, 0, 120, 121, 122, 123, 124, - 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 129, 130, 131, - 132, 133 + 133, 330, 115, 0, 0, 116, 117, 118, 119, 120, + 121, 122, 123, 124, 125, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 126, 127, + 128, 129, 130, 131, 132, 133, 344, 115, 0, 0, + 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, + 115, 0, 0, 116, 117, 118, 119, 120, 121, 122, + 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, + 133, 0, 0, 0, 0, 0, 126, 127, 128, 129, + 130, 131, 132, 133, 116, 117, 0, 119, 120, 121, + 122, 123, 124, 125, 116, 117, 0, 0, 120, 121, + 122, 123, 124, 125, 0, 0, 0, 126, 127, 128, + 129, 130, 131, 132, 133, 0, 0, 126, 127, 128, + 129, 130, 131, 132, 133, 116, 117, 0, 0, 120, + 121, 122, 123, 124, 125, 116, 117, 0, 0, 120, + 121, 122, 123, 124, 125, 0, 0, 0, 0, 127, + 128, 129, 130, 131, 132, 133, 0, 0, 0, 127, + 0, 129, 130, 131, 132, 133 }; const short parser::yycheck_[] = { - 0, 46, 93, 3, 4, 72, 272, 72, 8, 3, - 4, 20, 272, 52, 272, 145, 11, 12, 13, 14, - 15, 52, 30, 52, 52, 25, 0, 53, 62, 60, - 62, 56, 58, 62, 34, 35, 100, 53, 99, 78, - 34, 35, 58, 56, 99, 17, 18, 47, 20, 21, - 58, 53, 53, 56, 53, 185, 58, 58, 103, 58, - 190, 53, 53, 40, 41, 62, 43, 58, 40, 41, - 47, 43, 72, 98, 99, 205, 206, 60, 72, 56, - 210, 54, 59, 52, 56, 98, 99, 59, 93, 103, - 104, 53, 64, 65, 94, 100, 58, 56, 56, 104, - 53, 56, 66, 67, 99, 58, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 60, 190, 53, - 97, 98, 99, 52, 58, 97, 98, 99, 92, 93, - 94, 95, 96, 145, 264, 53, 136, 60, 210, 145, - 58, 58, 272, 143, 53, 145, 412, 98, 99, 58, - 150, 145, 412, 153, 412, 40, 41, 53, 43, 94, - 95, 96, 58, 48, 49, 50, 51, 53, 57, 52, - 60, 56, 58, 185, 52, 242, 52, 242, 190, 185, - 62, 181, 52, 52, 190, 185, 195, 52, 52, 61, - 190, 185, 264, 205, 206, 62, 190, 52, 210, 205, - 206, 62, 62, 52, 210, 205, 206, 52, 56, 62, - 210, 205, 206, 98, 99, 62, 210, 40, 41, 62, - 43, 26, 289, 290, 289, 290, 92, 93, 94, 95, - 96, 62, 62, 56, 52, 57, 59, 53, 27, 369, - 45, 371, 242, 48, 49, 104, 61, 61, 242, 52, - 52, 52, 264, 52, 62, 52, 62, 57, 264, 57, - 272, 57, 52, 25, 264, 52, 272, 52, 52, 336, - 264, 336, 272, 273, 97, 98, 99, 30, 272, 62, - 410, 62, 412, 413, 375, 62, 62, 62, 62, 289, - 290, 62, 62, 53, 53, 289, 290, 369, 103, 371, - 8, 53, 53, 433, 434, 62, 62, 62, 8, 8, - 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 185, - 135, 412, 195, -1, -1, -1, 336, -1, 410, -1, - -1, 413, 336, 148, -1, -1, 151, -1, -1, 154, - -1, 156, -1, 158, -1, -1, 401, 369, 403, 371, - 405, 433, 434, 369, -1, 371, -1, -1, -1, 369, - -1, 371, -1, -1, 374, 369, -1, 371, -1, -1, - -1, 186, -1, -1, -1, -1, 40, 41, -1, 43, - -1, 145, -1, 47, 199, -1, -1, 145, 410, -1, - 412, 413, 56, -1, 410, 59, 412, 413, -1, -1, - 410, -1, 412, 413, -1, -1, 410, -1, 412, 413, - -1, 433, 434, -1, -1, 145, -1, 433, 434, -1, - -1, 185, -1, 433, 434, -1, 190, 185, -1, 433, - 434, -1, 190, 97, 98, 99, -1, -1, -1, -1, - -1, 205, 206, 258, -1, -1, 210, 205, 206, -1, - -1, -1, 210, -1, 269, 185, 271, -1, -1, 274, - 190, -1, 40, 41, 145, 43, -1, -1, -1, 47, - -1, 286, 142, -1, -1, 205, 206, -1, 56, 149, - 210, 59, 152, 145, -1, -1, -1, -1, -1, 304, - 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 264, 145, -1, -1, 185, -1, 264, 322, 272, 190, - -1, -1, -1, -1, 272, -1, -1, -1, -1, 97, - 98, 99, -1, 185, 205, 206, -1, -1, 190, 210, - 345, 346, 347, 348, 264, -1, -1, -1, -1, -1, - -1, 185, 272, 205, 206, -1, 190, -1, 210, -1, - -1, -1, -1, -1, -1, 370, -1, 372, 373, -1, - -1, 205, 206, -1, 40, 41, 210, 43, -1, -1, - -1, -1, 48, 49, 50, 51, -1, -1, 40, 41, - 56, 43, -1, 264, -1, 47, -1, -1, 64, 65, - 52, 272, 262, -1, 56, -1, -1, 59, 60, 414, - -1, -1, 264, -1, -1, 369, -1, 371, -1, -1, - 272, 369, -1, 371, 284, 285, -1, -1, -1, -1, - 264, -1, 98, 99, -1, -1, -1, -1, 272, -1, - -1, -1, -1, -1, -1, 97, 98, 99, -1, 369, - -1, 371, -1, -1, -1, -1, 410, 317, 412, 413, - 320, -1, 410, -1, 412, 413, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 66, 67, -1, -1, 433, - 434, 72, 73, 74, 75, 433, 434, -1, -1, -1, - 410, -1, 412, 413, -1, -1, -1, -1, 369, -1, - 371, 92, 93, 94, 95, 96, 366, -1, -1, 40, - 41, -1, 43, 433, 434, -1, -1, 369, -1, 371, - -1, -1, 382, -1, 384, 56, 386, -1, 59, -1, - -1, -1, -1, 64, 65, 369, -1, 371, -1, 410, - -1, 412, 413, -1, -1, -1, -1, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 410, -1, - 412, 413, 433, 434, -1, -1, 97, 98, 99, -1, - -1, -1, -1, -1, -1, -1, 410, -1, 412, 413, - -1, 433, 434, -1, -1, -1, -1, -1, -1, -1, - 11, -1, -1, -1, -1, -1, -1, -1, 19, 433, - 434, 22, 23, 24, -1, 26, 27, 28, 29, -1, - 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, -1, 43, -1, -1, -1, -1, 48, 49, 50, - 51, -1, -1, 54, 55, 56, -1, -1, -1, -1, - -1, -1, -1, 64, 65, 40, 41, -1, 43, -1, - -1, -1, 47, -1, -1, -1, -1, -1, -1, -1, - -1, 56, -1, -1, 59, -1, -1, -1, 11, 12, - -1, -1, -1, -1, -1, -1, 19, 98, 99, 22, - 23, 24, -1, 26, 27, 28, 29, -1, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, -1, - 43, -1, 97, 98, 99, 48, 49, 50, 51, -1, - -1, 54, -1, 56, -1, -1, -1, -1, -1, -1, - 11, 64, 65, -1, -1, -1, -1, -1, 19, -1, - -1, 22, 23, 24, -1, 26, 27, 28, 29, -1, - 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, -1, 43, -1, -1, 98, 99, 48, 49, 50, - 51, -1, -1, 54, 55, 56, -1, -1, -1, -1, - -1, -1, -1, 64, 65, 40, 41, -1, 43, -1, - -1, -1, 47, -1, -1, -1, -1, -1, -1, -1, - -1, 56, -1, -1, 59, -1, -1, -1, 11, 12, - -1, -1, -1, -1, -1, -1, 19, 98, 99, 22, - 23, 24, -1, 26, 27, 28, 29, -1, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, -1, - 43, -1, 97, 98, 99, 48, 49, 50, 51, -1, - -1, 54, -1, 56, -1, -1, -1, -1, -1, -1, - 11, 64, 65, -1, -1, -1, -1, -1, 19, -1, - -1, 22, 23, 24, -1, 26, 27, 28, 29, -1, - 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 16, 43, -1, -1, 98, 99, 48, 49, 50, - 51, -1, -1, 54, -1, 56, -1, -1, -1, -1, - -1, -1, -1, 64, 65, 40, 41, 42, 43, 44, - 45, 46, -1, 48, 49, 50, 51, 52, 57, -1, - -1, 56, 57, -1, 63, 60, -1, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 98, 99, -1, - -1, 76, 77, -1, -1, -1, 16, -1, -1, -1, - 89, 90, 91, 92, 93, 94, 95, 96, 93, -1, - -1, 96, -1, 98, 99, 100, 101, 102, 103, 104, - 40, 41, 42, 43, 44, 45, 46, -1, 48, 49, - 50, 51, 52, -1, -1, -1, 56, -1, -1, -1, - 60, -1, 62, -1, -1, -1, -1, -1, -1, -1, - -1, 40, 41, -1, 43, -1, 76, 77, 47, -1, - -1, 16, -1, -1, -1, -1, -1, 56, -1, -1, - 59, -1, -1, 93, -1, -1, 96, -1, 98, 99, - 100, 101, 102, 103, 104, 40, 41, 42, 43, 44, - 45, 46, -1, 48, 49, 50, 51, 52, -1, -1, - -1, 56, -1, -1, -1, 60, -1, -1, 97, 98, - 99, -1, -1, -1, -1, -1, 40, 41, -1, 43, - -1, 76, 77, 47, -1, -1, 16, -1, -1, -1, - -1, -1, 56, -1, -1, 59, -1, -1, 93, -1, - -1, 96, -1, 98, 99, 100, 101, 102, 103, 104, - 40, 41, 42, 43, 44, 45, 46, -1, 48, 49, - 50, 51, 52, -1, 40, 41, 56, 43, -1, -1, - 60, 47, -1, 97, 98, 99, -1, -1, 40, 41, - 56, 43, -1, 59, -1, 47, 76, 77, -1, -1, - -1, -1, -1, -1, 56, -1, -1, 59, -1, -1, - -1, -1, -1, 93, -1, -1, 96, -1, 98, 99, - 100, 101, 102, 103, 104, -1, -1, -1, -1, -1, - -1, 97, 98, 99, -1, -1, -1, -1, 53, -1, - -1, -1, -1, 58, -1, 97, 98, 99, 63, -1, - -1, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 89, 90, 91, 92, 93, 94, - 95, 96, 53, -1, -1, -1, -1, 58, -1, -1, - -1, -1, 63, -1, -1, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 89, 90, - 91, 92, 93, 94, 95, 96, 53, -1, -1, -1, - -1, 58, -1, -1, -1, -1, 63, -1, -1, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, -1, + 0, 46, 93, 3, 4, 274, 72, 274, 8, 3, + 4, 72, 20, 274, 11, 12, 13, 14, 15, 56, + 52, 40, 41, 56, 43, 25, 30, 52, 60, 48, + 49, 50, 51, 185, 34, 35, 52, 56, 190, 53, + 34, 35, 52, 0, 58, 64, 65, 47, 40, 41, + 100, 43, 62, 78, 58, 47, 98, 99, 103, 145, + 52, 98, 99, 62, 56, 98, 99, 59, 60, 62, + 53, 99, 72, 40, 41, 58, 43, 53, 72, 98, + 99, 48, 49, 50, 51, 53, 93, 53, 99, 56, + 58, 53, 58, 100, 94, 53, 58, 104, 53, 185, + 58, 60, 99, 58, 190, 97, 98, 99, 53, 40, + 41, 62, 43, 58, 266, 56, 47, 53, 56, 205, + 206, 53, 58, 209, 53, 56, 58, 54, 59, 58, + 53, 98, 99, 145, 52, 58, 136, 53, 60, 145, + 103, 104, 58, 143, 56, 145, 415, 52, 415, 60, + 150, 145, 56, 153, 415, 142, 58, 92, 93, 94, + 95, 96, 149, 57, 52, 152, 97, 98, 99, 94, + 95, 96, 52, 185, 60, 62, 52, 243, 190, 185, + 266, 181, 243, 52, 190, 185, 52, 195, 274, 52, + 190, 185, 52, 205, 206, 62, 190, 209, 62, 205, + 206, 62, 61, 209, 56, 205, 206, 52, 52, 209, + 52, 205, 206, 62, 57, 209, 26, 53, 66, 67, + 372, 62, 374, 62, 62, 291, 292, 62, 52, 27, + 291, 292, 104, 61, 61, 45, 52, 52, 48, 49, + 52, 52, 62, 243, 92, 93, 94, 95, 96, 243, + 57, 57, 57, 52, 266, 52, 52, 52, 62, 52, + 266, 413, 274, 25, 416, 30, 266, 53, 274, 53, + 62, 62, 266, 339, 274, 275, 263, 62, 339, 62, + 274, 62, 62, 62, 436, 437, 372, 378, 374, 62, + 53, 291, 292, 103, 53, 62, 62, 291, 292, 286, + 287, 62, 8, 8, 8, 115, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, + 130, 131, 132, 133, 145, 135, 209, 413, 415, 415, + 416, -1, 319, 40, 41, 322, 43, 195, 148, 339, + 47, 151, -1, -1, 154, 339, 156, -1, 158, 56, + 436, 437, 59, -1, -1, -1, -1, -1, -1, 404, + 372, 406, 374, 408, 185, -1, 372, -1, 374, 190, + -1, -1, 372, -1, 374, -1, 186, 377, 372, -1, + 374, -1, 369, -1, 205, 206, -1, -1, 209, 199, + 97, 98, 99, -1, 145, -1, -1, -1, 385, -1, + 387, 413, 389, 415, 416, -1, -1, 413, -1, 415, + 416, -1, -1, 413, -1, 415, 416, -1, -1, 413, + -1, 415, 416, -1, 436, 437, -1, 145, -1, -1, + 436, 437, -1, -1, 185, -1, 436, 437, -1, 190, + -1, -1, 436, 437, -1, 266, -1, -1, -1, 259, + -1, -1, -1, 274, 205, 206, -1, -1, 209, -1, + -1, 271, -1, 273, -1, -1, 276, 185, -1, -1, + -1, -1, 190, 40, 41, -1, 43, -1, 288, -1, + 47, -1, 145, -1, -1, -1, -1, 205, 206, 56, + -1, 209, 59, -1, -1, -1, 306, 307, 308, 309, + 310, 311, 312, 313, 314, 315, 316, 145, -1, -1, + -1, -1, -1, -1, 324, 266, -1, 145, -1, -1, + -1, -1, 185, 274, -1, -1, -1, 190, -1, -1, + 97, 98, 99, -1, -1, -1, -1, -1, 348, 349, + 350, 351, 205, 206, -1, -1, 209, 185, 266, -1, + -1, 372, 190, 374, -1, -1, 274, 185, -1, -1, + -1, -1, 190, 373, -1, 375, 376, 205, 206, -1, + -1, 209, 40, 41, -1, 43, -1, 205, 206, 47, + -1, 209, 40, 41, -1, 43, -1, -1, 56, 47, + -1, 59, 413, -1, 415, 416, -1, -1, 56, -1, + -1, 59, -1, 266, -1, -1, -1, 417, -1, -1, + -1, 274, -1, -1, -1, 436, 437, -1, -1, -1, + -1, 372, -1, 374, -1, -1, -1, -1, 266, 97, + 98, 99, 40, 41, -1, 43, 274, -1, 266, 97, + 98, 99, -1, 16, -1, -1, 274, -1, 56, -1, + -1, 59, -1, -1, 372, -1, 374, -1, -1, -1, + -1, -1, 413, -1, 415, 416, -1, 40, 41, 42, + 43, 44, 45, 46, -1, 48, 49, 50, 51, 52, + -1, -1, -1, 56, 57, 436, 437, 60, -1, 97, + 98, 99, -1, -1, -1, 413, -1, 415, 416, -1, + -1, -1, -1, 76, 77, 40, 41, -1, 43, 372, + -1, 374, 47, -1, -1, -1, -1, -1, 436, 437, + 93, 56, -1, 96, 59, 98, 99, 100, 101, 102, + 103, 104, 40, 41, 372, 43, 374, -1, -1, 47, + -1, -1, -1, -1, 372, -1, 374, -1, 56, -1, + 413, 59, 415, 416, -1, -1, -1, -1, -1, -1, + -1, -1, 97, 98, 99, -1, -1, -1, -1, -1, + -1, -1, -1, 436, 437, 413, -1, 415, 416, -1, + -1, -1, -1, -1, -1, 413, -1, 415, 416, 97, + 98, 99, -1, -1, -1, -1, -1, -1, 436, 437, + -1, -1, 11, -1, -1, -1, -1, -1, 436, 437, + 19, -1, -1, 22, 23, 24, -1, 26, 27, 28, + 29, -1, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, -1, 43, -1, -1, -1, -1, 48, + 49, 50, 51, -1, -1, 54, 55, 56, -1, -1, + -1, -1, -1, -1, 11, 64, 65, -1, -1, -1, + -1, -1, 19, -1, -1, 22, 23, 24, -1, 26, + 27, 28, 29, -1, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 41, 16, 43, -1, -1, 98, + 99, 48, 49, 50, 51, -1, -1, 54, 55, 56, + -1, -1, -1, -1, -1, -1, -1, 64, 65, 40, + 41, 42, 43, 44, 45, 46, -1, 48, 49, 50, + 51, 52, -1, -1, -1, 56, 66, 67, -1, 60, + -1, 62, 72, 73, 74, 75, -1, -1, -1, -1, + -1, 98, 99, -1, -1, 76, 77, -1, -1, -1, + 16, -1, 92, 93, 94, 95, 96, -1, -1, -1, + -1, -1, 93, -1, -1, 96, -1, 98, 99, 100, + 101, 102, 103, 104, 40, 41, 42, 43, 44, 45, + 46, -1, 48, 49, 50, 51, 52, -1, -1, -1, + 56, -1, -1, -1, 60, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 40, 41, -1, 43, -1, + 76, 77, 47, -1, -1, 16, -1, -1, -1, -1, + -1, 56, -1, -1, 59, -1, -1, 93, -1, -1, + 96, -1, 98, 99, 100, 101, 102, 103, 104, 40, + 41, 42, 43, 44, 45, 46, -1, 48, 49, 50, + 51, 52, -1, -1, -1, 56, -1, -1, -1, 60, + -1, -1, 97, 98, 99, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 76, 77, -1, -1, 66, + 67, -1, -1, 70, 71, 72, 73, 74, 75, -1, + -1, -1, 93, -1, -1, 96, -1, 98, 99, 100, + 101, 102, 103, 104, 12, 92, 93, 94, 95, 96, + -1, 19, -1, -1, 22, 23, 24, -1, 26, 27, + 28, 29, -1, 31, 32, 33, 34, 35, 36, 37, + 38, 39, 40, 41, -1, 43, -1, -1, -1, -1, + 48, 49, 50, 51, -1, -1, 54, -1, 56, -1, + -1, -1, -1, -1, -1, -1, 64, 65, 12, -1, + -1, -1, -1, -1, -1, 19, -1, -1, 22, 23, + 24, -1, 26, 27, 28, 29, -1, 31, 32, 33, + 34, 35, 36, 37, 38, 39, 40, 41, -1, 43, + 98, 99, -1, -1, 48, 49, 50, 51, -1, -1, + 54, -1, 56, -1, 17, 18, -1, 20, 21, -1, + 64, 65, -1, -1, -1, -1, -1, -1, -1, 40, + 41, -1, 43, -1, -1, -1, 47, 40, 41, -1, + 43, -1, -1, -1, -1, 56, -1, -1, 59, -1, + -1, -1, -1, 56, 98, 99, 59, -1, -1, -1, + -1, 64, 65, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 78, 79, 80, 81, 82, + 83, 84, 85, 86, 87, 88, 97, 98, 99, -1, + -1, -1, -1, -1, 97, 98, 99, 19, -1, -1, + 22, 23, 24, -1, 26, 27, 28, 29, -1, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, + -1, 43, 40, 41, -1, 43, 48, 49, 50, 51, + -1, -1, 54, -1, 56, -1, -1, -1, 56, -1, + -1, 59, 64, 65, -1, -1, 64, 65, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 89, 90, 91, 92, 93, 94, 95, 96, - 53, -1, -1, -1, -1, 58, -1, -1, -1, -1, - 63, -1, -1, 66, 67, 68, 69, 70, 71, 72, - 73, 74, 75, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 53, -1, 89, 90, 91, 92, - 93, 94, 95, 96, 63, -1, -1, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 53, -1, - 89, 90, 91, 92, 93, 94, 95, 96, 63, -1, - -1, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 53, -1, 89, 90, 91, 92, 93, 94, - 95, 96, 63, -1, -1, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 53, -1, 89, 90, - 91, 92, 93, 94, 95, 96, 63, -1, -1, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, -1, + 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, + 88, -1, -1, 53, -1, -1, 98, 99, 58, 97, + 98, 99, -1, 63, -1, -1, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 75, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 89, + 90, 91, 92, 93, 94, 95, 96, 53, -1, -1, + -1, -1, 58, -1, -1, -1, -1, 63, -1, -1, + 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 53, -1, 89, 90, 91, 92, 93, 94, 95, 96, - 63, -1, -1, 66, 67, 68, 69, 70, 71, 72, - 73, 74, 75, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 53, -1, 89, 90, 91, 92, - 93, 94, 95, 96, 63, -1, -1, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 53, -1, - 89, 90, 91, 92, 93, 94, 95, 96, 63, -1, - -1, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 53, -1, 89, 90, 91, 92, 93, 94, - 95, 96, 63, -1, -1, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 89, 90, - 91, 92, 93, 94, 95, 96, 57, -1, -1, -1, - -1, -1, 63, -1, -1, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 89, 90, - 91, 92, 93, 94, 95, 96, 57, -1, -1, -1, - -1, -1, 63, -1, -1, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 89, 90, - 91, 92, 93, 94, 95, 96, 57, -1, -1, -1, - -1, -1, 63, -1, -1, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 89, 90, - 91, 92, 93, 94, 95, 96, 57, -1, -1, -1, - -1, -1, 63, -1, -1, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 89, 90, - 91, 92, 93, 94, 95, 96, 58, -1, -1, -1, + -1, -1, -1, 89, 90, 91, 92, 93, 94, 95, + 96, 53, -1, -1, -1, -1, 58, -1, -1, -1, -1, 63, -1, -1, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 89, 90, 91, - 92, 93, 94, 95, 96, 61, -1, 63, -1, -1, + 92, 93, 94, 95, 96, 53, -1, -1, -1, -1, + 58, -1, -1, -1, -1, 63, -1, -1, 66, 67, + 68, 69, 70, 71, 72, 73, 74, 75, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 53, + -1, 89, 90, 91, 92, 93, 94, 95, 96, 63, + -1, -1, 66, 67, 68, 69, 70, 71, 72, 73, + 74, 75, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 53, -1, 89, 90, 91, 92, 93, + 94, 95, 96, 63, -1, -1, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 75, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 53, -1, 89, + 90, 91, 92, 93, 94, 95, 96, 63, -1, -1, + 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 53, -1, 89, 90, 91, 92, 93, 94, 95, + 96, 63, -1, -1, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 53, -1, 89, 90, 91, + 92, 93, 94, 95, 96, 63, -1, -1, 66, 67, + 68, 69, 70, 71, 72, 73, 74, 75, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 53, + -1, 89, 90, 91, 92, 93, 94, 95, 96, 63, + -1, -1, 66, 67, 68, 69, 70, 71, 72, 73, + 74, 75, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 53, -1, 89, 90, 91, 92, 93, + 94, 95, 96, 63, -1, -1, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 75, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 53, -1, 89, + 90, 91, 92, 93, 94, 95, 96, 63, -1, -1, + 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 89, 90, 91, 92, 93, 94, 95, + 96, 57, -1, -1, -1, -1, -1, 63, -1, -1, + 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 89, 90, 91, 92, 93, 94, 95, + 96, 57, -1, -1, -1, -1, -1, 63, -1, -1, + 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 89, 90, 91, 92, 93, 94, 95, + 96, 57, -1, -1, -1, -1, -1, 63, -1, -1, + 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 89, 90, 91, 92, 93, 94, 95, + 96, 57, -1, -1, -1, -1, -1, 63, -1, -1, + 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 89, 90, 91, 92, 93, 94, 95, + 96, 57, -1, -1, -1, -1, -1, 63, -1, -1, + 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 89, 90, 91, 92, 93, 94, 95, + 96, 58, -1, -1, -1, -1, 63, -1, -1, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 89, 90, 91, 92, 93, 94, 95, 96, + 61, -1, 63, -1, -1, 66, 67, 68, 69, 70, + 71, 72, 73, 74, 75, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 89, 90, + 91, 92, 93, 94, 95, 96, 62, 63, -1, -1, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 89, 90, 91, 92, 93, 94, 95, @@ -4346,74 +4397,68 @@ namespace xsk { namespace gsc { namespace s1 { -1, -1, -1, -1, -1, -1, -1, -1, 89, 90, 91, 92, 93, 94, 95, 96, 62, 63, -1, -1, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 89, 90, 91, 92, 93, 94, 95, - 96, 62, 63, -1, -1, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 63, -1, -1, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 89, 90, - 91, 92, 93, 94, 95, 96, -1, -1, -1, -1, - -1, 89, 90, 91, 92, 93, 94, 95, 96, 66, - 67, -1, 69, 70, 71, 72, 73, 74, 75, 66, - 67, -1, -1, 70, 71, 72, 73, 74, 75, -1, - -1, -1, 89, 90, 91, 92, 93, 94, 95, 96, - -1, -1, 89, 90, 91, 92, 93, 94, 95, 96, - 66, 67, -1, -1, 70, 71, 72, 73, 74, 75, - 66, 67, -1, -1, 70, 71, 72, 73, 74, 75, - -1, -1, -1, -1, 90, 91, 92, 93, 94, 95, - 96, -1, -1, -1, 90, -1, 92, 93, 94, 95, - 96, 66, 67, -1, -1, 70, 71, 72, 73, 74, - 75, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 92, 93, 94, - 95, 96 + 63, -1, -1, 66, 67, 68, 69, 70, 71, 72, + 73, 74, 75, 89, 90, 91, 92, 93, 94, 95, + 96, -1, -1, -1, -1, -1, 89, 90, 91, 92, + 93, 94, 95, 96, 66, 67, -1, 69, 70, 71, + 72, 73, 74, 75, 66, 67, -1, -1, 70, 71, + 72, 73, 74, 75, -1, -1, -1, 89, 90, 91, + 92, 93, 94, 95, 96, -1, -1, 89, 90, 91, + 92, 93, 94, 95, 96, 66, 67, -1, -1, 70, + 71, 72, 73, 74, 75, 66, 67, -1, -1, 70, + 71, 72, 73, 74, 75, -1, -1, -1, -1, 90, + 91, 92, 93, 94, 95, 96, -1, -1, -1, 90, + -1, 92, 93, 94, 95, 96 }; const unsigned char parser::yystos_[] = { 0, 11, 12, 13, 14, 15, 99, 115, 116, 117, - 118, 119, 120, 121, 122, 185, 98, 185, 186, 186, + 118, 119, 120, 121, 122, 187, 98, 187, 188, 188, 52, 0, 117, 118, 119, 52, 78, 62, 62, 100, - 188, 167, 185, 16, 40, 41, 42, 43, 44, 45, + 190, 169, 187, 16, 40, 41, 42, 43, 44, 45, 46, 48, 49, 50, 51, 52, 56, 60, 76, 77, - 93, 96, 101, 102, 103, 104, 152, 157, 158, 159, - 160, 161, 162, 163, 164, 165, 166, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, - 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, - 193, 194, 53, 53, 58, 56, 185, 186, 56, 185, - 186, 56, 152, 56, 57, 152, 168, 169, 185, 152, - 152, 103, 104, 99, 62, 63, 66, 67, 68, 69, + 93, 96, 101, 102, 103, 104, 154, 159, 160, 161, + 162, 163, 164, 165, 166, 167, 168, 172, 173, 174, + 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, + 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, + 195, 196, 53, 53, 58, 56, 187, 188, 56, 187, + 188, 56, 154, 56, 57, 154, 170, 171, 187, 154, + 154, 103, 104, 99, 62, 63, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 89, 90, 91, 92, - 93, 94, 95, 96, 47, 56, 59, 97, 164, 165, - 185, 186, 52, 60, 62, 54, 125, 185, 56, 52, - 60, 56, 52, 60, 56, 53, 58, 152, 58, 57, - 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, - 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, - 185, 60, 168, 169, 185, 11, 19, 22, 23, 24, + 93, 94, 95, 96, 47, 56, 59, 97, 166, 167, + 187, 188, 52, 60, 62, 54, 128, 187, 56, 52, + 60, 56, 52, 60, 56, 53, 58, 154, 58, 57, + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 187, 60, 170, 171, 187, 11, 19, 22, 23, 24, 26, 27, 28, 29, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 55, 56, 64, 65, 123, 124, 125, - 126, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 150, 151, 154, 155, 156, 162, 163, - 171, 172, 175, 179, 180, 181, 182, 185, 152, 168, - 185, 152, 168, 185, 152, 152, 57, 152, 61, 57, - 185, 53, 52, 12, 126, 152, 62, 52, 62, 52, - 123, 52, 52, 52, 52, 93, 188, 192, 61, 62, - 62, 62, 152, 62, 52, 52, 56, 162, 163, 175, - 175, 55, 123, 62, 62, 62, 62, 62, 17, 18, - 20, 21, 64, 65, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 57, 53, 52, 57, 53, - 52, 57, 58, 57, 152, 168, 12, 62, 53, 152, - 27, 152, 127, 154, 155, 156, 175, 185, 152, 61, - 61, 62, 168, 168, 152, 52, 52, 52, 52, 152, - 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, - 57, 168, 57, 168, 57, 152, 52, 53, 62, 53, - 52, 53, 62, 30, 58, 53, 53, 53, 152, 152, - 152, 152, 52, 53, 52, 53, 52, 53, 168, 123, - 152, 123, 152, 153, 152, 185, 125, 62, 62, 53, - 53, 58, 53, 58, 53, 58, 168, 168, 168, 53, - 25, 53, 62, 53, 30, 62, 62, 169, 62, 169, - 62, 169, 53, 53, 53, 123, 62, 127, 123, 152, - 53, 53, 53, 53, 53, 62, 62, 62, 123, 123 + 37, 38, 39, 55, 56, 64, 65, 123, 124, 126, + 127, 128, 130, 131, 132, 133, 134, 135, 136, 137, + 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, + 148, 149, 150, 151, 152, 153, 156, 157, 158, 164, + 165, 173, 174, 177, 181, 182, 183, 184, 187, 154, + 170, 187, 154, 170, 187, 154, 154, 57, 154, 61, + 57, 187, 53, 52, 12, 123, 125, 154, 62, 52, + 62, 52, 123, 52, 52, 52, 52, 93, 190, 194, + 61, 62, 62, 62, 154, 62, 52, 52, 56, 164, + 165, 177, 177, 55, 124, 62, 62, 62, 62, 62, + 17, 18, 20, 21, 64, 65, 78, 79, 80, 81, + 82, 83, 84, 85, 86, 87, 88, 57, 53, 52, + 57, 53, 52, 57, 58, 57, 154, 170, 12, 123, + 62, 53, 154, 27, 154, 129, 156, 157, 158, 177, + 187, 154, 61, 61, 62, 170, 170, 154, 52, 52, + 52, 52, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 57, 170, 57, 170, 57, 154, 52, + 53, 62, 53, 52, 53, 62, 30, 58, 53, 53, + 53, 154, 154, 154, 154, 52, 53, 52, 53, 52, + 53, 170, 123, 154, 123, 154, 155, 154, 187, 128, + 62, 62, 53, 53, 58, 53, 58, 53, 58, 170, + 170, 170, 53, 25, 53, 62, 53, 30, 62, 62, + 171, 62, 171, 62, 171, 53, 53, 53, 123, 62, + 129, 123, 154, 53, 53, 53, 53, 53, 62, 62, + 62, 123, 123 }; const unsigned char @@ -4423,24 +4468,25 @@ namespace xsk { namespace gsc { namespace s1 { 117, 118, 119, 119, 119, 119, 119, 120, 121, 122, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, - 123, 123, 123, 123, 123, 123, 124, 124, 125, 125, - 126, 126, 127, 127, 127, 127, 128, 128, 129, 129, - 129, 130, 131, 131, 132, 133, 133, 134, 134, 135, - 136, 136, 137, 138, 139, 140, 141, 142, 142, 143, - 144, 144, 145, 146, 147, 148, 148, 149, 150, 151, - 152, 152, 152, 153, 153, 154, 154, 154, 154, 154, - 154, 154, 154, 154, 154, 154, 155, 155, 156, 156, - 157, 158, 158, 158, 158, 158, 158, 158, 158, 158, - 158, 158, 158, 158, 158, 158, 158, 158, 158, 159, - 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, - 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, - 159, 159, 159, 159, 159, 159, 159, 160, 161, 162, - 162, 163, 163, 164, 164, 164, 164, 164, 164, 165, - 165, 165, 165, 166, 167, 167, 167, 168, 168, 169, - 169, 170, 170, 171, 172, 172, 173, 174, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 186, 187, - 188, 189, 190, 191, 191, 192, 192, 193, 194 + 123, 123, 123, 123, 123, 124, 124, 125, 125, 126, + 126, 127, 127, 128, 128, 129, 129, 129, 129, 130, + 130, 131, 131, 131, 132, 133, 133, 134, 135, 135, + 136, 136, 137, 138, 138, 139, 140, 141, 142, 143, + 144, 144, 145, 146, 146, 147, 148, 149, 150, 150, + 151, 152, 153, 154, 154, 154, 155, 155, 156, 156, + 156, 156, 156, 156, 156, 156, 156, 156, 156, 157, + 157, 158, 158, 159, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 162, 163, 164, 164, 165, 165, 166, 166, 166, 166, + 166, 166, 167, 167, 167, 167, 168, 169, 169, 169, + 170, 170, 171, 171, 172, 172, 173, 174, 174, 175, + 176, 177, 177, 177, 177, 177, 177, 177, 177, 177, + 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, + 188, 188, 189, 190, 191, 192, 193, 193, 194, 194, + 195, 196 }; const signed char @@ -4450,24 +4496,25 @@ namespace xsk { namespace gsc { namespace s1 { 3, 3, 1, 1, 1, 1, 1, 5, 4, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 3, 2, 3, 2, - 2, 1, 1, 1, 1, 0, 2, 2, 2, 2, - 2, 6, 8, 6, 3, 8, 6, 8, 6, 2, - 2, 4, 5, 7, 5, 7, 9, 7, 9, 5, - 3, 3, 2, 2, 2, 3, 2, 2, 5, 5, - 1, 1, 1, 1, 0, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, - 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, + 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, + 1, 3, 2, 3, 2, 1, 1, 1, 0, 2, + 2, 2, 2, 2, 6, 8, 6, 3, 8, 6, + 8, 6, 2, 2, 4, 5, 7, 5, 7, 9, + 7, 9, 5, 3, 3, 2, 2, 2, 3, 2, + 2, 5, 5, 1, 1, 1, 1, 0, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, + 2, 2, 2, 5, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, - 1, 2, 2, 4, 6, 5, 7, 5, 7, 8, - 9, 9, 9, 3, 3, 1, 0, 1, 0, 3, - 1, 2, 3, 4, 3, 2, 2, 3, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, - 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, - 1, 1, 7, 2, 1, 2, 1, 1, 1 + 2, 2, 1, 1, 2, 2, 4, 6, 5, 7, + 5, 7, 8, 9, 9, 9, 3, 3, 1, 0, + 1, 0, 3, 1, 2, 3, 4, 3, 2, 2, + 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 2, 1, 1, 1, 1, 1, 2, 1, 1, + 1, 1, 1, 1, 1, 7, 2, 1, 2, 1, + 1, 1 }; @@ -4477,28 +4524,29 @@ namespace xsk { namespace gsc { namespace s1 { const short parser::yyrline_[] = { - 0, 254, 254, 255, 259, 261, 263, 265, 267, 269, - 274, 278, 283, 284, 285, 286, 287, 291, 296, 301, - 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, - 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, - 326, 327, 328, 329, 330, 331, 335, 336, 340, 341, - 345, 347, 352, 354, 356, 359, 363, 365, 370, 372, - 374, 379, 384, 386, 391, 396, 398, 403, 405, 410, - 415, 417, 422, 427, 432, 437, 442, 447, 449, 454, - 459, 461, 466, 471, 476, 481, 483, 488, 493, 498, - 503, 504, 505, 509, 510, 514, 516, 518, 520, 522, - 524, 526, 528, 530, 532, 534, 539, 541, 546, 548, - 553, 558, 560, 562, 564, 566, 568, 570, 572, 574, - 576, 578, 580, 582, 584, 586, 588, 590, 592, 597, - 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, - 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, - 618, 619, 620, 621, 622, 623, 624, 628, 633, 638, - 639, 642, 643, 647, 649, 651, 653, 655, 657, 662, - 664, 666, 668, 673, 678, 680, 683, 687, 690, 694, - 696, 701, 703, 708, 713, 715, 720, 725, 730, 731, - 732, 733, 734, 735, 736, 737, 738, 742, 747, 752, - 757, 762, 767, 772, 777, 782, 787, 792, 794, 799, - 804, 809, 814, 819, 821, 826, 828, 833, 838 + 0, 256, 256, 257, 261, 263, 265, 267, 269, 271, + 276, 280, 285, 286, 287, 288, 289, 293, 298, 303, + 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, + 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, + 328, 329, 330, 331, 332, 336, 337, 341, 343, 348, + 350, 355, 356, 360, 361, 365, 367, 369, 372, 376, + 378, 383, 385, 387, 392, 397, 399, 404, 409, 411, + 416, 418, 423, 428, 430, 435, 440, 445, 450, 455, + 460, 462, 467, 472, 474, 479, 484, 489, 494, 496, + 501, 506, 511, 516, 517, 518, 522, 523, 527, 529, + 531, 533, 535, 537, 539, 541, 543, 545, 547, 552, + 554, 559, 561, 566, 571, 573, 575, 577, 579, 581, + 583, 585, 587, 589, 591, 593, 595, 597, 599, 601, + 603, 605, 610, 611, 612, 613, 614, 615, 616, 617, + 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, + 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, + 641, 646, 651, 652, 655, 656, 660, 662, 664, 666, + 668, 670, 675, 677, 679, 681, 686, 691, 693, 696, + 700, 703, 707, 709, 714, 716, 721, 726, 728, 733, + 738, 743, 744, 745, 746, 747, 748, 749, 750, 751, + 755, 760, 765, 770, 775, 780, 785, 790, 795, 800, + 805, 807, 812, 817, 822, 827, 832, 834, 839, 841, + 846, 851 }; void @@ -4531,9 +4579,9 @@ namespace xsk { namespace gsc { namespace s1 { #line 13 "parser.ypp" } } } // xsk::gsc::s1 -#line 4535 "parser.cpp" +#line 4583 "parser.cpp" -#line 842 "parser.ypp" +#line 855 "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 74cbd907..550dd4ad 100644 --- a/src/s1/xsk/parser.hpp +++ b/src/s1/xsk/parser.hpp @@ -535,6 +535,7 @@ namespace xsk { namespace gsc { namespace s1 { char dummy39[sizeof (ast::program::ptr)]; // stmt + // stmt_or_dev char dummy40[sizeof (ast::stmt)]; // stmt_assign @@ -558,64 +559,67 @@ namespace xsk { namespace gsc { namespace s1 { // stmt_default char dummy47[sizeof (ast::stmt_default::ptr)]; + // stmt_dev + char dummy48[sizeof (ast::stmt_dev::ptr)]; + // stmt_dowhile - char dummy48[sizeof (ast::stmt_dowhile::ptr)]; + char dummy49[sizeof (ast::stmt_dowhile::ptr)]; // stmt_endon - char dummy49[sizeof (ast::stmt_endon::ptr)]; + char dummy50[sizeof (ast::stmt_endon::ptr)]; // stmt_expr - char dummy50[sizeof (ast::stmt_expr::ptr)]; + char dummy51[sizeof (ast::stmt_expr::ptr)]; // stmt_for - char dummy51[sizeof (ast::stmt_for::ptr)]; + char dummy52[sizeof (ast::stmt_for::ptr)]; // stmt_foreach - char dummy52[sizeof (ast::stmt_foreach::ptr)]; + char dummy53[sizeof (ast::stmt_foreach::ptr)]; // stmt_if - char dummy53[sizeof (ast::stmt_if::ptr)]; + char dummy54[sizeof (ast::stmt_if::ptr)]; // stmt_ifelse - char dummy54[sizeof (ast::stmt_ifelse::ptr)]; + char dummy55[sizeof (ast::stmt_ifelse::ptr)]; - // stmt_dev - // stmt_block // stmt_list - char dummy55[sizeof (ast::stmt_list::ptr)]; + // stmt_or_dev_list + // stmt_block + char dummy56[sizeof (ast::stmt_list::ptr)]; // stmt_notify - char dummy56[sizeof (ast::stmt_notify::ptr)]; + char dummy57[sizeof (ast::stmt_notify::ptr)]; // stmt_prof_begin - char dummy57[sizeof (ast::stmt_prof_begin::ptr)]; + char dummy58[sizeof (ast::stmt_prof_begin::ptr)]; // stmt_prof_end - char dummy58[sizeof (ast::stmt_prof_end::ptr)]; + char dummy59[sizeof (ast::stmt_prof_end::ptr)]; // stmt_return - char dummy59[sizeof (ast::stmt_return::ptr)]; + char dummy60[sizeof (ast::stmt_return::ptr)]; // stmt_switch - char dummy60[sizeof (ast::stmt_switch::ptr)]; + char dummy61[sizeof (ast::stmt_switch::ptr)]; // stmt_wait - char dummy61[sizeof (ast::stmt_wait::ptr)]; + char dummy62[sizeof (ast::stmt_wait::ptr)]; // stmt_waitframe - char dummy62[sizeof (ast::stmt_waitframe::ptr)]; + char dummy63[sizeof (ast::stmt_waitframe::ptr)]; // stmt_waittill - char dummy63[sizeof (ast::stmt_waittill::ptr)]; + char dummy64[sizeof (ast::stmt_waittill::ptr)]; // stmt_waittillframeend - char dummy64[sizeof (ast::stmt_waittillframeend::ptr)]; + char dummy65[sizeof (ast::stmt_waittillframeend::ptr)]; // stmt_waittillmatch - char dummy65[sizeof (ast::stmt_waittillmatch::ptr)]; + char dummy66[sizeof (ast::stmt_waittillmatch::ptr)]; // stmt_while - char dummy66[sizeof (ast::stmt_while::ptr)]; + char dummy67[sizeof (ast::stmt_while::ptr)]; // "field" // "path" @@ -625,7 +629,7 @@ namespace xsk { namespace gsc { namespace s1 { // "color" // "float" // "integer" - char dummy67[sizeof (std::string)]; + char dummy68[sizeof (std::string)]; }; /// The size of the largest semantic type. @@ -930,77 +934,79 @@ namespace xsk { namespace gsc { namespace s1 { S_decl_constant = 121, // decl_constant S_decl_thread = 122, // decl_thread S_stmt = 123, // stmt - S_stmt_dev = 124, // stmt_dev - S_stmt_block = 125, // stmt_block - S_stmt_list = 126, // stmt_list - S_stmt_expr = 127, // stmt_expr - S_stmt_call = 128, // stmt_call - S_stmt_assign = 129, // stmt_assign - S_stmt_endon = 130, // stmt_endon - S_stmt_notify = 131, // stmt_notify - S_stmt_wait = 132, // stmt_wait - S_stmt_waittill = 133, // stmt_waittill - S_stmt_waittillmatch = 134, // stmt_waittillmatch - S_stmt_waittillframeend = 135, // stmt_waittillframeend - S_stmt_waitframe = 136, // stmt_waitframe - S_stmt_if = 137, // stmt_if - S_stmt_ifelse = 138, // stmt_ifelse - S_stmt_while = 139, // stmt_while - S_stmt_dowhile = 140, // stmt_dowhile - S_stmt_for = 141, // stmt_for - S_stmt_foreach = 142, // stmt_foreach - S_stmt_switch = 143, // stmt_switch - S_stmt_case = 144, // stmt_case - S_stmt_default = 145, // stmt_default - S_stmt_break = 146, // stmt_break - S_stmt_continue = 147, // stmt_continue - S_stmt_return = 148, // stmt_return - S_stmt_breakpoint = 149, // stmt_breakpoint - S_stmt_prof_begin = 150, // stmt_prof_begin - S_stmt_prof_end = 151, // stmt_prof_end - S_expr = 152, // expr - S_expr_or_empty = 153, // expr_or_empty - S_expr_assign = 154, // expr_assign - S_expr_increment = 155, // expr_increment - S_expr_decrement = 156, // expr_decrement - S_expr_ternary = 157, // expr_ternary - S_expr_binary = 158, // expr_binary - S_expr_primitive = 159, // expr_primitive - S_expr_complement = 160, // expr_complement - S_expr_not = 161, // expr_not - S_expr_call = 162, // expr_call - S_expr_method = 163, // expr_method - S_expr_function = 164, // expr_function - S_expr_pointer = 165, // expr_pointer - S_expr_add_array = 166, // expr_add_array - S_expr_parameters = 167, // expr_parameters - S_expr_arguments = 168, // expr_arguments - S_expr_arguments_no_empty = 169, // expr_arguments_no_empty - S_expr_reference = 170, // expr_reference - S_expr_array = 171, // expr_array - S_expr_field = 172, // expr_field - S_expr_size = 173, // expr_size - S_expr_paren = 174, // expr_paren - S_expr_object = 175, // expr_object - S_expr_thisthread = 176, // expr_thisthread - S_expr_empty_array = 177, // expr_empty_array - S_expr_undefined = 178, // expr_undefined - S_expr_game = 179, // expr_game - S_expr_self = 180, // expr_self - S_expr_anim = 181, // expr_anim - S_expr_level = 182, // expr_level - S_expr_animation = 183, // expr_animation - S_expr_animtree = 184, // expr_animtree - S_expr_identifier = 185, // expr_identifier - S_expr_path = 186, // expr_path - S_expr_istring = 187, // expr_istring - S_expr_string = 188, // expr_string - S_expr_color = 189, // expr_color - S_expr_vector = 190, // expr_vector - S_expr_float = 191, // expr_float - S_expr_integer = 192, // expr_integer - S_expr_false = 193, // expr_false - S_expr_true = 194 // expr_true + S_stmt_or_dev = 124, // stmt_or_dev + S_stmt_list = 125, // stmt_list + S_stmt_or_dev_list = 126, // stmt_or_dev_list + S_stmt_dev = 127, // stmt_dev + S_stmt_block = 128, // stmt_block + S_stmt_expr = 129, // stmt_expr + S_stmt_call = 130, // stmt_call + S_stmt_assign = 131, // stmt_assign + S_stmt_endon = 132, // stmt_endon + S_stmt_notify = 133, // stmt_notify + S_stmt_wait = 134, // stmt_wait + S_stmt_waittill = 135, // stmt_waittill + S_stmt_waittillmatch = 136, // stmt_waittillmatch + S_stmt_waittillframeend = 137, // stmt_waittillframeend + S_stmt_waitframe = 138, // stmt_waitframe + S_stmt_if = 139, // stmt_if + S_stmt_ifelse = 140, // stmt_ifelse + S_stmt_while = 141, // stmt_while + S_stmt_dowhile = 142, // stmt_dowhile + S_stmt_for = 143, // stmt_for + S_stmt_foreach = 144, // stmt_foreach + S_stmt_switch = 145, // stmt_switch + S_stmt_case = 146, // stmt_case + S_stmt_default = 147, // stmt_default + S_stmt_break = 148, // stmt_break + S_stmt_continue = 149, // stmt_continue + S_stmt_return = 150, // stmt_return + S_stmt_breakpoint = 151, // stmt_breakpoint + S_stmt_prof_begin = 152, // stmt_prof_begin + S_stmt_prof_end = 153, // stmt_prof_end + S_expr = 154, // expr + S_expr_or_empty = 155, // expr_or_empty + S_expr_assign = 156, // expr_assign + S_expr_increment = 157, // expr_increment + S_expr_decrement = 158, // expr_decrement + S_expr_ternary = 159, // expr_ternary + S_expr_binary = 160, // expr_binary + S_expr_primitive = 161, // expr_primitive + S_expr_complement = 162, // expr_complement + S_expr_not = 163, // expr_not + S_expr_call = 164, // expr_call + S_expr_method = 165, // expr_method + S_expr_function = 166, // expr_function + S_expr_pointer = 167, // expr_pointer + S_expr_add_array = 168, // expr_add_array + S_expr_parameters = 169, // expr_parameters + S_expr_arguments = 170, // expr_arguments + S_expr_arguments_no_empty = 171, // expr_arguments_no_empty + S_expr_reference = 172, // expr_reference + S_expr_array = 173, // expr_array + S_expr_field = 174, // expr_field + S_expr_size = 175, // expr_size + S_expr_paren = 176, // expr_paren + S_expr_object = 177, // expr_object + S_expr_thisthread = 178, // expr_thisthread + S_expr_empty_array = 179, // expr_empty_array + S_expr_undefined = 180, // expr_undefined + S_expr_game = 181, // expr_game + S_expr_self = 182, // expr_self + S_expr_anim = 183, // expr_anim + S_expr_level = 184, // expr_level + S_expr_animation = 185, // expr_animation + S_expr_animtree = 186, // expr_animtree + S_expr_identifier = 187, // expr_identifier + S_expr_path = 188, // expr_path + S_expr_istring = 189, // expr_istring + S_expr_string = 190, // expr_string + S_expr_color = 191, // expr_color + S_expr_vector = 192, // expr_vector + S_expr_float = 193, // expr_float + S_expr_integer = 194, // expr_integer + S_expr_false = 195, // expr_false + S_expr_true = 196 // expr_true }; }; @@ -1204,6 +1210,7 @@ namespace xsk { namespace gsc { namespace s1 { break; case symbol_kind::S_stmt: // stmt + case symbol_kind::S_stmt_or_dev: // stmt_or_dev value.move< ast::stmt > (std::move (that.value)); break; @@ -1235,6 +1242,10 @@ namespace xsk { namespace gsc { namespace s1 { value.move< ast::stmt_default::ptr > (std::move (that.value)); break; + case symbol_kind::S_stmt_dev: // stmt_dev + value.move< ast::stmt_dev::ptr > (std::move (that.value)); + break; + case symbol_kind::S_stmt_dowhile: // stmt_dowhile value.move< ast::stmt_dowhile::ptr > (std::move (that.value)); break; @@ -1263,9 +1274,9 @@ namespace xsk { namespace gsc { namespace s1 { value.move< ast::stmt_ifelse::ptr > (std::move (that.value)); break; - case symbol_kind::S_stmt_dev: // stmt_dev - case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list + case symbol_kind::S_stmt_or_dev_list: // stmt_or_dev_list + case symbol_kind::S_stmt_block: // stmt_block value.move< ast::stmt_list::ptr > (std::move (that.value)); break; @@ -2005,6 +2016,20 @@ namespace xsk { namespace gsc { namespace s1 { {} #endif +#if 201103L <= YY_CPLUSPLUS + basic_symbol (typename Base::kind_type t, ast::stmt_dev::ptr&& v, location_type&& l) + : Base (t) + , value (std::move (v)) + , location (std::move (l)) + {} +#else + basic_symbol (typename Base::kind_type t, const ast::stmt_dev::ptr& v, const location_type& l) + : Base (t) + , value (v) + , location (l) + {} +#endif + #if 201103L <= YY_CPLUSPLUS basic_symbol (typename Base::kind_type t, ast::stmt_dowhile::ptr&& v, location_type&& l) : Base (t) @@ -2474,6 +2499,7 @@ switch (yykind) break; case symbol_kind::S_stmt: // stmt + case symbol_kind::S_stmt_or_dev: // stmt_or_dev value.template destroy< ast::stmt > (); break; @@ -2505,6 +2531,10 @@ switch (yykind) value.template destroy< ast::stmt_default::ptr > (); break; + case symbol_kind::S_stmt_dev: // stmt_dev + value.template destroy< ast::stmt_dev::ptr > (); + break; + case symbol_kind::S_stmt_dowhile: // stmt_dowhile value.template destroy< ast::stmt_dowhile::ptr > (); break; @@ -2533,9 +2563,9 @@ switch (yykind) value.template destroy< ast::stmt_ifelse::ptr > (); break; - case symbol_kind::S_stmt_dev: // stmt_dev - case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list + case symbol_kind::S_stmt_or_dev_list: // stmt_or_dev_list + case symbol_kind::S_stmt_block: // stmt_block value.template destroy< ast::stmt_list::ptr > (); break; @@ -4804,8 +4834,8 @@ switch (yykind) /// Constants. enum { - yylast_ = 2291, ///< Last index in yytable_. - yynnts_ = 81, ///< Number of nonterminal symbols. + yylast_ = 2285, ///< Last index in yytable_. + yynnts_ = 83, ///< Number of nonterminal symbols. yyfinal_ = 21 ///< Termination state number. }; @@ -4999,6 +5029,7 @@ switch (yykind) break; case symbol_kind::S_stmt: // stmt + case symbol_kind::S_stmt_or_dev: // stmt_or_dev value.copy< ast::stmt > (YY_MOVE (that.value)); break; @@ -5030,6 +5061,10 @@ switch (yykind) value.copy< ast::stmt_default::ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_stmt_dev: // stmt_dev + value.copy< ast::stmt_dev::ptr > (YY_MOVE (that.value)); + break; + case symbol_kind::S_stmt_dowhile: // stmt_dowhile value.copy< ast::stmt_dowhile::ptr > (YY_MOVE (that.value)); break; @@ -5058,9 +5093,9 @@ switch (yykind) value.copy< ast::stmt_ifelse::ptr > (YY_MOVE (that.value)); break; - case symbol_kind::S_stmt_dev: // stmt_dev - case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list + case symbol_kind::S_stmt_or_dev_list: // stmt_or_dev_list + case symbol_kind::S_stmt_block: // stmt_block value.copy< ast::stmt_list::ptr > (YY_MOVE (that.value)); break; @@ -5315,6 +5350,7 @@ switch (yykind) break; case symbol_kind::S_stmt: // stmt + case symbol_kind::S_stmt_or_dev: // stmt_or_dev value.move< ast::stmt > (YY_MOVE (s.value)); break; @@ -5346,6 +5382,10 @@ switch (yykind) value.move< ast::stmt_default::ptr > (YY_MOVE (s.value)); break; + case symbol_kind::S_stmt_dev: // stmt_dev + value.move< ast::stmt_dev::ptr > (YY_MOVE (s.value)); + break; + case symbol_kind::S_stmt_dowhile: // stmt_dowhile value.move< ast::stmt_dowhile::ptr > (YY_MOVE (s.value)); break; @@ -5374,9 +5414,9 @@ switch (yykind) value.move< ast::stmt_ifelse::ptr > (YY_MOVE (s.value)); break; - case symbol_kind::S_stmt_dev: // stmt_dev - case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list + case symbol_kind::S_stmt_or_dev_list: // stmt_or_dev_list + case symbol_kind::S_stmt_block: // stmt_block value.move< ast::stmt_list::ptr > (YY_MOVE (s.value)); break; @@ -5498,7 +5538,7 @@ switch (yykind) #line 13 "parser.ypp" } } } // xsk::gsc::s1 -#line 5502 "parser.hpp" +#line 5542 "parser.hpp" diff --git a/src/s1/xsk/resolver.cpp b/src/s1/xsk/resolver.cpp index ea40dd93..a43243e4 100644 --- a/src/s1/xsk/resolver.cpp +++ b/src/s1/xsk/resolver.cpp @@ -46,7 +46,7 @@ auto resolver::opcode_name(std::uint8_t id) -> std::string auto resolver::function_id(const std::string& name) -> std::uint16_t { - if(name.starts_with("_func_")) + if (name.starts_with("_func_")) { return std::stoul(name.substr(6), nullptr, 16); } @@ -75,7 +75,7 @@ auto resolver::function_name(std::uint16_t id) -> std::string auto resolver::method_id(const std::string& name) -> std::uint16_t { - if(name.starts_with("_meth_")) + if (name.starts_with("_meth_")) { return std::stoul(name.substr(6), nullptr, 16); } @@ -104,7 +104,7 @@ auto resolver::method_name(std::uint16_t id) -> std::string auto resolver::file_id(const std::string& name) -> std::uint16_t { - if(name.starts_with("_id_")) + if (name.starts_with("_id_")) { return std::stoul(name.substr(4), nullptr, 16); } @@ -133,7 +133,7 @@ auto resolver::file_name(std::uint16_t id) -> std::string auto resolver::token_id(const std::string& name) -> std::uint16_t { - if(name.starts_with("_id_")) + if (name.starts_with("_id_")) { return std::stoul(name.substr(4), nullptr, 16); } @@ -162,7 +162,7 @@ auto resolver::token_name(std::uint16_t id) -> std::string auto resolver::find_function(const std::string& name) -> bool { - if(name.starts_with("_func_")) return true; + if (name.starts_with("_func_")) return true; const auto itr = function_map_rev.find(name); @@ -176,7 +176,7 @@ auto resolver::find_function(const std::string& name) -> bool auto resolver::find_method(const std::string& name) -> bool { - if(name.starts_with("_meth_")) return true; + if (name.starts_with("_meth_")) return true; const auto itr = method_map_rev.find(name); @@ -190,7 +190,7 @@ auto resolver::find_method(const std::string& name) -> bool auto resolver::make_token(std::string_view str) -> std::string { - if(str.starts_with("_id_") || str.starts_with("_func_") || str.starts_with("_meth_")) + if (str.starts_with("_id_") || str.starts_with("_func_") || str.starts_with("_meth_")) { return std::string(str); } @@ -213,7 +213,7 @@ auto resolver::file_data(const std::string& name) -> std::tuplefirst ,reinterpret_cast(itr->second.data()), itr->second.size() }; } @@ -222,7 +222,7 @@ auto resolver::file_data(const std::string& name) -> std::tuplefirst, reinterpret_cast(res.first->second.data()), res.first->second.size() }; } @@ -2583,7 +2583,7 @@ struct __init__ __init__() { static bool init = false; - if(init) return; + if (init) return; init = true; opcode_map.reserve(opcode_list.size()); @@ -2597,31 +2597,31 @@ struct __init__ token_map.reserve(token_list.size()); token_map_rev.reserve(token_list.size()); - for(const auto& entry : opcode_list) + for (const auto& entry : opcode_list) { opcode_map.insert({ entry.first, entry.second }); opcode_map_rev.insert({ entry.second, entry.first }); } - for(const auto& entry : function_list) + for (const auto& entry : function_list) { function_map.insert({ entry.first, entry.second }); function_map_rev.insert({ entry.second, entry.first }); } - for(const auto& entry : method_list) + for (const auto& entry : method_list) { method_map.insert({ entry.first, entry.second }); method_map_rev.insert({ entry.second, entry.first }); } - for(const auto& entry : file_list) + for (const auto& entry : file_list) { file_map.insert({ entry.first, entry.second }); file_map_rev.insert({ entry.second, entry.first }); } - for(const auto& entry : token_list) + for (const auto& entry : token_list) { token_map.insert({ entry.first, entry.second }); token_map_rev.insert({ entry.second, entry.first }); diff --git a/src/s2/xsk/assembler.cpp b/src/s2/xsk/assembler.cpp index 3d889099..3e7f168f 100644 --- a/src/s2/xsk/assembler.cpp +++ b/src/s2/xsk/assembler.cpp @@ -572,4 +572,4 @@ auto assembler::resolve_label(const std::string& name) -> std::int32_t throw asm_error("Couldn't resolve label address of '" + name + "'!"); } -} // namespace xsk::gsc::s2 +} // namespace xsk::gsc::s2 diff --git a/src/s2/xsk/compiler.cpp b/src/s2/xsk/compiler.cpp index 48d65719..2b90e4da 100644 --- a/src/s2/xsk/compiler.cpp +++ b/src/s2/xsk/compiler.cpp @@ -152,7 +152,7 @@ void compiler::emit_declaration(const ast::decl& decl) void compiler::emit_decl_usingtree(const ast::decl_usingtree::ptr& animtree) { - if(developer_thread_) + if (developer_thread_) throw comp_error(animtree->loc(), "cannot put #using_animtree inside /# ... #/ comment"); animtrees_.push_back({ animtree->name->value, false }); @@ -195,6 +195,9 @@ void compiler::emit_stmt(const ast::stmt& stmt, const block::ptr& blk, bool last case ast::kind::stmt_list: emit_stmt_list(stmt.as_list, blk, last); break; + case ast::kind::stmt_dev: + emit_stmt_dev(stmt.as_dev, blk, last); + break; case ast::kind::stmt_expr: emit_stmt_expr(stmt.as_expr, blk); break; @@ -284,6 +287,11 @@ void compiler::emit_stmt_list(const ast::stmt_list::ptr& stmt, const block::ptr& } } +void compiler::emit_stmt_dev(const ast::stmt_dev::ptr& stmt, const block::ptr& blk, bool last) +{ + emit_stmt_list(stmt->list, blk, last); +} + void compiler::emit_stmt_expr(const ast::stmt_expr::ptr& stmt, const block::ptr& blk) { switch (stmt->expr.kind()) @@ -580,6 +588,8 @@ void compiler::emit_stmt_dowhile(const ast::stmt_dowhile::ptr& stmt, const block emit_stmt(stmt->stmt, stmt->blk, false); + insert_label(continue_loc); + bool const_cond = is_constant_condition(stmt->test); if (!const_cond) @@ -588,7 +598,6 @@ void compiler::emit_stmt_dowhile(const ast::stmt_dowhile::ptr& stmt, const block emit_opcode(opcode::OP_JumpOnFalse, break_loc); } - insert_label(continue_loc); emit_opcode(opcode::OP_jumpback, begin_loc); insert_label(break_loc); @@ -1009,9 +1018,6 @@ void compiler::emit_expr(const ast::expr& expr, const block::ptr& blk) case ast::kind::expr_string: emit_expr_string(expr.as_string); break; - case ast::kind::expr_color: - emit_expr_color(expr.as_color); - break; case ast::kind::expr_vector: emit_expr_vector(expr.as_vector, blk); break; @@ -1961,30 +1967,6 @@ void compiler::emit_expr_string(const ast::expr_string::ptr& expr) emit_opcode(opcode::OP_GetString, expr->value); } -void compiler::emit_expr_color(const ast::expr_color::ptr& expr) -{ - std::vector data; - std::string x, y, z; - - if (expr->value.size() == 3) - { - x = "0x" + expr->value.substr(0, 1) + expr->value.substr(0, 1); - y = "0x" + expr->value.substr(1, 1) + expr->value.substr(1, 1); - z = "0x" + expr->value.substr(2, 1) + expr->value.substr(2, 1); - } - else - { - x = "0x" + expr->value.substr(0, 2); - y = "0x" + expr->value.substr(2, 2); - z = "0x" + expr->value.substr(4, 2); - } - - data.push_back(utils::string::hex_to_dec(x.data())); - data.push_back(utils::string::hex_to_dec(y.data())); - data.push_back(utils::string::hex_to_dec(z.data())); - emit_opcode(opcode::OP_GetVector, data); -} - void compiler::emit_expr_float(const ast::expr_float::ptr& expr) { emit_opcode(opcode::OP_GetFloat, expr->value); @@ -2109,6 +2091,9 @@ void compiler::process_stmt(const ast::stmt& stmt, const block::ptr& blk) case ast::kind::stmt_list: process_stmt_list(stmt.as_list, blk); break; + case ast::kind::stmt_dev: + process_stmt_dev(stmt.as_dev, blk); + break; case ast::kind::stmt_expr: process_stmt_expr(stmt.as_expr, blk); break; @@ -2174,6 +2159,11 @@ void compiler::process_stmt_list(const ast::stmt_list::ptr& stmt, const block::p } } +void compiler::process_stmt_dev(const ast::stmt_dev::ptr& stmt, const block::ptr& blk) +{ + process_stmt_list(stmt->list, blk); +} + void compiler::process_stmt_expr(const ast::stmt_expr::ptr& stmt, const block::ptr& blk) { switch (stmt->expr.kind()) diff --git a/src/s2/xsk/compiler.hpp b/src/s2/xsk/compiler.hpp index 1ea0e99e..067ec3ae 100644 --- a/src/s2/xsk/compiler.hpp +++ b/src/s2/xsk/compiler.hpp @@ -48,6 +48,7 @@ private: void emit_decl_thread(const ast::decl_thread::ptr& thread); void emit_stmt(const ast::stmt& stmt, const block::ptr& blk, bool last); void emit_stmt_list(const ast::stmt_list::ptr& stmt, const block::ptr& blk, bool last); + void emit_stmt_dev(const ast::stmt_dev::ptr& stmt, const block::ptr& blk, bool last); void emit_stmt_expr(const ast::stmt_expr::ptr& stmt, const block::ptr& blk); void emit_stmt_call(const ast::stmt_call::ptr& stmt, const block::ptr& blk); void emit_stmt_assign(const ast::stmt_assign::ptr& stmt, const block::ptr& blk); @@ -110,7 +111,6 @@ private: void emit_expr_animtree(const ast::expr_animtree::ptr& expr); void emit_expr_istring(const ast::expr_istring::ptr& expr); void emit_expr_string(const ast::expr_string::ptr& expr); - void emit_expr_color(const ast::expr_color::ptr& expr); void emit_expr_float(const ast::expr_float::ptr& expr); void emit_expr_integer(const ast::expr_integer::ptr& expr); void emit_expr_false(const ast::expr_false::ptr& expr); @@ -123,6 +123,7 @@ private: void process_thread(const ast::decl_thread::ptr& decl, const block::ptr& blk); void process_stmt(const ast::stmt& stmt, const block::ptr& blk); void process_stmt_list(const ast::stmt_list::ptr& stmt, const block::ptr& blk); + void process_stmt_dev(const ast::stmt_dev::ptr& stmt, const block::ptr& blk); void process_stmt_expr(const ast::stmt_expr::ptr& stmt, const block::ptr& blk); void process_stmt_assign(const ast::stmt_assign::ptr& stmt, const block::ptr& blk); void process_stmt_waittill(const ast::stmt_waittill::ptr& stmt, const block::ptr& blk); diff --git a/src/s2/xsk/decompiler.cpp b/src/s2/xsk/decompiler.cpp index e2b9b120..85d4dc62 100644 --- a/src/s2/xsk/decompiler.cpp +++ b/src/s2/xsk/decompiler.cpp @@ -75,7 +75,7 @@ void decompiler::decompile_function(const function::ptr& func) // hotfix empty else block at func end if (stmt->list.size() > 0 && stmt->list.back() == ast::kind::asm_jump) { - if(stmt->list.back().as_jump->value == blk.loc_end) + if (stmt->list.back().as_jump->value == blk.loc_end) stmt->list.pop_back(); } @@ -255,7 +255,7 @@ void decompiler::decompile_instruction(const instruction::ptr& inst) auto name = std::make_unique(loc, inst->data[1]); auto node = std::make_unique(loc, std::move(path), std::move(name)); stack_.push(std::move(node)); - }; + } break; case opcode::OP_CreateLocalVariable: { @@ -1657,7 +1657,7 @@ void decompiler::decompile_instruction(const instruction::ptr& inst) { auto expr = std::make_unique(loc, inst->data[0]); func_->stmt->list.push_back(ast::stmt(std::move(expr))); - if(stack_.size() != 0) tern_labels_.push_back(inst->data[0]); + if (stack_.size() != 0) tern_labels_.push_back(inst->data[0]); } break; case opcode::OP_jumpback: @@ -1863,7 +1863,7 @@ void decompiler::decompile_ifelses(const ast::stmt_list::ptr& stmt) { auto& entry = stmt->list.at(i); - if(entry == ast::kind::asm_jump_cond) + if (entry == ast::kind::asm_jump_cond) { auto j = (entry.as_cond->value == blocks_.back().loc_end) ? (stmt->list.size() - 1) : (find_location_index(stmt, entry.as_cond->value) - 1); auto last_loc = blocks_.back().loc_end; @@ -2142,7 +2142,7 @@ void decompiler::decompile_loop(const ast::stmt_list::ptr& block, std::uint32_t { auto ref = block->list.at(start).loc().label(); - if(!find_location_reference(block, 0, start, ref)) + if (!find_location_reference(block, 0, start, ref)) { decompile_foreach(block, start, end); return; @@ -2151,29 +2151,29 @@ void decompiler::decompile_loop(const ast::stmt_list::ptr& block, std::uint32_t } } - if(start > 0) // while at func start + if (start > 0) // while at func start { auto index = 1; - while(block->list.at(start - index) == ast::kind::asm_create) + while (block->list.at(start - index) == ast::kind::asm_create) { - if(start - index > 0) + if (start - index > 0) index++; else break; } - if(block->list.at(start - index) == ast::kind::stmt_assign) + if (block->list.at(start - index) == ast::kind::stmt_assign) { auto ref = block->list.at(end).loc().label(); auto ref2 = block->list.at(start).loc().label(); - if(find_location_reference(block, start, end, ref)) + if (find_location_reference(block, start, end, ref)) { // continue is at jumpback, not post-expr decompile_while(block, start, end); return; } - else if(find_location_reference(block, 0, start, ref2)) + else if (find_location_reference(block, 0, start, ref2)) { // begin is at condition, not pre-expr decompile_while(block, start, end); @@ -2413,7 +2413,7 @@ void decompiler::decompile_switch(const ast::stmt_list::ptr& stmt, std::uint32_t auto list = std::make_unique(loc); list->is_case = true; auto def_stmt = ast::stmt(std::make_unique(loc_pos, std::move(list))); - while(stmt->list.at(loc_idx) == ast::kind::stmt_case) + while (stmt->list.at(loc_idx) == ast::kind::stmt_case) loc_idx++; stmt->list.insert(stmt->list.begin() + loc_idx, std::move(def_stmt)); idx += 2; @@ -2514,7 +2514,7 @@ auto decompiler::find_location_index(const ast::stmt_list::ptr& stmt, const std: for (auto& entry : stmt->list) { - if(entry.loc().label() == location) + if (entry.loc().label() == location) return index; index++; @@ -2780,7 +2780,7 @@ void decompiler::process_stmt_ifelse(const ast::stmt_ifelse::ptr& stmt, const bl { abort = stmt->blk_if->abort; - if(abort == abort_t::abort_none) + if (abort == abort_t::abort_none) childs.push_back(stmt->blk_if.get()); } diff --git a/src/s2/xsk/lexer.cpp b/src/s2/xsk/lexer.cpp index 54e51d8d..bc296ffa 100644 --- a/src/s2/xsk/lexer.cpp +++ b/src/s2/xsk/lexer.cpp @@ -73,12 +73,12 @@ buffer::buffer() : length(0) buffer::~buffer() { - if(data) std::free(data); + if (data) std::free(data); } bool buffer::push(char c) { - if(length >= max_buf_size) + if (length >= max_buf_size) return false; data[length++] = c; @@ -90,7 +90,7 @@ reader::reader() : state(reader::end), buffer_pos(0), bytes_remaining(0), void reader::init(const char* data, size_t size) { - if(data && size) + if (data && size) { state = reader::ok; buffer_pos = data; @@ -112,7 +112,7 @@ void reader::advance() { ++buffer_pos; - if(bytes_remaining-- == 1) + if (bytes_remaining-- == 1) { state = reader::end; bytes_remaining = 0; @@ -562,7 +562,7 @@ lex_name: advance(); } - if(state_ == state::field) + if (state_ == state::field) { if (path) throw comp_error(loc_, "invalid field token '\\'"); diff --git a/src/s2/xsk/resolver.cpp b/src/s2/xsk/resolver.cpp index de176e36..6a962b24 100644 --- a/src/s2/xsk/resolver.cpp +++ b/src/s2/xsk/resolver.cpp @@ -46,7 +46,7 @@ auto resolver::opcode_name(std::uint8_t id) -> std::string auto resolver::function_id(const std::string& name) -> std::uint16_t { - if(name.starts_with("_func_")) + if (name.starts_with("_func_")) { return std::stoul(name.substr(6), nullptr, 16); } @@ -75,7 +75,7 @@ auto resolver::function_name(std::uint16_t id) -> std::string auto resolver::method_id(const std::string& name) -> std::uint16_t { - if(name.starts_with("_meth_")) + if (name.starts_with("_meth_")) { return std::stoul(name.substr(6), nullptr, 16); } @@ -104,7 +104,7 @@ auto resolver::method_name(std::uint16_t id) -> std::string auto resolver::file_id(const std::string& name) -> std::uint16_t { - if(name.starts_with("_id_")) + if (name.starts_with("_id_")) { return std::stoul(name.substr(4), nullptr, 16); } @@ -133,7 +133,7 @@ auto resolver::file_name(std::uint16_t id) -> std::string auto resolver::token_id(const std::string& name) -> std::uint16_t { - if(name.starts_with("_id_")) + if (name.starts_with("_id_")) { return std::stoul(name.substr(4), nullptr, 16); } @@ -162,7 +162,7 @@ auto resolver::token_name(std::uint16_t id) -> std::string auto resolver::find_function(const std::string& name) -> bool { - if(name.starts_with("_func_")) return true; + if (name.starts_with("_func_")) return true; const auto itr = function_map_rev.find(name); @@ -176,7 +176,7 @@ auto resolver::find_function(const std::string& name) -> bool auto resolver::find_method(const std::string& name) -> bool { - if(name.starts_with("_meth_")) return true; + if (name.starts_with("_meth_")) return true; const auto itr = method_map_rev.find(name); @@ -190,7 +190,7 @@ auto resolver::find_method(const std::string& name) -> bool auto resolver::make_token(std::string_view str) -> std::string { - if(str.starts_with("_id_") || str.starts_with("_func_") || str.starts_with("_meth_")) + if (str.starts_with("_id_") || str.starts_with("_func_") || str.starts_with("_meth_")) { return std::string(str); } @@ -213,7 +213,7 @@ auto resolver::file_data(const std::string& name) -> std::tuplefirst ,reinterpret_cast(itr->second.data()), itr->second.size() }; } @@ -222,7 +222,7 @@ auto resolver::file_data(const std::string& name) -> std::tuplefirst, reinterpret_cast(res.first->second.data()), res.first->second.size() }; } @@ -3121,7 +3121,7 @@ struct __init__ __init__() { static bool init = false; - if(init) return; + if (init) return; init = true; opcode_map.reserve(opcode_list.size()); @@ -3135,31 +3135,31 @@ struct __init__ token_map.reserve(token_list.size()); token_map_rev.reserve(token_list.size()); - for(const auto& entry : opcode_list) + for (const auto& entry : opcode_list) { opcode_map.insert({ entry.first, entry.second }); opcode_map_rev.insert({ entry.second, entry.first }); } - for(const auto& entry : function_list) + for (const auto& entry : function_list) { function_map.insert({ entry.first, entry.second }); function_map_rev.insert({ entry.second, entry.first }); } - for(const auto& entry : method_list) + for (const auto& entry : method_list) { method_map.insert({ entry.first, entry.second }); method_map_rev.insert({ entry.second, entry.first }); } - for(const auto& entry : file_list) + for (const auto& entry : file_list) { file_map.insert({ entry.first, entry.second }); file_map_rev.insert({ entry.second, entry.first }); } - for(const auto& entry : token_list) + for (const auto& entry : token_list) { token_map.insert({ entry.first, entry.second }); token_map_rev.insert({ entry.second, entry.first }); diff --git a/src/s4/xsk/assembler.cpp b/src/s4/xsk/assembler.cpp index 4412a785..eb166cfc 100644 --- a/src/s4/xsk/assembler.cpp +++ b/src/s4/xsk/assembler.cpp @@ -639,4 +639,4 @@ auto assembler::resolve_label(const std::string& name) -> std::int32_t throw asm_error("Couldn't resolve label address of '" + name + "'!"); } -} // namespace xsk::gsc::s4 +} // namespace xsk::gsc::s4 diff --git a/src/s4/xsk/compiler.cpp b/src/s4/xsk/compiler.cpp index 7026f1db..8404afa5 100644 --- a/src/s4/xsk/compiler.cpp +++ b/src/s4/xsk/compiler.cpp @@ -152,7 +152,7 @@ void compiler::emit_declaration(const ast::decl& decl) void compiler::emit_decl_usingtree(const ast::decl_usingtree::ptr& animtree) { - if(developer_thread_) + if (developer_thread_) throw comp_error(animtree->loc(), "cannot put #using_animtree inside /# ... #/ comment"); animtrees_.push_back({ animtree->name->value, false }); @@ -195,6 +195,9 @@ void compiler::emit_stmt(const ast::stmt& stmt, const block::ptr& blk, bool last case ast::kind::stmt_list: emit_stmt_list(stmt.as_list, blk, last); break; + case ast::kind::stmt_dev: + emit_stmt_dev(stmt.as_dev, blk, last); + break; case ast::kind::stmt_expr: emit_stmt_expr(stmt.as_expr, blk); break; @@ -284,6 +287,11 @@ void compiler::emit_stmt_list(const ast::stmt_list::ptr& stmt, const block::ptr& } } +void compiler::emit_stmt_dev(const ast::stmt_dev::ptr& stmt, const block::ptr& blk, bool last) +{ + emit_stmt_list(stmt->list, blk, last); +} + void compiler::emit_stmt_expr(const ast::stmt_expr::ptr& stmt, const block::ptr& blk) { switch (stmt->expr.kind()) @@ -580,6 +588,8 @@ void compiler::emit_stmt_dowhile(const ast::stmt_dowhile::ptr& stmt, const block emit_stmt(stmt->stmt, stmt->blk, false); + insert_label(continue_loc); + bool const_cond = is_constant_condition(stmt->test); if (!const_cond) @@ -588,7 +598,6 @@ void compiler::emit_stmt_dowhile(const ast::stmt_dowhile::ptr& stmt, const block emit_opcode(opcode::OP_JumpOnFalse, break_loc); } - insert_label(continue_loc); emit_opcode(opcode::OP_jumpback, begin_loc); insert_label(break_loc); @@ -712,7 +721,7 @@ void compiler::emit_stmt_foreach(const ast::stmt_foreach::ptr& stmt, const block auto begin_loc = insert_label(); emit_expr_variable(stmt->key_expr, blk); - emit_opcode(opcode::OP_CallBuiltin1, "isdefined"); + emit_opcode(opcode::OP_IsDefined); emit_opcode(opcode::OP_JumpOnFalse, break_loc); can_break_ = true; @@ -1015,9 +1024,6 @@ void compiler::emit_expr(const ast::expr& expr, const block::ptr& blk) case ast::kind::expr_string: emit_expr_string(expr.as_string); break; - case ast::kind::expr_color: - emit_expr_color(expr.as_color); - break; case ast::kind::expr_vector: emit_expr_vector(expr.as_vector, blk); break; @@ -2012,30 +2018,6 @@ void compiler::emit_expr_string(const ast::expr_string::ptr& expr) emit_opcode(opcode::OP_GetString, expr->value); } -void compiler::emit_expr_color(const ast::expr_color::ptr& expr) -{ - std::vector data; - std::string x, y, z; - - if (expr->value.size() == 3) - { - x = "0x" + expr->value.substr(0, 1) + expr->value.substr(0, 1); - y = "0x" + expr->value.substr(1, 1) + expr->value.substr(1, 1); - z = "0x" + expr->value.substr(2, 1) + expr->value.substr(2, 1); - } - else - { - x = "0x" + expr->value.substr(0, 2); - y = "0x" + expr->value.substr(2, 2); - z = "0x" + expr->value.substr(4, 2); - } - - data.push_back(utils::string::hex_to_dec(x.data())); - data.push_back(utils::string::hex_to_dec(y.data())); - data.push_back(utils::string::hex_to_dec(z.data())); - emit_opcode(opcode::OP_GetVector, data); -} - void compiler::emit_expr_float(const ast::expr_float::ptr& expr) { emit_opcode(opcode::OP_GetFloat, expr->value); @@ -2160,6 +2142,9 @@ void compiler::process_stmt(const ast::stmt& stmt, const block::ptr& blk) case ast::kind::stmt_list: process_stmt_list(stmt.as_list, blk); break; + case ast::kind::stmt_dev: + process_stmt_dev(stmt.as_dev, blk); + break; case ast::kind::stmt_expr: process_stmt_expr(stmt.as_expr, blk); break; @@ -2225,6 +2210,11 @@ void compiler::process_stmt_list(const ast::stmt_list::ptr& stmt, const block::p } } +void compiler::process_stmt_dev(const ast::stmt_dev::ptr& stmt, const block::ptr& blk) +{ + process_stmt_list(stmt->list, blk); +} + void compiler::process_stmt_expr(const ast::stmt_expr::ptr& stmt, const block::ptr& blk) { switch (stmt->expr.kind()) diff --git a/src/s4/xsk/compiler.hpp b/src/s4/xsk/compiler.hpp index ef87c570..fb4229cb 100644 --- a/src/s4/xsk/compiler.hpp +++ b/src/s4/xsk/compiler.hpp @@ -48,6 +48,7 @@ private: void emit_decl_thread(const ast::decl_thread::ptr& thread); void emit_stmt(const ast::stmt& stmt, const block::ptr& blk, bool last); void emit_stmt_list(const ast::stmt_list::ptr& stmt, const block::ptr& blk, bool last); + void emit_stmt_dev(const ast::stmt_dev::ptr& stmt, const block::ptr& blk, bool last); void emit_stmt_expr(const ast::stmt_expr::ptr& stmt, const block::ptr& blk); void emit_stmt_call(const ast::stmt_call::ptr& stmt, const block::ptr& blk); void emit_stmt_assign(const ast::stmt_assign::ptr& stmt, const block::ptr& blk); @@ -112,7 +113,6 @@ private: void emit_expr_animtree(const ast::expr_animtree::ptr& expr); void emit_expr_istring(const ast::expr_istring::ptr& expr); void emit_expr_string(const ast::expr_string::ptr& expr); - void emit_expr_color(const ast::expr_color::ptr& expr); void emit_expr_float(const ast::expr_float::ptr& expr); void emit_expr_integer(const ast::expr_integer::ptr& expr); void emit_expr_false(const ast::expr_false::ptr& expr); @@ -125,6 +125,7 @@ private: void process_thread(const ast::decl_thread::ptr& decl, const block::ptr& blk); void process_stmt(const ast::stmt& stmt, const block::ptr& blk); void process_stmt_list(const ast::stmt_list::ptr& stmt, const block::ptr& blk); + void process_stmt_dev(const ast::stmt_dev::ptr& stmt, const block::ptr& blk); void process_stmt_expr(const ast::stmt_expr::ptr& stmt, const block::ptr& blk); void process_stmt_assign(const ast::stmt_assign::ptr& stmt, const block::ptr& blk); void process_stmt_waittill(const ast::stmt_waittill::ptr& stmt, const block::ptr& blk); diff --git a/src/s4/xsk/decompiler.cpp b/src/s4/xsk/decompiler.cpp index fbda5da8..58df5660 100644 --- a/src/s4/xsk/decompiler.cpp +++ b/src/s4/xsk/decompiler.cpp @@ -75,7 +75,7 @@ void decompiler::decompile_function(const function::ptr& func) // hotfix empty else block at func end if (stmt->list.size() > 0 && stmt->list.back() == ast::kind::asm_jump) { - if(stmt->list.back().as_jump->value == blk.loc_end) + if (stmt->list.back().as_jump->value == blk.loc_end) stmt->list.pop_back(); } @@ -255,7 +255,7 @@ void decompiler::decompile_instruction(const instruction::ptr& inst) auto name = std::make_unique(loc, inst->data[1]); auto node = std::make_unique(loc, std::move(path), std::move(name)); stack_.push(std::move(node)); - }; + } break; case opcode::OP_CreateLocalVariable: { @@ -1657,7 +1657,7 @@ void decompiler::decompile_instruction(const instruction::ptr& inst) { auto expr = std::make_unique(loc, inst->data[0]); func_->stmt->list.push_back(ast::stmt(std::move(expr))); - if(stack_.size() != 0) tern_labels_.push_back(inst->data[0]); + if (stack_.size() != 0) tern_labels_.push_back(inst->data[0]); } break; case opcode::OP_jumpback: @@ -1887,7 +1887,7 @@ void decompiler::decompile_ifelses(const ast::stmt_list::ptr& stmt) { auto& entry = stmt->list.at(i); - if(entry == ast::kind::asm_jump_cond) + if (entry == ast::kind::asm_jump_cond) { auto j = (entry.as_cond->value == blocks_.back().loc_end) ? (stmt->list.size() - 1) : (find_location_index(stmt, entry.as_cond->value) - 1); auto last_loc = blocks_.back().loc_end; @@ -2166,7 +2166,7 @@ void decompiler::decompile_loop(const ast::stmt_list::ptr& block, std::uint32_t { auto ref = block->list.at(start).loc().label(); - if(!find_location_reference(block, 0, start, ref)) + if (!find_location_reference(block, 0, start, ref)) { decompile_foreach(block, start, end); return; @@ -2175,29 +2175,29 @@ void decompiler::decompile_loop(const ast::stmt_list::ptr& block, std::uint32_t } } - if(start > 0) // while at func start + if (start > 0) // while at func start { auto index = 1; - while(block->list.at(start - index) == ast::kind::asm_create) + while (block->list.at(start - index) == ast::kind::asm_create) { - if(start - index > 0) + if (start - index > 0) index++; else break; } - if(block->list.at(start - index) == ast::kind::stmt_assign) + if (block->list.at(start - index) == ast::kind::stmt_assign) { auto ref = block->list.at(end).loc().label(); auto ref2 = block->list.at(start).loc().label(); - if(find_location_reference(block, start, end, ref)) + if (find_location_reference(block, start, end, ref)) { // continue is at jumpback, not post-expr decompile_while(block, start, end); return; } - else if(find_location_reference(block, 0, start, ref2)) + else if (find_location_reference(block, 0, start, ref2)) { // begin is at condition, not pre-expr decompile_while(block, start, end); @@ -2437,7 +2437,7 @@ void decompiler::decompile_switch(const ast::stmt_list::ptr& stmt, std::uint32_t auto list = std::make_unique(loc); list->is_case = true; auto def_stmt = ast::stmt(std::make_unique(loc_pos, std::move(list))); - while(stmt->list.at(loc_idx) == ast::kind::stmt_case) + while (stmt->list.at(loc_idx) == ast::kind::stmt_case) loc_idx++; stmt->list.insert(stmt->list.begin() + loc_idx, std::move(def_stmt)); idx += 2; @@ -2538,7 +2538,7 @@ auto decompiler::find_location_index(const ast::stmt_list::ptr& stmt, const std: for (auto& entry : stmt->list) { - if(entry.loc().label() == location) + if (entry.loc().label() == location) return index; index++; @@ -2804,7 +2804,7 @@ void decompiler::process_stmt_ifelse(const ast::stmt_ifelse::ptr& stmt, const bl { abort = stmt->blk_if->abort; - if(abort == abort_t::abort_none) + if (abort == abort_t::abort_none) childs.push_back(stmt->blk_if.get()); } diff --git a/src/s4/xsk/lexer.cpp b/src/s4/xsk/lexer.cpp index 45baf843..50613287 100644 --- a/src/s4/xsk/lexer.cpp +++ b/src/s4/xsk/lexer.cpp @@ -75,12 +75,12 @@ buffer::buffer() : length(0) buffer::~buffer() { - if(data) std::free(data); + if (data) std::free(data); } bool buffer::push(char c) { - if(length >= max_buf_size) + if (length >= max_buf_size) return false; data[length++] = c; @@ -92,7 +92,7 @@ reader::reader() : state(reader::end), buffer_pos(0), bytes_remaining(0), void reader::init(const char* data, size_t size) { - if(data && size) + if (data && size) { state = reader::ok; buffer_pos = data; @@ -114,7 +114,7 @@ void reader::advance() { ++buffer_pos; - if(bytes_remaining-- == 1) + if (bytes_remaining-- == 1) { state = reader::end; bytes_remaining = 0; @@ -216,7 +216,7 @@ auto lexer::lex() -> parser::symbol_type case '\\': throw comp_error(loc_, "invalid token ('\\')"); case '/': - if (curr != '/' && curr != '*' && curr != '#' && curr != '=') + if (curr != '=' && curr != '#' && curr != '*' && curr != '/') return parser::make_DIV(loc_); advance(); @@ -564,7 +564,7 @@ lex_name: advance(); } - if(state_ == state::field) + if (state_ == state::field) { if (path) throw comp_error(loc_, "invalid field token '\\'"); diff --git a/src/s4/xsk/parser.cpp b/src/s4/xsk/parser.cpp index 1308fef5..18d6e6ed 100644 --- a/src/s4/xsk/parser.cpp +++ b/src/s4/xsk/parser.cpp @@ -390,6 +390,7 @@ namespace xsk { namespace gsc { namespace s4 { break; case symbol_kind::S_stmt: // stmt + case symbol_kind::S_stmt_or_dev: // stmt_or_dev value.YY_MOVE_OR_COPY< ast::stmt > (YY_MOVE (that.value)); break; @@ -421,6 +422,10 @@ namespace xsk { namespace gsc { namespace s4 { value.YY_MOVE_OR_COPY< ast::stmt_default::ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_stmt_dev: // stmt_dev + value.YY_MOVE_OR_COPY< ast::stmt_dev::ptr > (YY_MOVE (that.value)); + break; + case symbol_kind::S_stmt_dowhile: // stmt_dowhile value.YY_MOVE_OR_COPY< ast::stmt_dowhile::ptr > (YY_MOVE (that.value)); break; @@ -449,9 +454,9 @@ namespace xsk { namespace gsc { namespace s4 { value.YY_MOVE_OR_COPY< ast::stmt_ifelse::ptr > (YY_MOVE (that.value)); break; - case symbol_kind::S_stmt_dev: // stmt_dev - case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list + case symbol_kind::S_stmt_or_dev_list: // stmt_or_dev_list + case symbol_kind::S_stmt_block: // stmt_block value.YY_MOVE_OR_COPY< ast::stmt_list::ptr > (YY_MOVE (that.value)); break; @@ -700,6 +705,7 @@ namespace xsk { namespace gsc { namespace s4 { break; case symbol_kind::S_stmt: // stmt + case symbol_kind::S_stmt_or_dev: // stmt_or_dev value.move< ast::stmt > (YY_MOVE (that.value)); break; @@ -731,6 +737,10 @@ namespace xsk { namespace gsc { namespace s4 { value.move< ast::stmt_default::ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_stmt_dev: // stmt_dev + value.move< ast::stmt_dev::ptr > (YY_MOVE (that.value)); + break; + case symbol_kind::S_stmt_dowhile: // stmt_dowhile value.move< ast::stmt_dowhile::ptr > (YY_MOVE (that.value)); break; @@ -759,9 +769,9 @@ namespace xsk { namespace gsc { namespace s4 { value.move< ast::stmt_ifelse::ptr > (YY_MOVE (that.value)); break; - case symbol_kind::S_stmt_dev: // stmt_dev - case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list + case symbol_kind::S_stmt_or_dev_list: // stmt_or_dev_list + case symbol_kind::S_stmt_block: // stmt_block value.move< ast::stmt_list::ptr > (YY_MOVE (that.value)); break; @@ -1010,6 +1020,7 @@ namespace xsk { namespace gsc { namespace s4 { break; case symbol_kind::S_stmt: // stmt + case symbol_kind::S_stmt_or_dev: // stmt_or_dev value.copy< ast::stmt > (that.value); break; @@ -1041,6 +1052,10 @@ namespace xsk { namespace gsc { namespace s4 { value.copy< ast::stmt_default::ptr > (that.value); break; + case symbol_kind::S_stmt_dev: // stmt_dev + value.copy< ast::stmt_dev::ptr > (that.value); + break; + case symbol_kind::S_stmt_dowhile: // stmt_dowhile value.copy< ast::stmt_dowhile::ptr > (that.value); break; @@ -1069,9 +1084,9 @@ namespace xsk { namespace gsc { namespace s4 { value.copy< ast::stmt_ifelse::ptr > (that.value); break; - case symbol_kind::S_stmt_dev: // stmt_dev - case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list + case symbol_kind::S_stmt_or_dev_list: // stmt_or_dev_list + case symbol_kind::S_stmt_block: // stmt_block value.copy< ast::stmt_list::ptr > (that.value); break; @@ -1319,6 +1334,7 @@ namespace xsk { namespace gsc { namespace s4 { break; case symbol_kind::S_stmt: // stmt + case symbol_kind::S_stmt_or_dev: // stmt_or_dev value.move< ast::stmt > (that.value); break; @@ -1350,6 +1366,10 @@ namespace xsk { namespace gsc { namespace s4 { value.move< ast::stmt_default::ptr > (that.value); break; + case symbol_kind::S_stmt_dev: // stmt_dev + value.move< ast::stmt_dev::ptr > (that.value); + break; + case symbol_kind::S_stmt_dowhile: // stmt_dowhile value.move< ast::stmt_dowhile::ptr > (that.value); break; @@ -1378,9 +1398,9 @@ namespace xsk { namespace gsc { namespace s4 { value.move< ast::stmt_ifelse::ptr > (that.value); break; - case symbol_kind::S_stmt_dev: // stmt_dev - case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list + case symbol_kind::S_stmt_or_dev_list: // stmt_or_dev_list + case symbol_kind::S_stmt_block: // stmt_block value.move< ast::stmt_list::ptr > (that.value); break; @@ -1883,6 +1903,7 @@ namespace xsk { namespace gsc { namespace s4 { break; case symbol_kind::S_stmt: // stmt + case symbol_kind::S_stmt_or_dev: // stmt_or_dev yylhs.value.emplace< ast::stmt > (); break; @@ -1914,6 +1935,10 @@ namespace xsk { namespace gsc { namespace s4 { yylhs.value.emplace< ast::stmt_default::ptr > (); break; + case symbol_kind::S_stmt_dev: // stmt_dev + yylhs.value.emplace< ast::stmt_dev::ptr > (); + break; + case symbol_kind::S_stmt_dowhile: // stmt_dowhile yylhs.value.emplace< ast::stmt_dowhile::ptr > (); break; @@ -1942,9 +1967,9 @@ namespace xsk { namespace gsc { namespace s4 { yylhs.value.emplace< ast::stmt_ifelse::ptr > (); break; - case symbol_kind::S_stmt_dev: // stmt_dev - case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list + case symbol_kind::S_stmt_or_dev_list: // stmt_or_dev_list + case symbol_kind::S_stmt_block: // stmt_block yylhs.value.emplace< ast::stmt_list::ptr > (); break; @@ -2024,1333 +2049,1351 @@ namespace xsk { namespace gsc { namespace s4 { switch (yyn) { case 2: // root: program -#line 258 "parser.ypp" +#line 260 "parser.ypp" { ast = std::move(yystack_[0].value.as < ast::program::ptr > ()); } -#line 2030 "parser.cpp" +#line 2055 "parser.cpp" break; case 3: // root: %empty -#line 259 "parser.ypp" +#line 261 "parser.ypp" { ast = std::make_unique(yylhs.location); } -#line 2036 "parser.cpp" +#line 2061 "parser.cpp" break; case 4: // program: program inline -#line 264 "parser.ypp" +#line 266 "parser.ypp" { yylhs.value.as < ast::program::ptr > () = std::move(yystack_[1].value.as < ast::program::ptr > ()); } -#line 2042 "parser.cpp" +#line 2067 "parser.cpp" break; case 5: // program: program include -#line 266 "parser.ypp" +#line 268 "parser.ypp" { yylhs.value.as < ast::program::ptr > () = std::move(yystack_[1].value.as < ast::program::ptr > ()); yylhs.value.as < ast::program::ptr > ()->includes.push_back(std::move(yystack_[0].value.as < ast::include::ptr > ())); } -#line 2048 "parser.cpp" +#line 2073 "parser.cpp" break; case 6: // program: program declaration -#line 268 "parser.ypp" +#line 270 "parser.ypp" { yylhs.value.as < ast::program::ptr > () = std::move(yystack_[1].value.as < ast::program::ptr > ()); yylhs.value.as < ast::program::ptr > ()->declarations.push_back(std::move(yystack_[0].value.as < ast::decl > ())); } -#line 2054 "parser.cpp" +#line 2079 "parser.cpp" break; case 7: // program: inline -#line 270 "parser.ypp" +#line 272 "parser.ypp" { yylhs.value.as < ast::program::ptr > () = std::make_unique(yylhs.location); } -#line 2060 "parser.cpp" +#line 2085 "parser.cpp" break; case 8: // program: include -#line 272 "parser.ypp" +#line 274 "parser.ypp" { yylhs.value.as < ast::program::ptr > () = std::make_unique(yylhs.location); yylhs.value.as < ast::program::ptr > ()->includes.push_back(std::move(yystack_[0].value.as < ast::include::ptr > ())); } -#line 2066 "parser.cpp" +#line 2091 "parser.cpp" break; case 9: // program: declaration -#line 274 "parser.ypp" +#line 276 "parser.ypp" { yylhs.value.as < ast::program::ptr > () = std::make_unique(yylhs.location); yylhs.value.as < ast::program::ptr > ()->declarations.push_back(std::move(yystack_[0].value.as < ast::decl > ())); } -#line 2072 "parser.cpp" +#line 2097 "parser.cpp" break; case 10: // inline: "#inline" expr_path ";" -#line 278 "parser.ypp" +#line 280 "parser.ypp" { lexer.push_header(yystack_[1].value.as < ast::expr_path::ptr > ()->value); } -#line 2078 "parser.cpp" +#line 2103 "parser.cpp" break; case 11: // include: "#include" expr_path ";" -#line 283 "parser.ypp" +#line 285 "parser.ypp" { yylhs.value.as < ast::include::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr_path::ptr > ())); } -#line 2084 "parser.cpp" +#line 2109 "parser.cpp" break; case 12: // declaration: "/#" -#line 287 "parser.ypp" +#line 289 "parser.ypp" { yylhs.value.as < ast::decl > ().as_dev_begin = std::make_unique(yylhs.location); } -#line 2090 "parser.cpp" +#line 2115 "parser.cpp" break; case 13: // declaration: "#/" -#line 288 "parser.ypp" +#line 290 "parser.ypp" { yylhs.value.as < ast::decl > ().as_dev_end = std::make_unique(yylhs.location); } -#line 2096 "parser.cpp" +#line 2121 "parser.cpp" break; case 14: // declaration: decl_usingtree -#line 289 "parser.ypp" +#line 291 "parser.ypp" { yylhs.value.as < ast::decl > ().as_usingtree = std::move(yystack_[0].value.as < ast::decl_usingtree::ptr > ()); } -#line 2102 "parser.cpp" +#line 2127 "parser.cpp" break; case 15: // declaration: decl_constant -#line 290 "parser.ypp" +#line 292 "parser.ypp" { yylhs.value.as < ast::decl > ().as_constant = std::move(yystack_[0].value.as < ast::decl_constant::ptr > ()); } -#line 2108 "parser.cpp" +#line 2133 "parser.cpp" break; case 16: // declaration: decl_thread -#line 291 "parser.ypp" +#line 293 "parser.ypp" { yylhs.value.as < ast::decl > ().as_thread = std::move(yystack_[0].value.as < ast::decl_thread::ptr > ()); } -#line 2114 "parser.cpp" +#line 2139 "parser.cpp" break; case 17: // decl_usingtree: "#using_animtree" "(" expr_string ")" ";" -#line 296 "parser.ypp" +#line 298 "parser.ypp" { lexer.ban_header(yylhs.location); yylhs.value.as < ast::decl_usingtree::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr_string::ptr > ())); } -#line 2120 "parser.cpp" +#line 2145 "parser.cpp" break; case 18: // decl_constant: expr_identifier "=" expr ";" -#line 301 "parser.ypp" +#line 303 "parser.ypp" { yylhs.value.as < ast::decl_constant::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr > ())); } -#line 2126 "parser.cpp" +#line 2151 "parser.cpp" break; case 19: // decl_thread: expr_identifier "(" expr_parameters ")" stmt_block -#line 306 "parser.ypp" +#line 308 "parser.ypp" { lexer.ban_header(yylhs.location); yylhs.value.as < ast::decl_thread::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[2].value.as < ast::expr_parameters::ptr > ()), std::move(yystack_[0].value.as < ast::stmt_list::ptr > ())); } -#line 2132 "parser.cpp" +#line 2157 "parser.cpp" break; - case 20: // stmt: stmt_dev -#line 310 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_list = std::move(yystack_[0].value.as < ast::stmt_list::ptr > ()); } -#line 2138 "parser.cpp" - break; - - case 21: // stmt: stmt_block -#line 311 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_list = std::move(yystack_[0].value.as < ast::stmt_list::ptr > ()); } -#line 2144 "parser.cpp" - break; - - case 22: // stmt: stmt_call + case 20: // stmt: stmt_block #line 312 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_call = std::move(yystack_[0].value.as < ast::stmt_call::ptr > ()); } -#line 2150 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_list = std::move(yystack_[0].value.as < ast::stmt_list::ptr > ()); } +#line 2163 "parser.cpp" break; - case 23: // stmt: stmt_assign + case 21: // stmt: stmt_call #line 313 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_assign = std::move(yystack_[0].value.as < ast::stmt_assign::ptr > ()); } -#line 2156 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_call = std::move(yystack_[0].value.as < ast::stmt_call::ptr > ()); } +#line 2169 "parser.cpp" break; - case 24: // stmt: stmt_endon + case 22: // stmt: stmt_assign #line 314 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_endon = std::move(yystack_[0].value.as < ast::stmt_endon::ptr > ()); } -#line 2162 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_assign = std::move(yystack_[0].value.as < ast::stmt_assign::ptr > ()); } +#line 2175 "parser.cpp" break; - case 25: // stmt: stmt_notify + case 23: // stmt: stmt_endon #line 315 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_notify = std::move(yystack_[0].value.as < ast::stmt_notify::ptr > ()); } -#line 2168 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_endon = std::move(yystack_[0].value.as < ast::stmt_endon::ptr > ()); } +#line 2181 "parser.cpp" break; - case 26: // stmt: stmt_wait + case 24: // stmt: stmt_notify #line 316 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_wait = std::move(yystack_[0].value.as < ast::stmt_wait::ptr > ()); } -#line 2174 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_notify = std::move(yystack_[0].value.as < ast::stmt_notify::ptr > ()); } +#line 2187 "parser.cpp" break; - case 27: // stmt: stmt_waittill + case 25: // stmt: stmt_wait #line 317 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_waittill = std::move(yystack_[0].value.as < ast::stmt_waittill::ptr > ()); } -#line 2180 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_wait = std::move(yystack_[0].value.as < ast::stmt_wait::ptr > ()); } +#line 2193 "parser.cpp" break; - case 28: // stmt: stmt_waittillmatch + case 26: // stmt: stmt_waittill #line 318 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_waittillmatch = std::move(yystack_[0].value.as < ast::stmt_waittillmatch::ptr > ()); } -#line 2186 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_waittill = std::move(yystack_[0].value.as < ast::stmt_waittill::ptr > ()); } +#line 2199 "parser.cpp" break; - case 29: // stmt: stmt_waittillframeend + case 27: // stmt: stmt_waittillmatch #line 319 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_waittillframeend = std::move(yystack_[0].value.as < ast::stmt_waittillframeend::ptr > ()); } -#line 2192 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_waittillmatch = std::move(yystack_[0].value.as < ast::stmt_waittillmatch::ptr > ()); } +#line 2205 "parser.cpp" break; - case 30: // stmt: stmt_waitframe + case 28: // stmt: stmt_waittillframeend #line 320 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_waitframe = std::move(yystack_[0].value.as < ast::stmt_waitframe::ptr > ()); } -#line 2198 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_waittillframeend = std::move(yystack_[0].value.as < ast::stmt_waittillframeend::ptr > ()); } +#line 2211 "parser.cpp" break; - case 31: // stmt: stmt_if + case 29: // stmt: stmt_waitframe #line 321 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_if = std::move(yystack_[0].value.as < ast::stmt_if::ptr > ()); } -#line 2204 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_waitframe = std::move(yystack_[0].value.as < ast::stmt_waitframe::ptr > ()); } +#line 2217 "parser.cpp" break; - case 32: // stmt: stmt_ifelse + case 30: // stmt: stmt_if #line 322 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_ifelse = std::move(yystack_[0].value.as < ast::stmt_ifelse::ptr > ()); } -#line 2210 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_if = std::move(yystack_[0].value.as < ast::stmt_if::ptr > ()); } +#line 2223 "parser.cpp" break; - case 33: // stmt: stmt_while + case 31: // stmt: stmt_ifelse #line 323 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_while = std::move(yystack_[0].value.as < ast::stmt_while::ptr > ()); } -#line 2216 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_ifelse = std::move(yystack_[0].value.as < ast::stmt_ifelse::ptr > ()); } +#line 2229 "parser.cpp" break; - case 34: // stmt: stmt_dowhile + case 32: // stmt: stmt_while #line 324 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_dowhile = std::move(yystack_[0].value.as < ast::stmt_dowhile::ptr > ()); } -#line 2222 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_while = std::move(yystack_[0].value.as < ast::stmt_while::ptr > ()); } +#line 2235 "parser.cpp" break; - case 35: // stmt: stmt_for + case 33: // stmt: stmt_dowhile #line 325 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_for = std::move(yystack_[0].value.as < ast::stmt_for::ptr > ()); } -#line 2228 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_dowhile = std::move(yystack_[0].value.as < ast::stmt_dowhile::ptr > ()); } +#line 2241 "parser.cpp" break; - case 36: // stmt: stmt_foreach + case 34: // stmt: stmt_for #line 326 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_foreach = std::move(yystack_[0].value.as < ast::stmt_foreach::ptr > ()); } -#line 2234 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_for = std::move(yystack_[0].value.as < ast::stmt_for::ptr > ()); } +#line 2247 "parser.cpp" break; - case 37: // stmt: stmt_switch + case 35: // stmt: stmt_foreach #line 327 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_switch = std::move(yystack_[0].value.as < ast::stmt_switch::ptr > ()); } -#line 2240 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_foreach = std::move(yystack_[0].value.as < ast::stmt_foreach::ptr > ()); } +#line 2253 "parser.cpp" break; - case 38: // stmt: stmt_case + case 36: // stmt: stmt_switch #line 328 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_case = std::move(yystack_[0].value.as < ast::stmt_case::ptr > ()); } -#line 2246 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_switch = std::move(yystack_[0].value.as < ast::stmt_switch::ptr > ()); } +#line 2259 "parser.cpp" break; - case 39: // stmt: stmt_default + case 37: // stmt: stmt_case #line 329 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_default = std::move(yystack_[0].value.as < ast::stmt_default::ptr > ()); } -#line 2252 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_case = std::move(yystack_[0].value.as < ast::stmt_case::ptr > ()); } +#line 2265 "parser.cpp" break; - case 40: // stmt: stmt_break + case 38: // stmt: stmt_default #line 330 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_break = std::move(yystack_[0].value.as < ast::stmt_break::ptr > ()); } -#line 2258 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_default = std::move(yystack_[0].value.as < ast::stmt_default::ptr > ()); } +#line 2271 "parser.cpp" break; - case 41: // stmt: stmt_continue + case 39: // stmt: stmt_break #line 331 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_continue = std::move(yystack_[0].value.as < ast::stmt_continue::ptr > ()); } -#line 2264 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_break = std::move(yystack_[0].value.as < ast::stmt_break::ptr > ()); } +#line 2277 "parser.cpp" break; - case 42: // stmt: stmt_return + case 40: // stmt: stmt_continue #line 332 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_return = std::move(yystack_[0].value.as < ast::stmt_return::ptr > ()); } -#line 2270 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_continue = std::move(yystack_[0].value.as < ast::stmt_continue::ptr > ()); } +#line 2283 "parser.cpp" break; - case 43: // stmt: stmt_breakpoint + case 41: // stmt: stmt_return #line 333 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_breakpoint = std::move(yystack_[0].value.as < ast::stmt_breakpoint::ptr > ()); } -#line 2276 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_return = std::move(yystack_[0].value.as < ast::stmt_return::ptr > ()); } +#line 2289 "parser.cpp" break; - case 44: // stmt: stmt_prof_begin + case 42: // stmt: stmt_breakpoint #line 334 "parser.ypp" - { yylhs.value.as < ast::stmt > ().as_prof_begin = std::move(yystack_[0].value.as < ast::stmt_prof_begin::ptr > ()); } -#line 2282 "parser.cpp" + { yylhs.value.as < ast::stmt > ().as_breakpoint = std::move(yystack_[0].value.as < ast::stmt_breakpoint::ptr > ()); } +#line 2295 "parser.cpp" break; - case 45: // stmt: stmt_prof_end + case 43: // stmt: stmt_prof_begin #line 335 "parser.ypp" + { yylhs.value.as < ast::stmt > ().as_prof_begin = std::move(yystack_[0].value.as < ast::stmt_prof_begin::ptr > ()); } +#line 2301 "parser.cpp" + break; + + case 44: // stmt: stmt_prof_end +#line 336 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_prof_end = std::move(yystack_[0].value.as < ast::stmt_prof_end::ptr > ()); } -#line 2288 "parser.cpp" +#line 2307 "parser.cpp" break; - case 46: // stmt_dev: "/#" stmt_list "#/" -#line 339 "parser.ypp" - { yylhs.value.as < ast::stmt_list::ptr > () = std::move(yystack_[1].value.as < ast::stmt_list::ptr > ()); } -#line 2294 "parser.cpp" - break; - - case 47: // stmt_dev: "/#" "#/" + case 45: // stmt_or_dev: stmt #line 340 "parser.ypp" - { yylhs.value.as < ast::stmt_list::ptr > () = std::make_unique(yylhs.location); } -#line 2300 "parser.cpp" + { yylhs.value.as < ast::stmt > () = std::move(yystack_[0].value.as < ast::stmt > ()); } +#line 2313 "parser.cpp" break; - case 48: // stmt_block: "{" stmt_list "}" -#line 344 "parser.ypp" - { yylhs.value.as < ast::stmt_list::ptr > () = std::move(yystack_[1].value.as < ast::stmt_list::ptr > ()); } -#line 2306 "parser.cpp" + case 46: // stmt_or_dev: stmt_dev +#line 341 "parser.ypp" + { yylhs.value.as < ast::stmt > ().as_dev = std::move(yystack_[0].value.as < ast::stmt_dev::ptr > ()); } +#line 2319 "parser.cpp" break; - case 49: // stmt_block: "{" "}" -#line 345 "parser.ypp" - { yylhs.value.as < ast::stmt_list::ptr > () = std::make_unique(yylhs.location); } -#line 2312 "parser.cpp" - break; - - case 50: // stmt_list: stmt_list stmt -#line 350 "parser.ypp" + case 47: // stmt_list: stmt_list stmt +#line 346 "parser.ypp" { yylhs.value.as < ast::stmt_list::ptr > () = std::move(yystack_[1].value.as < ast::stmt_list::ptr > ()); yylhs.value.as < ast::stmt_list::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2318 "parser.cpp" +#line 2325 "parser.cpp" break; - case 51: // stmt_list: stmt -#line 352 "parser.ypp" + case 48: // stmt_list: stmt +#line 348 "parser.ypp" { yylhs.value.as < ast::stmt_list::ptr > () = std::make_unique(yylhs.location); yylhs.value.as < ast::stmt_list::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2324 "parser.cpp" +#line 2331 "parser.cpp" break; - case 52: // stmt_expr: expr_assign -#line 357 "parser.ypp" - { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2330 "parser.cpp" + case 49: // stmt_or_dev_list: stmt_or_dev_list stmt_or_dev +#line 353 "parser.ypp" + { yylhs.value.as < ast::stmt_list::ptr > () = std::move(yystack_[1].value.as < ast::stmt_list::ptr > ()); yylhs.value.as < ast::stmt_list::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::stmt > ())); } +#line 2337 "parser.cpp" break; - case 53: // stmt_expr: expr_increment + case 50: // stmt_or_dev_list: stmt_or_dev +#line 355 "parser.ypp" + { yylhs.value.as < ast::stmt_list::ptr > () = std::make_unique(yylhs.location); yylhs.value.as < ast::stmt_list::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::stmt > ())); } +#line 2343 "parser.cpp" + break; + + case 51: // stmt_dev: "/#" stmt_list "#/" #line 359 "parser.ypp" - { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2336 "parser.cpp" + { yylhs.value.as < ast::stmt_dev::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::stmt_list::ptr > ())); } +#line 2349 "parser.cpp" break; - case 54: // stmt_expr: expr_decrement -#line 361 "parser.ypp" - { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2342 "parser.cpp" + case 52: // stmt_dev: "/#" "#/" +#line 360 "parser.ypp" + { yylhs.value.as < ast::stmt_dev::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } +#line 2355 "parser.cpp" break; - case 55: // stmt_expr: %empty -#line 363 "parser.ypp" - { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } -#line 2348 "parser.cpp" + case 53: // stmt_block: "{" stmt_or_dev_list "}" +#line 364 "parser.ypp" + { yylhs.value.as < ast::stmt_list::ptr > () = std::move(yystack_[1].value.as < ast::stmt_list::ptr > ()); } +#line 2361 "parser.cpp" break; - case 56: // stmt_call: expr_call ";" -#line 368 "parser.ypp" - { yylhs.value.as < ast::stmt_call::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[1].value.as < ast::expr_call::ptr > ()))); } -#line 2354 "parser.cpp" + case 54: // stmt_block: "{" "}" +#line 365 "parser.ypp" + { yylhs.value.as < ast::stmt_list::ptr > () = std::make_unique(yylhs.location); } +#line 2367 "parser.cpp" break; - case 57: // stmt_call: expr_method ";" + case 55: // stmt_expr: expr_assign #line 370 "parser.ypp" + { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2373 "parser.cpp" + break; + + case 56: // stmt_expr: expr_increment +#line 372 "parser.ypp" + { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2379 "parser.cpp" + break; + + case 57: // stmt_expr: expr_decrement +#line 374 "parser.ypp" + { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2385 "parser.cpp" + break; + + case 58: // stmt_expr: %empty +#line 376 "parser.ypp" + { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } +#line 2391 "parser.cpp" + break; + + case 59: // stmt_call: expr_call ";" +#line 381 "parser.ypp" + { yylhs.value.as < ast::stmt_call::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[1].value.as < ast::expr_call::ptr > ()))); } +#line 2397 "parser.cpp" + break; + + case 60: // stmt_call: expr_method ";" +#line 383 "parser.ypp" { yylhs.value.as < ast::stmt_call::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[1].value.as < ast::expr_method::ptr > ()))); } -#line 2360 "parser.cpp" +#line 2403 "parser.cpp" break; - case 58: // stmt_assign: expr_assign ";" -#line 375 "parser.ypp" + case 61: // stmt_assign: expr_assign ";" +#line 388 "parser.ypp" { yylhs.value.as < ast::stmt_assign::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } -#line 2366 "parser.cpp" +#line 2409 "parser.cpp" break; - case 59: // stmt_assign: expr_increment ";" -#line 377 "parser.ypp" + case 62: // stmt_assign: expr_increment ";" +#line 390 "parser.ypp" { yylhs.value.as < ast::stmt_assign::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } -#line 2372 "parser.cpp" +#line 2415 "parser.cpp" break; - case 60: // stmt_assign: expr_decrement ";" -#line 379 "parser.ypp" + case 63: // stmt_assign: expr_decrement ";" +#line 392 "parser.ypp" { yylhs.value.as < ast::stmt_assign::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } -#line 2378 "parser.cpp" +#line 2421 "parser.cpp" break; - case 61: // stmt_endon: expr_object "endon" "(" expr ")" ";" -#line 384 "parser.ypp" + case 64: // stmt_endon: expr_object "endon" "(" expr ")" ";" +#line 397 "parser.ypp" { yylhs.value.as < ast::stmt_endon::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr > ())); } -#line 2384 "parser.cpp" +#line 2427 "parser.cpp" break; - case 62: // stmt_notify: expr_object "notify" "(" expr "," expr_arguments_no_empty ")" ";" -#line 389 "parser.ypp" + case 65: // stmt_notify: expr_object "notify" "(" expr "," expr_arguments_no_empty ")" ";" +#line 402 "parser.ypp" { yylhs.value.as < ast::stmt_notify::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < ast::expr > ()), std::move(yystack_[4].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr_arguments::ptr > ())); } -#line 2390 "parser.cpp" +#line 2433 "parser.cpp" break; - case 63: // stmt_notify: expr_object "notify" "(" expr ")" ";" -#line 391 "parser.ypp" + case 66: // stmt_notify: expr_object "notify" "(" expr ")" ";" +#line 404 "parser.ypp" { yylhs.value.as < ast::stmt_notify::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr > ()), std::make_unique(yylhs.location)); } -#line 2396 "parser.cpp" +#line 2439 "parser.cpp" break; - case 64: // stmt_wait: "wait" expr ";" -#line 396 "parser.ypp" + case 67: // stmt_wait: "wait" expr ";" +#line 409 "parser.ypp" { yylhs.value.as < ast::stmt_wait::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } -#line 2402 "parser.cpp" +#line 2445 "parser.cpp" break; - case 65: // stmt_waittill: expr_object "waittill" "(" expr "," expr_arguments_no_empty ")" ";" -#line 401 "parser.ypp" + case 68: // stmt_waittill: expr_object "waittill" "(" expr "," expr_arguments_no_empty ")" ";" +#line 414 "parser.ypp" { yylhs.value.as < ast::stmt_waittill::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < ast::expr > ()), std::move(yystack_[4].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr_arguments::ptr > ())); } -#line 2408 "parser.cpp" +#line 2451 "parser.cpp" break; - case 66: // stmt_waittill: expr_object "waittill" "(" expr ")" ";" -#line 403 "parser.ypp" + case 69: // stmt_waittill: expr_object "waittill" "(" expr ")" ";" +#line 416 "parser.ypp" { yylhs.value.as < ast::stmt_waittill::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr > ()), std::make_unique(yylhs.location)); } -#line 2414 "parser.cpp" +#line 2457 "parser.cpp" break; - case 67: // stmt_waittillmatch: expr_object "waittillmatch" "(" expr "," expr_arguments_no_empty ")" ";" -#line 408 "parser.ypp" + case 70: // stmt_waittillmatch: expr_object "waittillmatch" "(" expr "," expr_arguments_no_empty ")" ";" +#line 421 "parser.ypp" { yylhs.value.as < ast::stmt_waittillmatch::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[7].value.as < ast::expr > ()), std::move(yystack_[4].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr_arguments::ptr > ())); } -#line 2420 "parser.cpp" +#line 2463 "parser.cpp" break; - case 68: // stmt_waittillmatch: expr_object "waittillmatch" "(" expr ")" ";" -#line 410 "parser.ypp" + case 71: // stmt_waittillmatch: expr_object "waittillmatch" "(" expr ")" ";" +#line 423 "parser.ypp" { yylhs.value.as < ast::stmt_waittillmatch::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr > ()), std::make_unique(yylhs.location)); } -#line 2426 "parser.cpp" +#line 2469 "parser.cpp" break; - case 69: // stmt_waittillframeend: "waittillframeend" ";" -#line 415 "parser.ypp" + case 72: // stmt_waittillframeend: "waittillframeend" ";" +#line 428 "parser.ypp" { yylhs.value.as < ast::stmt_waittillframeend::ptr > () = std::make_unique(yylhs.location); } -#line 2432 "parser.cpp" +#line 2475 "parser.cpp" break; - case 70: // stmt_waitframe: "waitframe" ";" -#line 420 "parser.ypp" + case 73: // stmt_waitframe: "waitframe" ";" +#line 433 "parser.ypp" { yylhs.value.as < ast::stmt_waitframe::ptr > () = std::make_unique(yylhs.location); } -#line 2438 "parser.cpp" +#line 2481 "parser.cpp" break; - case 71: // stmt_waitframe: "waitframe" "(" ")" ";" -#line 422 "parser.ypp" + case 74: // stmt_waitframe: "waitframe" "(" ")" ";" +#line 435 "parser.ypp" { yylhs.value.as < ast::stmt_waitframe::ptr > () = std::make_unique(yylhs.location); } -#line 2444 "parser.cpp" +#line 2487 "parser.cpp" break; - case 72: // stmt_if: "if" "(" expr ")" stmt -#line 427 "parser.ypp" + case 75: // stmt_if: "if" "(" expr ")" stmt +#line 440 "parser.ypp" { yylhs.value.as < ast::stmt_if::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2450 "parser.cpp" +#line 2493 "parser.cpp" break; - case 73: // stmt_ifelse: "if" "(" expr ")" stmt "else" stmt -#line 432 "parser.ypp" + case 76: // stmt_ifelse: "if" "(" expr ")" stmt "else" stmt +#line 445 "parser.ypp" { yylhs.value.as < ast::stmt_ifelse::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::stmt > ()), std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2456 "parser.cpp" +#line 2499 "parser.cpp" break; - case 74: // stmt_while: "while" "(" expr ")" stmt -#line 437 "parser.ypp" + case 77: // stmt_while: "while" "(" expr ")" stmt +#line 450 "parser.ypp" { yylhs.value.as < ast::stmt_while::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2462 "parser.cpp" +#line 2505 "parser.cpp" break; - case 75: // stmt_dowhile: "do" stmt "while" "(" expr ")" ";" -#line 442 "parser.ypp" + case 78: // stmt_dowhile: "do" stmt "while" "(" expr ")" ";" +#line 455 "parser.ypp" { yylhs.value.as < ast::stmt_dowhile::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[5].value.as < ast::stmt > ())); } -#line 2468 "parser.cpp" +#line 2511 "parser.cpp" break; - case 76: // stmt_for: "for" "(" stmt_expr ";" expr_or_empty ";" stmt_expr ")" stmt -#line 447 "parser.ypp" + case 79: // stmt_for: "for" "(" stmt_expr ";" expr_or_empty ";" stmt_expr ")" stmt +#line 460 "parser.ypp" { yylhs.value.as < ast::stmt_for::ptr > () = std::make_unique(yylhs.location, ast::stmt(std::move(yystack_[6].value.as < ast::stmt_expr::ptr > ())), std::move(yystack_[4].value.as < ast::expr > ()), ast::stmt(std::move(yystack_[2].value.as < ast::stmt_expr::ptr > ())), std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2474 "parser.cpp" +#line 2517 "parser.cpp" break; - case 77: // stmt_foreach: "foreach" "(" expr_identifier "in" expr ")" stmt -#line 452 "parser.ypp" + case 80: // stmt_foreach: "foreach" "(" expr_identifier "in" expr ")" stmt +#line 465 "parser.ypp" { yylhs.value.as < ast::stmt_foreach::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[4].value.as < ast::expr_identifier::ptr > ())), std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2480 "parser.cpp" +#line 2523 "parser.cpp" break; - case 78: // stmt_foreach: "foreach" "(" expr_identifier "," expr_identifier "in" expr ")" stmt -#line 454 "parser.ypp" + case 81: // stmt_foreach: "foreach" "(" expr_identifier "," expr_identifier "in" expr ")" stmt +#line 467 "parser.ypp" { yylhs.value.as < ast::stmt_foreach::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[6].value.as < ast::expr_identifier::ptr > ())), ast::expr(std::move(yystack_[4].value.as < ast::expr_identifier::ptr > ())), std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::stmt > ())); } -#line 2486 "parser.cpp" +#line 2529 "parser.cpp" break; - case 79: // stmt_switch: "switch" "(" expr ")" stmt_block -#line 459 "parser.ypp" + case 82: // stmt_switch: "switch" "(" expr ")" stmt_block +#line 472 "parser.ypp" { yylhs.value.as < ast::stmt_switch::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::stmt_list::ptr > ())); } -#line 2492 "parser.cpp" +#line 2535 "parser.cpp" break; - case 80: // stmt_case: "case" expr_integer ":" -#line 464 "parser.ypp" + case 83: // stmt_case: "case" expr_integer ":" +#line 477 "parser.ypp" { yylhs.value.as < ast::stmt_case::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[1].value.as < ast::expr_integer::ptr > ())), std::make_unique(yylhs.location)); } -#line 2498 "parser.cpp" +#line 2541 "parser.cpp" break; - case 81: // stmt_case: "case" expr_string ":" -#line 466 "parser.ypp" + case 84: // stmt_case: "case" expr_string ":" +#line 479 "parser.ypp" { yylhs.value.as < ast::stmt_case::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[1].value.as < ast::expr_string::ptr > ())), std::make_unique(yylhs.location)); } -#line 2504 "parser.cpp" +#line 2547 "parser.cpp" break; - case 82: // stmt_default: "default" ":" -#line 471 "parser.ypp" + case 85: // stmt_default: "default" ":" +#line 484 "parser.ypp" { yylhs.value.as < ast::stmt_default::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } -#line 2510 "parser.cpp" +#line 2553 "parser.cpp" break; - case 83: // stmt_break: "break" ";" -#line 476 "parser.ypp" + case 86: // stmt_break: "break" ";" +#line 489 "parser.ypp" { yylhs.value.as < ast::stmt_break::ptr > () = std::make_unique(yylhs.location); } -#line 2516 "parser.cpp" +#line 2559 "parser.cpp" break; - case 84: // stmt_continue: "continue" ";" -#line 481 "parser.ypp" + case 87: // stmt_continue: "continue" ";" +#line 494 "parser.ypp" { yylhs.value.as < ast::stmt_continue::ptr > () = std::make_unique(yylhs.location); } -#line 2522 "parser.cpp" +#line 2565 "parser.cpp" break; - case 85: // stmt_return: "return" expr ";" -#line 486 "parser.ypp" + case 88: // stmt_return: "return" expr ";" +#line 499 "parser.ypp" { yylhs.value.as < ast::stmt_return::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } -#line 2528 "parser.cpp" +#line 2571 "parser.cpp" break; - case 86: // stmt_return: "return" ";" -#line 488 "parser.ypp" + case 89: // stmt_return: "return" ";" +#line 501 "parser.ypp" { yylhs.value.as < ast::stmt_return::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } -#line 2534 "parser.cpp" +#line 2577 "parser.cpp" break; - case 87: // stmt_breakpoint: "breakpoint" ";" -#line 493 "parser.ypp" + case 90: // stmt_breakpoint: "breakpoint" ";" +#line 506 "parser.ypp" { yylhs.value.as < ast::stmt_breakpoint::ptr > () = std::make_unique(yylhs.location); } -#line 2540 "parser.cpp" +#line 2583 "parser.cpp" break; - case 88: // stmt_prof_begin: "prof_begin" "(" expr_arguments ")" ";" -#line 498 "parser.ypp" + case 91: // stmt_prof_begin: "prof_begin" "(" expr_arguments ")" ";" +#line 511 "parser.ypp" { yylhs.value.as < ast::stmt_prof_begin::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr_arguments::ptr > ())); } -#line 2546 "parser.cpp" +#line 2589 "parser.cpp" break; - case 89: // stmt_prof_end: "prof_end" "(" expr_arguments ")" ";" -#line 503 "parser.ypp" + case 92: // stmt_prof_end: "prof_end" "(" expr_arguments ")" ";" +#line 516 "parser.ypp" { yylhs.value.as < ast::stmt_prof_end::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr_arguments::ptr > ())); } -#line 2552 "parser.cpp" +#line 2595 "parser.cpp" break; - case 90: // expr: expr_ternary -#line 507 "parser.ypp" + case 93: // expr: expr_ternary +#line 520 "parser.ypp" { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } -#line 2558 "parser.cpp" +#line 2601 "parser.cpp" break; - case 91: // expr: expr_binary -#line 508 "parser.ypp" - { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } -#line 2564 "parser.cpp" - break; - - case 92: // expr: expr_primitive -#line 509 "parser.ypp" - { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } -#line 2570 "parser.cpp" - break; - - case 93: // expr_or_empty: expr -#line 513 "parser.ypp" - { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } -#line 2576 "parser.cpp" - break; - - case 94: // expr_or_empty: %empty -#line 514 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location); } -#line 2582 "parser.cpp" - break; - - case 95: // expr_assign: expr_object "=" expr -#line 519 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2588 "parser.cpp" - break; - - case 96: // expr_assign: expr_object "|=" expr + case 94: // expr: expr_binary #line 521 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2594 "parser.cpp" + { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } +#line 2607 "parser.cpp" break; - case 97: // expr_assign: expr_object "&=" expr -#line 523 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2600 "parser.cpp" + case 95: // expr: expr_primitive +#line 522 "parser.ypp" + { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } +#line 2613 "parser.cpp" break; - case 98: // expr_assign: expr_object "^=" expr -#line 525 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2606 "parser.cpp" + case 96: // expr_or_empty: expr +#line 526 "parser.ypp" + { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } +#line 2619 "parser.cpp" break; - case 99: // expr_assign: expr_object "<<=" expr + case 97: // expr_or_empty: %empty #line 527 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location); } +#line 2625 "parser.cpp" + break; + + case 98: // expr_assign: expr_object "=" expr +#line 532 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2631 "parser.cpp" + break; + + case 99: // expr_assign: expr_object "|=" expr +#line 534 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2637 "parser.cpp" + break; + + case 100: // expr_assign: expr_object "&=" expr +#line 536 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2643 "parser.cpp" + break; + + case 101: // expr_assign: expr_object "^=" expr +#line 538 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2649 "parser.cpp" + break; + + case 102: // expr_assign: expr_object "<<=" expr +#line 540 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()),std::move( yystack_[0].value.as < ast::expr > ())); } -#line 2612 "parser.cpp" +#line 2655 "parser.cpp" break; - case 100: // expr_assign: expr_object ">>=" expr -#line 529 "parser.ypp" + case 103: // expr_assign: expr_object ">>=" expr +#line 542 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2618 "parser.cpp" +#line 2661 "parser.cpp" break; - case 101: // expr_assign: expr_object "+=" expr -#line 531 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2624 "parser.cpp" - break; - - case 102: // expr_assign: expr_object "-=" expr -#line 533 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2630 "parser.cpp" - break; - - case 103: // expr_assign: expr_object "*=" expr -#line 535 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2636 "parser.cpp" - break; - - case 104: // expr_assign: expr_object "/=" expr -#line 537 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2642 "parser.cpp" - break; - - case 105: // expr_assign: expr_object "%=" expr -#line 539 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2648 "parser.cpp" - break; - - case 106: // expr_increment: "++" expr_object + case 104: // expr_assign: expr_object "+=" expr #line 544 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ()), true); } -#line 2654 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2667 "parser.cpp" break; - case 107: // expr_increment: expr_object "++" + case 105: // expr_assign: expr_object "-=" expr #line 546 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2673 "parser.cpp" + break; + + case 106: // expr_assign: expr_object "*=" expr +#line 548 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2679 "parser.cpp" + break; + + case 107: // expr_assign: expr_object "/=" expr +#line 550 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2685 "parser.cpp" + break; + + case 108: // expr_assign: expr_object "%=" expr +#line 552 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2691 "parser.cpp" + break; + + case 109: // expr_increment: "++" expr_object +#line 557 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ()), true); } +#line 2697 "parser.cpp" + break; + + case 110: // expr_increment: expr_object "++" +#line 559 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ()), false); } -#line 2660 "parser.cpp" +#line 2703 "parser.cpp" break; - case 108: // expr_decrement: "--" expr_object -#line 551 "parser.ypp" + case 111: // expr_decrement: "--" expr_object +#line 564 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ()), true); } -#line 2666 "parser.cpp" +#line 2709 "parser.cpp" break; - case 109: // expr_decrement: expr_object "--" -#line 553 "parser.ypp" + case 112: // expr_decrement: expr_object "--" +#line 566 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ()), false); } -#line 2672 "parser.cpp" +#line 2715 "parser.cpp" break; - case 110: // expr_ternary: expr "?" expr ":" expr -#line 558 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2678 "parser.cpp" - break; - - case 111: // expr_binary: expr "||" expr -#line 563 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2684 "parser.cpp" - break; - - case 112: // expr_binary: expr "&&" expr -#line 565 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2690 "parser.cpp" - break; - - case 113: // expr_binary: expr "==" expr -#line 567 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2696 "parser.cpp" - break; - - case 114: // expr_binary: expr "!=" expr -#line 569 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2702 "parser.cpp" - break; - - case 115: // expr_binary: expr "<=" expr + case 113: // expr_ternary: expr "?" expr ":" expr #line 571 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[4].value.as < ast::expr > ()), std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2721 "parser.cpp" + break; + + case 114: // expr_binary: expr "||" expr +#line 576 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2727 "parser.cpp" + break; + + case 115: // expr_binary: expr "&&" expr +#line 578 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2733 "parser.cpp" + break; + + case 116: // expr_binary: expr "==" expr +#line 580 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2739 "parser.cpp" + break; + + case 117: // expr_binary: expr "!=" expr +#line 582 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2745 "parser.cpp" + break; + + case 118: // expr_binary: expr "<=" expr +#line 584 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2708 "parser.cpp" +#line 2751 "parser.cpp" break; - case 116: // expr_binary: expr ">=" expr -#line 573 "parser.ypp" + case 119: // expr_binary: expr ">=" expr +#line 586 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2714 "parser.cpp" +#line 2757 "parser.cpp" break; - case 117: // expr_binary: expr "<" expr -#line 575 "parser.ypp" + case 120: // expr_binary: expr "<" expr +#line 588 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2720 "parser.cpp" +#line 2763 "parser.cpp" break; - case 118: // expr_binary: expr ">" expr -#line 577 "parser.ypp" + case 121: // expr_binary: expr ">" expr +#line 590 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2726 "parser.cpp" +#line 2769 "parser.cpp" break; - case 119: // expr_binary: expr "|" expr -#line 579 "parser.ypp" + case 122: // expr_binary: expr "|" expr +#line 592 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2732 "parser.cpp" +#line 2775 "parser.cpp" break; - case 120: // expr_binary: expr "&" expr -#line 581 "parser.ypp" + case 123: // expr_binary: expr "&" expr +#line 594 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2738 "parser.cpp" +#line 2781 "parser.cpp" break; - case 121: // expr_binary: expr "^" expr -#line 583 "parser.ypp" + case 124: // expr_binary: expr "^" expr +#line 596 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2744 "parser.cpp" +#line 2787 "parser.cpp" break; - case 122: // expr_binary: expr "<<" expr -#line 585 "parser.ypp" + case 125: // expr_binary: expr "<<" expr +#line 598 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2750 "parser.cpp" +#line 2793 "parser.cpp" break; - case 123: // expr_binary: expr ">>" expr -#line 587 "parser.ypp" + case 126: // expr_binary: expr ">>" expr +#line 600 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2756 "parser.cpp" +#line 2799 "parser.cpp" break; - case 124: // expr_binary: expr "+" expr -#line 589 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2762 "parser.cpp" - break; - - case 125: // expr_binary: expr "-" expr -#line 591 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2768 "parser.cpp" - break; - - case 126: // expr_binary: expr "*" expr -#line 593 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2774 "parser.cpp" - break; - - case 127: // expr_binary: expr "/" expr -#line 595 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2780 "parser.cpp" - break; - - case 128: // expr_binary: expr "%" expr -#line 597 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2786 "parser.cpp" - break; - - case 129: // expr_primitive: expr_complement -#line 601 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_complement::ptr > ()); } -#line 2792 "parser.cpp" - break; - - case 130: // expr_primitive: expr_not + case 127: // expr_binary: expr "+" expr #line 602 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_not::ptr > ()); } -#line 2798 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2805 "parser.cpp" break; - case 131: // expr_primitive: expr_call -#line 603 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_call::ptr > ()); } -#line 2804 "parser.cpp" - break; - - case 132: // expr_primitive: expr_method + case 128: // expr_binary: expr "-" expr #line 604 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_method::ptr > ()); } -#line 2810 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2811 "parser.cpp" break; - case 133: // expr_primitive: expr_add_array -#line 605 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_add_array::ptr > ()); } -#line 2816 "parser.cpp" - break; - - case 134: // expr_primitive: expr_isdefined + case 129: // expr_binary: expr "*" expr #line 606 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_isdefined::ptr > ()); } -#line 2822 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2817 "parser.cpp" break; - case 135: // expr_primitive: expr_istrue -#line 607 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_istrue::ptr > ()); } -#line 2828 "parser.cpp" - break; - - case 136: // expr_primitive: expr_reference + case 130: // expr_binary: expr "/" expr #line 608 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_reference::ptr > ()); } -#line 2834 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2823 "parser.cpp" break; - case 137: // expr_primitive: expr_array -#line 609 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_array::ptr > ()); } -#line 2840 "parser.cpp" - break; - - case 138: // expr_primitive: expr_field + case 131: // expr_binary: expr "%" expr #line 610 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_field::ptr > ()); } -#line 2846 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } +#line 2829 "parser.cpp" break; - case 139: // expr_primitive: expr_size -#line 611 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_size::ptr > ()); } -#line 2852 "parser.cpp" - break; - - case 140: // expr_primitive: expr_paren -#line 612 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_paren::ptr > ()); } -#line 2858 "parser.cpp" - break; - - case 141: // expr_primitive: expr_thisthread -#line 613 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_thisthread::ptr > ()); } -#line 2864 "parser.cpp" - break; - - case 142: // expr_primitive: expr_empty_array + case 132: // expr_primitive: expr_complement #line 614 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_empty_array::ptr > ()); } -#line 2870 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_complement::ptr > ()); } +#line 2835 "parser.cpp" break; - case 143: // expr_primitive: expr_undefined + case 133: // expr_primitive: expr_not #line 615 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_undefined::ptr > ()); } -#line 2876 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_not::ptr > ()); } +#line 2841 "parser.cpp" break; - case 144: // expr_primitive: expr_game + case 134: // expr_primitive: expr_call #line 616 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_game::ptr > ()); } -#line 2882 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_call::ptr > ()); } +#line 2847 "parser.cpp" break; - case 145: // expr_primitive: expr_self + case 135: // expr_primitive: expr_method #line 617 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_self::ptr > ()); } -#line 2888 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_method::ptr > ()); } +#line 2853 "parser.cpp" break; - case 146: // expr_primitive: expr_anim + case 136: // expr_primitive: expr_add_array #line 618 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_anim::ptr > ()); } -#line 2894 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_add_array::ptr > ()); } +#line 2859 "parser.cpp" break; - case 147: // expr_primitive: expr_level + case 137: // expr_primitive: expr_isdefined #line 619 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_level::ptr > ()); } -#line 2900 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_isdefined::ptr > ()); } +#line 2865 "parser.cpp" break; - case 148: // expr_primitive: expr_animation + case 138: // expr_primitive: expr_istrue #line 620 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_animation::ptr > ()); } -#line 2906 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_istrue::ptr > ()); } +#line 2871 "parser.cpp" break; - case 149: // expr_primitive: expr_animtree + case 139: // expr_primitive: expr_reference #line 621 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_animtree::ptr > ()); } -#line 2912 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_reference::ptr > ()); } +#line 2877 "parser.cpp" break; - case 150: // expr_primitive: expr_identifier + case 140: // expr_primitive: expr_array #line 622 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ()); } -#line 2918 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_array::ptr > ()); } +#line 2883 "parser.cpp" break; - case 151: // expr_primitive: expr_istring + case 141: // expr_primitive: expr_field #line 623 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_istring::ptr > ()); } -#line 2924 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_field::ptr > ()); } +#line 2889 "parser.cpp" break; - case 152: // expr_primitive: expr_string + case 142: // expr_primitive: expr_size #line 624 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_string::ptr > ()); } -#line 2930 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_size::ptr > ()); } +#line 2895 "parser.cpp" break; - case 153: // expr_primitive: expr_color + case 143: // expr_primitive: expr_paren #line 625 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_color::ptr > ()); } -#line 2936 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_paren::ptr > ()); } +#line 2901 "parser.cpp" break; - case 154: // expr_primitive: expr_vector + case 144: // expr_primitive: expr_thisthread #line 626 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_vector::ptr > ()); } -#line 2942 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_thisthread::ptr > ()); } +#line 2907 "parser.cpp" break; - case 155: // expr_primitive: expr_float + case 145: // expr_primitive: expr_empty_array #line 627 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_float::ptr > ()); } -#line 2948 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_empty_array::ptr > ()); } +#line 2913 "parser.cpp" break; - case 156: // expr_primitive: expr_integer + case 146: // expr_primitive: expr_undefined #line 628 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_integer::ptr > ()); } -#line 2954 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_undefined::ptr > ()); } +#line 2919 "parser.cpp" break; - case 157: // expr_primitive: expr_false + case 147: // expr_primitive: expr_game #line 629 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_false::ptr > ()); } -#line 2960 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_game::ptr > ()); } +#line 2925 "parser.cpp" break; - case 158: // expr_primitive: expr_true + case 148: // expr_primitive: expr_self #line 630 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_true::ptr > ()); } -#line 2966 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_self::ptr > ()); } +#line 2931 "parser.cpp" break; - case 159: // expr_complement: "~" expr + case 149: // expr_primitive: expr_anim +#line 631 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_anim::ptr > ()); } +#line 2937 "parser.cpp" + break; + + case 150: // expr_primitive: expr_level +#line 632 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_level::ptr > ()); } +#line 2943 "parser.cpp" + break; + + case 151: // expr_primitive: expr_animation +#line 633 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_animation::ptr > ()); } +#line 2949 "parser.cpp" + break; + + case 152: // expr_primitive: expr_animtree +#line 634 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_animtree::ptr > ()); } +#line 2955 "parser.cpp" + break; + + case 153: // expr_primitive: expr_identifier #line 635 "parser.ypp" - { yylhs.value.as < ast::expr_complement::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2972 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ()); } +#line 2961 "parser.cpp" break; - case 160: // expr_not: "!" expr + case 154: // expr_primitive: expr_istring +#line 636 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_istring::ptr > ()); } +#line 2967 "parser.cpp" + break; + + case 155: // expr_primitive: expr_string +#line 637 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_string::ptr > ()); } +#line 2973 "parser.cpp" + break; + + case 156: // expr_primitive: expr_color +#line 638 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_color::ptr > ()); } +#line 2979 "parser.cpp" + break; + + case 157: // expr_primitive: expr_vector +#line 639 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_vector::ptr > ()); } +#line 2985 "parser.cpp" + break; + + case 158: // expr_primitive: expr_float #line 640 "parser.ypp" - { yylhs.value.as < ast::expr_not::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } -#line 2978 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_float::ptr > ()); } +#line 2991 "parser.cpp" break; - case 161: // expr_call: expr_function -#line 644 "parser.ypp" - { yylhs.value.as < ast::expr_call::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::call > ())); } -#line 2984 "parser.cpp" + case 159: // expr_primitive: expr_integer +#line 641 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_integer::ptr > ()); } +#line 2997 "parser.cpp" break; - case 162: // expr_call: expr_pointer -#line 645 "parser.ypp" - { yylhs.value.as < ast::expr_call::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::call > ())); } -#line 2990 "parser.cpp" + case 160: // expr_primitive: expr_false +#line 642 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_false::ptr > ()); } +#line 3003 "parser.cpp" break; - case 163: // expr_method: expr_object expr_function + case 161: // expr_primitive: expr_true +#line 643 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_true::ptr > ()); } +#line 3009 "parser.cpp" + break; + + case 162: // expr_complement: "~" expr #line 648 "parser.ypp" - { yylhs.value.as < ast::expr_method::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::call > ())); } -#line 2996 "parser.cpp" + { yylhs.value.as < ast::expr_complement::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } +#line 3015 "parser.cpp" break; - case 164: // expr_method: expr_object expr_pointer -#line 649 "parser.ypp" - { yylhs.value.as < ast::expr_method::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::call > ())); } -#line 3002 "parser.cpp" + case 163: // expr_not: "!" expr +#line 653 "parser.ypp" + { yylhs.value.as < ast::expr_not::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } +#line 3021 "parser.cpp" break; - case 165: // expr_function: expr_identifier "(" expr_arguments ")" -#line 654 "parser.ypp" - { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::normal); } -#line 3008 "parser.cpp" + case 164: // expr_call: expr_function +#line 657 "parser.ypp" + { yylhs.value.as < ast::expr_call::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::call > ())); } +#line 3027 "parser.cpp" break; - case 166: // expr_function: expr_path "::" expr_identifier "(" expr_arguments ")" -#line 656 "parser.ypp" - { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr_path::ptr > ()), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::normal); } -#line 3014 "parser.cpp" - break; - - case 167: // expr_function: "thread" expr_identifier "(" expr_arguments ")" + case 165: // expr_call: expr_pointer #line 658 "parser.ypp" - { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::thread); } -#line 3020 "parser.cpp" + { yylhs.value.as < ast::expr_call::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::call > ())); } +#line 3033 "parser.cpp" break; - case 168: // expr_function: "thread" expr_path "::" expr_identifier "(" expr_arguments ")" -#line 660 "parser.ypp" - { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr_path::ptr > ()), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::thread); } -#line 3026 "parser.cpp" + case 166: // expr_method: expr_object expr_function +#line 661 "parser.ypp" + { yylhs.value.as < ast::expr_method::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::call > ())); } +#line 3039 "parser.cpp" break; - case 169: // expr_function: "childthread" expr_identifier "(" expr_arguments ")" + case 167: // expr_method: expr_object expr_pointer #line 662 "parser.ypp" - { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::childthread); } -#line 3032 "parser.cpp" + { yylhs.value.as < ast::expr_method::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::call > ())); } +#line 3045 "parser.cpp" break; - case 170: // expr_function: "childthread" expr_path "::" expr_identifier "(" expr_arguments ")" -#line 664 "parser.ypp" - { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr_path::ptr > ()), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::childthread); } -#line 3038 "parser.cpp" + case 168: // expr_function: expr_identifier "(" expr_arguments ")" +#line 667 "parser.ypp" + { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::normal); } +#line 3051 "parser.cpp" break; - case 171: // expr_pointer: "[" "[" expr "]" "]" "(" expr_arguments ")" + case 169: // expr_function: expr_path "::" expr_identifier "(" expr_arguments ")" #line 669 "parser.ypp" - { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::normal); } -#line 3044 "parser.cpp" + { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr_path::ptr > ()), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::normal); } +#line 3057 "parser.cpp" break; - case 172: // expr_pointer: "thread" "[" "[" expr "]" "]" "(" expr_arguments ")" + case 170: // expr_function: "thread" expr_identifier "(" expr_arguments ")" #line 671 "parser.ypp" - { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::thread); } -#line 3050 "parser.cpp" + { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::thread); } +#line 3063 "parser.cpp" break; - case 173: // expr_pointer: "childthread" "[" "[" expr "]" "]" "(" expr_arguments ")" + case 171: // expr_function: "thread" expr_path "::" expr_identifier "(" expr_arguments ")" #line 673 "parser.ypp" - { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::childthread); } -#line 3056 "parser.cpp" + { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr_path::ptr > ()), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::thread); } +#line 3069 "parser.cpp" break; - case 174: // expr_pointer: "call" "[" "[" expr "]" "]" "(" expr_arguments ")" + case 172: // expr_function: "childthread" expr_identifier "(" expr_arguments ")" #line 675 "parser.ypp" + { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::childthread); } +#line 3075 "parser.cpp" + break; + + case 173: // expr_function: "childthread" expr_path "::" expr_identifier "(" expr_arguments ")" +#line 677 "parser.ypp" + { yylhs.value.as < ast::call > ().as_function = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr_path::ptr > ()), std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::childthread); } +#line 3081 "parser.cpp" + break; + + case 174: // expr_pointer: "[" "[" expr "]" "]" "(" expr_arguments ")" +#line 682 "parser.ypp" + { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::normal); } +#line 3087 "parser.cpp" + break; + + case 175: // expr_pointer: "thread" "[" "[" expr "]" "]" "(" expr_arguments ")" +#line 684 "parser.ypp" + { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::thread); } +#line 3093 "parser.cpp" + break; + + case 176: // expr_pointer: "childthread" "[" "[" expr "]" "]" "(" expr_arguments ")" +#line 686 "parser.ypp" + { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::childthread); } +#line 3099 "parser.cpp" + break; + + case 177: // expr_pointer: "call" "[" "[" expr "]" "]" "(" expr_arguments ")" +#line 688 "parser.ypp" { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::builtin); } -#line 3062 "parser.cpp" +#line 3105 "parser.cpp" break; - case 175: // expr_add_array: "[" expr_arguments_no_empty "]" -#line 680 "parser.ypp" + case 178: // expr_add_array: "[" expr_arguments_no_empty "]" +#line 693 "parser.ypp" { yylhs.value.as < ast::expr_add_array::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ())); } -#line 3068 "parser.cpp" +#line 3111 "parser.cpp" break; - case 176: // expr_parameters: expr_parameters "," expr_identifier -#line 685 "parser.ypp" + case 179: // expr_parameters: expr_parameters "," expr_identifier +#line 698 "parser.ypp" { yylhs.value.as < ast::expr_parameters::ptr > () = std::move(yystack_[2].value.as < ast::expr_parameters::ptr > ()); yylhs.value.as < ast::expr_parameters::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ())); } -#line 3074 "parser.cpp" +#line 3117 "parser.cpp" break; - case 177: // expr_parameters: expr_identifier -#line 687 "parser.ypp" + case 180: // expr_parameters: expr_identifier +#line 700 "parser.ypp" { yylhs.value.as < ast::expr_parameters::ptr > () = std::make_unique(yylhs.location); yylhs.value.as < ast::expr_parameters::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ())); } -#line 3080 "parser.cpp" +#line 3123 "parser.cpp" break; - case 178: // expr_parameters: %empty -#line 689 "parser.ypp" + case 181: // expr_parameters: %empty +#line 702 "parser.ypp" { yylhs.value.as < ast::expr_parameters::ptr > () = std::make_unique(yylhs.location); } -#line 3086 "parser.cpp" +#line 3129 "parser.cpp" break; - case 179: // expr_arguments: expr_arguments_no_empty -#line 694 "parser.ypp" + case 182: // expr_arguments: expr_arguments_no_empty +#line 707 "parser.ypp" { yylhs.value.as < ast::expr_arguments::ptr > () = std::move(yystack_[0].value.as < ast::expr_arguments::ptr > ()); } -#line 3092 "parser.cpp" +#line 3135 "parser.cpp" break; - case 180: // expr_arguments: %empty -#line 696 "parser.ypp" + case 183: // expr_arguments: %empty +#line 709 "parser.ypp" { yylhs.value.as < ast::expr_arguments::ptr > () = std::make_unique(yylhs.location); } -#line 3098 "parser.cpp" +#line 3141 "parser.cpp" break; - case 181: // expr_arguments_no_empty: expr_arguments "," expr -#line 701 "parser.ypp" + case 184: // expr_arguments_no_empty: expr_arguments "," expr +#line 714 "parser.ypp" { yylhs.value.as < ast::expr_arguments::ptr > () = std::move(yystack_[2].value.as < ast::expr_arguments::ptr > ()); yylhs.value.as < ast::expr_arguments::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::expr > ())); } -#line 3104 "parser.cpp" +#line 3147 "parser.cpp" break; - case 182: // expr_arguments_no_empty: expr -#line 703 "parser.ypp" + case 185: // expr_arguments_no_empty: expr +#line 716 "parser.ypp" { yylhs.value.as < ast::expr_arguments::ptr > () = std::make_unique(yylhs.location); yylhs.value.as < ast::expr_arguments::ptr > ()->list.push_back(std::move(yystack_[0].value.as < ast::expr > ())); } -#line 3110 "parser.cpp" +#line 3153 "parser.cpp" break; - case 183: // expr_isdefined: "isdefined" "(" expr ")" -#line 708 "parser.ypp" + case 186: // expr_isdefined: "isdefined" "(" expr ")" +#line 721 "parser.ypp" { yylhs.value.as < ast::expr_isdefined::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } -#line 3116 "parser.cpp" +#line 3159 "parser.cpp" break; - case 184: // expr_istrue: "istrue" "(" expr ")" -#line 713 "parser.ypp" + case 187: // expr_istrue: "istrue" "(" expr ")" +#line 726 "parser.ypp" { yylhs.value.as < ast::expr_istrue::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } -#line 3122 "parser.cpp" +#line 3165 "parser.cpp" break; - case 185: // expr_reference: "::" expr_identifier -#line 718 "parser.ypp" + case 188: // expr_reference: "::" expr_identifier +#line 731 "parser.ypp" { yylhs.value.as < ast::expr_reference::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location), std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ())); } -#line 3128 "parser.cpp" +#line 3171 "parser.cpp" break; - case 186: // expr_reference: expr_path "::" expr_identifier -#line 720 "parser.ypp" + case 189: // expr_reference: expr_path "::" expr_identifier +#line 733 "parser.ypp" { yylhs.value.as < ast::expr_reference::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr_path::ptr > ()), std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ())); } -#line 3134 "parser.cpp" +#line 3177 "parser.cpp" break; - case 187: // expr_array: expr_object "[" expr "]" -#line 725 "parser.ypp" + case 190: // expr_array: expr_object "[" expr "]" +#line 738 "parser.ypp" { yylhs.value.as < ast::expr_array::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[3].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr > ())); } -#line 3140 "parser.cpp" +#line 3183 "parser.cpp" break; - case 188: // expr_field: expr_object "." expr_identifier -#line 730 "parser.ypp" + case 191: // expr_field: expr_object "." expr_identifier +#line 743 "parser.ypp" { yylhs.value.as < ast::expr_field::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ())); } -#line 3146 "parser.cpp" +#line 3189 "parser.cpp" break; - case 189: // expr_field: expr_object "field" -#line 732 "parser.ypp" + case 192: // expr_field: expr_object "field" +#line 745 "parser.ypp" { yylhs.value.as < ast::expr_field::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ()), std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ())); } -#line 3152 "parser.cpp" +#line 3195 "parser.cpp" break; - case 190: // expr_size: expr_object ".size" -#line 737 "parser.ypp" - { yylhs.value.as < ast::expr_size::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } -#line 3158 "parser.cpp" - break; - - case 191: // expr_paren: "(" expr ")" -#line 742 "parser.ypp" - { yylhs.value.as < ast::expr_paren::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } -#line 3164 "parser.cpp" - break; - - case 192: // expr_object: expr_call -#line 746 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_call::ptr > ()); } -#line 3170 "parser.cpp" - break; - - case 193: // expr_object: expr_method -#line 747 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_method::ptr > ()); } -#line 3176 "parser.cpp" - break; - - case 194: // expr_object: expr_array -#line 748 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_array::ptr > ()); } -#line 3182 "parser.cpp" - break; - - case 195: // expr_object: expr_field -#line 749 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_field::ptr > ()); } -#line 3188 "parser.cpp" - break; - - case 196: // expr_object: expr_game + case 193: // expr_size: expr_object ".size" #line 750 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_game::ptr > ()); } -#line 3194 "parser.cpp" + { yylhs.value.as < ast::expr_size::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } +#line 3201 "parser.cpp" break; - case 197: // expr_object: expr_self -#line 751 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_self::ptr > ()); } -#line 3200 "parser.cpp" + case 194: // expr_paren: "(" expr ")" +#line 755 "parser.ypp" + { yylhs.value.as < ast::expr_paren::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } +#line 3207 "parser.cpp" break; - case 198: // expr_object: expr_anim -#line 752 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_anim::ptr > ()); } -#line 3206 "parser.cpp" - break; - - case 199: // expr_object: expr_level -#line 753 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_level::ptr > ()); } -#line 3212 "parser.cpp" - break; - - case 200: // expr_object: expr_identifier -#line 754 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ()); } -#line 3218 "parser.cpp" - break; - - case 201: // expr_thisthread: "thisthread" + case 195: // expr_object: expr_call #line 759 "parser.ypp" - { yylhs.value.as < ast::expr_thisthread::ptr > () = std::make_unique(yylhs.location); } -#line 3224 "parser.cpp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_call::ptr > ()); } +#line 3213 "parser.cpp" break; - case 202: // expr_empty_array: "[" "]" + case 196: // expr_object: expr_method +#line 760 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_method::ptr > ()); } +#line 3219 "parser.cpp" + break; + + case 197: // expr_object: expr_array +#line 761 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_array::ptr > ()); } +#line 3225 "parser.cpp" + break; + + case 198: // expr_object: expr_field +#line 762 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_field::ptr > ()); } +#line 3231 "parser.cpp" + break; + + case 199: // expr_object: expr_game +#line 763 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_game::ptr > ()); } +#line 3237 "parser.cpp" + break; + + case 200: // expr_object: expr_self #line 764 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_self::ptr > ()); } +#line 3243 "parser.cpp" + break; + + case 201: // expr_object: expr_anim +#line 765 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_anim::ptr > ()); } +#line 3249 "parser.cpp" + break; + + case 202: // expr_object: expr_level +#line 766 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_level::ptr > ()); } +#line 3255 "parser.cpp" + break; + + case 203: // expr_object: expr_identifier +#line 767 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ()); } +#line 3261 "parser.cpp" + break; + + case 204: // expr_thisthread: "thisthread" +#line 772 "parser.ypp" + { yylhs.value.as < ast::expr_thisthread::ptr > () = std::make_unique(yylhs.location); } +#line 3267 "parser.cpp" + break; + + case 205: // expr_empty_array: "[" "]" +#line 777 "parser.ypp" { yylhs.value.as < ast::expr_empty_array::ptr > () = std::make_unique(yylhs.location); } -#line 3230 "parser.cpp" +#line 3273 "parser.cpp" break; - case 203: // expr_undefined: "undefined" -#line 769 "parser.ypp" + case 206: // expr_undefined: "undefined" +#line 782 "parser.ypp" { yylhs.value.as < ast::expr_undefined::ptr > () = std::make_unique(yylhs.location); } -#line 3236 "parser.cpp" +#line 3279 "parser.cpp" break; - case 204: // expr_game: "game" -#line 774 "parser.ypp" + case 207: // expr_game: "game" +#line 787 "parser.ypp" { yylhs.value.as < ast::expr_game::ptr > () = std::make_unique(yylhs.location); } -#line 3242 "parser.cpp" +#line 3285 "parser.cpp" break; - case 205: // expr_self: "self" -#line 779 "parser.ypp" + case 208: // expr_self: "self" +#line 792 "parser.ypp" { yylhs.value.as < ast::expr_self::ptr > () = std::make_unique(yylhs.location); } -#line 3248 "parser.cpp" +#line 3291 "parser.cpp" break; - case 206: // expr_anim: "anim" -#line 784 "parser.ypp" + case 209: // expr_anim: "anim" +#line 797 "parser.ypp" { yylhs.value.as < ast::expr_anim::ptr > () = std::make_unique(yylhs.location); } -#line 3254 "parser.cpp" +#line 3297 "parser.cpp" break; - case 207: // expr_level: "level" -#line 789 "parser.ypp" + case 210: // expr_level: "level" +#line 802 "parser.ypp" { yylhs.value.as < ast::expr_level::ptr > () = std::make_unique(yylhs.location); } -#line 3260 "parser.cpp" +#line 3303 "parser.cpp" break; - case 208: // expr_animation: "%" "identifier" -#line 794 "parser.ypp" + case 211: // expr_animation: "%" "identifier" +#line 807 "parser.ypp" { yylhs.value.as < ast::expr_animation::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3266 "parser.cpp" +#line 3309 "parser.cpp" break; - case 209: // expr_animtree: "#animtree" -#line 799 "parser.ypp" + case 212: // expr_animtree: "#animtree" +#line 812 "parser.ypp" { yylhs.value.as < ast::expr_animtree::ptr > () = std::make_unique(yylhs.location); } -#line 3272 "parser.cpp" +#line 3315 "parser.cpp" break; - case 210: // expr_identifier: "identifier" -#line 804 "parser.ypp" + case 213: // expr_identifier: "identifier" +#line 817 "parser.ypp" { yylhs.value.as < ast::expr_identifier::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3278 "parser.cpp" +#line 3321 "parser.cpp" break; - case 211: // expr_path: "path" -#line 809 "parser.ypp" + case 214: // expr_path: "path" +#line 822 "parser.ypp" { yylhs.value.as < ast::expr_path::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3284 "parser.cpp" +#line 3327 "parser.cpp" break; - case 212: // expr_path: expr_identifier -#line 811 "parser.ypp" + case 215: // expr_path: expr_identifier +#line 824 "parser.ypp" { yylhs.value.as < ast::expr_path::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < ast::expr_identifier::ptr > ()->value); } -#line 3290 "parser.cpp" +#line 3333 "parser.cpp" break; - case 213: // expr_istring: "localized string" -#line 816 "parser.ypp" + case 216: // expr_istring: "localized string" +#line 829 "parser.ypp" { yylhs.value.as < ast::expr_istring::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3296 "parser.cpp" +#line 3339 "parser.cpp" break; - case 214: // expr_string: "string literal" -#line 821 "parser.ypp" + case 217: // expr_string: "string literal" +#line 834 "parser.ypp" { yylhs.value.as < ast::expr_string::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3302 "parser.cpp" +#line 3345 "parser.cpp" break; - case 215: // expr_color: "color" -#line 826 "parser.ypp" + case 218: // expr_color: "color" +#line 839 "parser.ypp" { yylhs.value.as < ast::expr_color::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3308 "parser.cpp" +#line 3351 "parser.cpp" break; - case 216: // expr_vector: "(" expr "," expr "," expr ")" -#line 831 "parser.ypp" + case 219: // expr_vector: "(" expr "," expr "," expr ")" +#line 844 "parser.ypp" { yylhs.value.as < ast::expr_vector::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[3].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr > ())); } -#line 3314 "parser.cpp" +#line 3357 "parser.cpp" break; - case 217: // expr_float: "-" "float" -#line 836 "parser.ypp" + case 220: // expr_float: "-" "float" +#line 849 "parser.ypp" { yylhs.value.as < ast::expr_float::ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } -#line 3320 "parser.cpp" +#line 3363 "parser.cpp" break; - case 218: // expr_float: "float" -#line 838 "parser.ypp" + case 221: // expr_float: "float" +#line 851 "parser.ypp" { yylhs.value.as < ast::expr_float::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3326 "parser.cpp" +#line 3369 "parser.cpp" break; - case 219: // expr_integer: "-" "integer" -#line 843 "parser.ypp" + case 222: // expr_integer: "-" "integer" +#line 856 "parser.ypp" { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } -#line 3332 "parser.cpp" +#line 3375 "parser.cpp" break; - case 220: // expr_integer: "integer" -#line 845 "parser.ypp" + case 223: // expr_integer: "integer" +#line 858 "parser.ypp" { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } -#line 3338 "parser.cpp" +#line 3381 "parser.cpp" break; - case 221: // expr_false: "false" -#line 850 "parser.ypp" + case 224: // expr_false: "false" +#line 863 "parser.ypp" { yylhs.value.as < ast::expr_false::ptr > () = std::make_unique(yylhs.location); } -#line 3344 "parser.cpp" +#line 3387 "parser.cpp" break; - case 222: // expr_true: "true" -#line 855 "parser.ypp" + case 225: // expr_true: "true" +#line 868 "parser.ypp" { yylhs.value.as < ast::expr_true::ptr > () = std::make_unique(yylhs.location); } -#line 3350 "parser.cpp" +#line 3393 "parser.cpp" break; -#line 3354 "parser.cpp" +#line 3397 "parser.cpp" default: break; @@ -3550,24 +3593,25 @@ namespace xsk { namespace gsc { namespace s4 { "integer", "ADD_ARRAY", "THEN", "TERN", "NEG", "ANIMREF", "PREINC", "PREDEC", "POSTINC", "POSTDEC", "$accept", "root", "program", "inline", "include", "declaration", "decl_usingtree", "decl_constant", - "decl_thread", "stmt", "stmt_dev", "stmt_block", "stmt_list", - "stmt_expr", "stmt_call", "stmt_assign", "stmt_endon", "stmt_notify", - "stmt_wait", "stmt_waittill", "stmt_waittillmatch", - "stmt_waittillframeend", "stmt_waitframe", "stmt_if", "stmt_ifelse", - "stmt_while", "stmt_dowhile", "stmt_for", "stmt_foreach", "stmt_switch", - "stmt_case", "stmt_default", "stmt_break", "stmt_continue", - "stmt_return", "stmt_breakpoint", "stmt_prof_begin", "stmt_prof_end", - "expr", "expr_or_empty", "expr_assign", "expr_increment", - "expr_decrement", "expr_ternary", "expr_binary", "expr_primitive", - "expr_complement", "expr_not", "expr_call", "expr_method", - "expr_function", "expr_pointer", "expr_add_array", "expr_parameters", - "expr_arguments", "expr_arguments_no_empty", "expr_isdefined", - "expr_istrue", "expr_reference", "expr_array", "expr_field", "expr_size", - "expr_paren", "expr_object", "expr_thisthread", "expr_empty_array", - "expr_undefined", "expr_game", "expr_self", "expr_anim", "expr_level", - "expr_animation", "expr_animtree", "expr_identifier", "expr_path", - "expr_istring", "expr_string", "expr_color", "expr_vector", "expr_float", - "expr_integer", "expr_false", "expr_true", YY_NULLPTR + "decl_thread", "stmt", "stmt_or_dev", "stmt_list", "stmt_or_dev_list", + "stmt_dev", "stmt_block", "stmt_expr", "stmt_call", "stmt_assign", + "stmt_endon", "stmt_notify", "stmt_wait", "stmt_waittill", + "stmt_waittillmatch", "stmt_waittillframeend", "stmt_waitframe", + "stmt_if", "stmt_ifelse", "stmt_while", "stmt_dowhile", "stmt_for", + "stmt_foreach", "stmt_switch", "stmt_case", "stmt_default", "stmt_break", + "stmt_continue", "stmt_return", "stmt_breakpoint", "stmt_prof_begin", + "stmt_prof_end", "expr", "expr_or_empty", "expr_assign", + "expr_increment", "expr_decrement", "expr_ternary", "expr_binary", + "expr_primitive", "expr_complement", "expr_not", "expr_call", + "expr_method", "expr_function", "expr_pointer", "expr_add_array", + "expr_parameters", "expr_arguments", "expr_arguments_no_empty", + "expr_isdefined", "expr_istrue", "expr_reference", "expr_array", + "expr_field", "expr_size", "expr_paren", "expr_object", + "expr_thisthread", "expr_empty_array", "expr_undefined", "expr_game", + "expr_self", "expr_anim", "expr_level", "expr_animation", + "expr_animtree", "expr_identifier", "expr_path", "expr_istring", + "expr_string", "expr_color", "expr_vector", "expr_float", "expr_integer", + "expr_false", "expr_true", YY_NULLPTR }; return yy_sname[yysymbol]; } @@ -3832,682 +3876,681 @@ namespace xsk { namespace gsc { namespace s4 { } - const short parser::yypact_ninf_ = -277; + const short parser::yypact_ninf_ = -279; - const short parser::yytable_ninf_ = -213; + const short parser::yytable_ninf_ = -216; const short parser::yypact_[] = { - 32, -277, -277, -48, -48, -34, -277, 7, 32, -277, - -277, -277, -277, -277, -277, -38, -277, -277, -41, -25, - -69, -277, -277, -277, -277, -51, 1135, -277, -277, -277, - -19, -29, -277, -277, -46, -43, -277, 22, -277, -277, - -277, -277, -277, -277, -277, 56, 60, 1135, 1001, -51, - 1135, 1135, 55, -30, -277, -277, -277, -277, 2131, -277, - -277, -277, -277, -277, 562, 704, -277, -277, -277, -277, - -277, -277, 1024, 1095, -277, -277, 1158, -277, -277, -277, - 1280, 1292, 1302, 1311, -277, -277, 449, 66, -277, -277, - -277, -277, -277, -277, -277, -277, 65, 81, -51, 83, - 89, 88, 97, 104, 100, 106, 1135, 1135, 1349, 1001, - -277, 2214, 105, 107, -277, -277, -277, -277, -277, -277, - -277, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, - 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, - -277, 1202, -51, -277, -277, -277, 113, 109, 1135, -51, - -277, 68, -277, -277, 1135, 1135, -51, 1135, 1135, -51, - 1135, 1515, 1549, -277, 1135, 1861, 1135, -277, 2096, 80, - 80, 2245, 2255, 2327, 2327, -31, -31, -31, -31, 2286, - 712, 2296, -37, -37, -277, -277, -277, 1901, -277, -51, - -28, -277, 127, 801, 1135, 119, -35, 130, 973, 133, - 136, 138, 140, -78, 146, 132, 137, 1068, 151, 148, - 149, -277, 163, 220, 220, -277, -277, -277, 847, -277, - -277, -277, -277, -277, -277, -277, -277, -277, -277, -277, - -277, -277, -277, -277, -277, -277, -277, -277, -277, -277, - -277, -277, -277, 158, 159, 164, 165, 167, -277, -277, - 649, -277, -277, -277, -277, -32, 1941, -4, 182, 1981, - 13, 187, 2021, -277, -277, 2060, 183, 2214, 1135, -277, - 127, -277, 1135, -277, 927, 2166, -277, 188, -277, 1135, - 219, 1135, 72, -51, 1135, 141, 186, 190, -277, -277, - -277, -277, 2201, -277, 1135, 1135, 1135, -277, -277, 139, - 139, -277, -277, -277, -277, -277, -277, -277, 200, 203, - 204, 205, -277, -277, 1135, 1135, 1135, 1135, 1135, 1135, - 1135, 1135, 1135, 1135, 1135, 206, -277, 1135, 213, -277, - 1135, 214, 1135, 208, 2214, 14, -277, -277, 191, 1583, - 210, 1617, 202, -277, -277, -277, 1229, -12, 1651, -277, - -277, -277, 15, 17, 1861, 1135, 1135, 1135, 1135, 2214, - 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, - 222, 23, 223, 26, 225, 1685, 1135, -277, -277, 973, - 1135, 973, 1135, 1135, -51, 81, 221, 228, 1719, 1393, - 1437, 1481, 1135, -277, 1135, -277, 1135, -277, 29, 259, - 1753, -277, 2214, 231, 1787, 257, -277, -277, -277, 232, - 233, 1135, 234, 1135, 238, 1135, 33, 76, 85, -277, - 973, 239, 72, 973, 1135, -277, -277, 249, -277, 254, - -277, 256, -277, -277, -277, -277, -277, 261, -277, 1821, - 248, 250, 255, 973, 973, -277, -277, -277, -277, -277 + 8, -279, -279, 12, 12, -38, -279, 65, 8, -279, + -279, -279, -279, -279, -279, -18, -279, -279, 4, 11, + -72, -279, -279, -279, -279, -29, 974, -279, -279, -279, + 24, -28, -279, -279, -43, -34, -279, 32, -279, -279, + -279, -279, -279, -279, -279, 39, 45, 974, 2, -29, + 974, 974, 48, 9, -279, -279, -279, -279, 2144, -279, + -279, -279, -279, -279, 77, 592, -279, -279, -279, -279, + -279, -279, 704, 934, -279, -279, 997, -279, -279, -279, + 1007, 1293, 1305, 1315, -279, -279, 30, 52, -279, -279, + -279, -279, -279, -279, -279, -279, 69, 90, -29, 92, + 83, 96, 102, 108, 101, 106, 974, 974, 1362, 2, + -279, 2227, 105, 113, -279, -279, -279, -279, -279, -279, + -279, 974, 974, 974, 974, 974, 974, 974, 974, 974, + 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, + -279, 1041, -29, -279, -279, -279, 119, 112, 974, -29, + -279, 825, -279, -279, 974, 974, -29, 974, 974, -29, + 974, 1528, 1562, -279, 974, 1874, 974, -279, 2109, 73, + 73, 2258, 2268, 1303, 1303, 164, 164, 164, 164, 2299, + 1055, 2309, -11, -11, -279, -279, -279, 1914, -279, -29, + 14, -279, 121, 1136, 974, 115, -26, 129, 1238, 130, + 133, 138, 140, -69, 132, 136, 141, 907, 144, 142, + 143, -279, 151, 416, 416, -279, -279, 879, -279, -279, + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + -279, -279, -279, -279, 147, 148, 152, 154, 157, -279, + -279, 712, -279, -279, -279, -279, -23, 1954, 23, 161, + 1994, 34, 168, 2034, -279, -279, 2073, 165, 2227, 974, + -279, 121, -279, 974, -279, -279, 1192, 2179, -279, 170, + -279, 974, 175, 974, 611, -29, 974, 120, 171, 172, + -279, -279, -279, -279, 2214, -279, 974, 974, 974, -279, + -279, 1324, 1324, -279, -279, -279, -279, -279, -279, -279, + 173, 174, 182, 183, -279, -279, 974, 974, 974, 974, + 974, 974, 974, 974, 974, 974, 974, 184, -279, 974, + 187, -279, 974, 188, 974, 194, 2227, 41, -279, -279, + -279, 177, 1596, 195, 1630, 191, -279, -279, -279, 1242, + -1, 1664, -279, -279, -279, 56, 66, 1874, 974, 974, + 974, 974, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, + 2227, 2227, 2227, 202, 68, 213, 72, 214, 1698, 974, + -279, -279, 1238, 974, 1238, 974, 974, -29, 90, 206, + 207, 1732, 1406, 1450, 1494, 974, -279, 974, -279, 974, + -279, 79, 247, 1766, -279, 2227, 209, 1800, 244, -279, + -279, -279, 211, 215, 974, 216, 974, 217, 974, 81, + 85, 88, -279, 1238, 219, 611, 1238, 974, -279, -279, + 232, -279, 233, -279, 234, -279, -279, -279, -279, -279, + 236, -279, 1834, 229, 230, 231, 1238, 1238, -279, -279, + -279, -279, -279 }; const unsigned char parser::yydefact_[] = { - 3, 12, 13, 0, 0, 0, 210, 0, 2, 7, - 8, 9, 14, 15, 16, 0, 211, 212, 0, 0, - 0, 1, 4, 5, 6, 178, 0, 10, 11, 214, - 0, 0, 177, 209, 0, 0, 201, 0, 222, 221, - 203, 204, 205, 206, 207, 0, 0, 0, 180, 0, - 0, 0, 0, 0, 213, 215, 218, 220, 0, 90, - 91, 92, 129, 130, 131, 132, 161, 162, 133, 134, - 135, 136, 137, 138, 139, 140, 0, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 0, 151, 152, - 153, 154, 155, 156, 157, 158, 0, 0, 0, 0, - 212, 0, 0, 212, 0, 0, 0, 0, 0, 180, - 202, 182, 0, 179, 185, 160, 159, 217, 219, 208, + 3, 12, 13, 0, 0, 0, 213, 0, 2, 7, + 8, 9, 14, 15, 16, 0, 214, 215, 0, 0, + 0, 1, 4, 5, 6, 181, 0, 10, 11, 217, + 0, 0, 180, 212, 0, 0, 204, 0, 225, 224, + 206, 207, 208, 209, 210, 0, 0, 0, 183, 0, + 0, 0, 0, 0, 216, 218, 221, 223, 0, 93, + 94, 95, 132, 133, 134, 135, 164, 165, 136, 137, + 138, 139, 140, 141, 142, 143, 0, 144, 145, 146, + 147, 148, 149, 150, 151, 152, 153, 0, 154, 155, + 156, 157, 158, 159, 160, 161, 0, 0, 0, 0, + 215, 0, 0, 215, 0, 0, 0, 0, 0, 183, + 205, 185, 0, 182, 188, 163, 162, 220, 222, 211, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 190, 0, 0, 189, 163, 164, 212, 0, 180, 0, - 17, 0, 19, 176, 0, 180, 0, 0, 180, 0, - 0, 0, 0, 191, 0, 182, 0, 175, 0, 122, - 123, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 124, 125, 126, 127, 128, 0, 188, 0, - 0, 179, 186, 0, 0, 0, 0, 0, 0, 0, + 193, 0, 0, 192, 166, 167, 215, 0, 183, 0, + 17, 0, 19, 179, 0, 183, 0, 0, 183, 0, + 0, 0, 0, 194, 0, 185, 0, 178, 0, 125, + 126, 114, 115, 116, 117, 118, 119, 120, 121, 122, + 123, 124, 127, 128, 129, 130, 131, 0, 191, 0, + 0, 182, 189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 49, 0, 0, 0, 51, 20, 21, 0, 22, - 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, - 43, 44, 45, 0, 0, 0, 192, 193, 194, 195, - 0, 196, 197, 198, 199, 200, 0, 0, 0, 0, - 0, 0, 0, 183, 184, 0, 0, 181, 0, 187, - 0, 165, 180, 47, 0, 0, 69, 0, 70, 0, - 0, 0, 55, 0, 0, 0, 0, 0, 82, 83, - 84, 86, 0, 87, 180, 180, 0, 192, 193, 106, - 108, 48, 50, 58, 59, 60, 56, 57, 0, 0, - 0, 0, 107, 109, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 167, 180, 0, 169, - 180, 0, 0, 0, 110, 0, 46, 64, 0, 0, - 0, 0, 0, 52, 53, 54, 0, 0, 0, 81, - 80, 85, 0, 0, 0, 0, 0, 0, 0, 95, - 101, 102, 103, 104, 105, 96, 97, 98, 100, 99, - 0, 0, 0, 0, 0, 0, 180, 166, 71, 0, - 0, 0, 94, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 180, 168, 180, 170, 180, 216, 0, 72, - 0, 74, 93, 0, 0, 0, 79, 88, 89, 0, - 0, 180, 0, 180, 0, 180, 0, 0, 0, 171, - 0, 0, 55, 0, 0, 61, 63, 179, 66, 179, - 68, 179, 172, 173, 174, 73, 75, 0, 77, 0, - 0, 0, 0, 0, 0, 62, 65, 67, 76, 78 + 0, 54, 0, 0, 0, 45, 50, 0, 46, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 0, 0, 0, 195, 196, 197, + 198, 0, 199, 200, 201, 202, 203, 0, 0, 0, + 0, 0, 0, 0, 186, 187, 0, 0, 184, 0, + 190, 0, 168, 183, 52, 48, 0, 0, 72, 0, + 73, 0, 0, 0, 58, 0, 0, 0, 0, 0, + 85, 86, 87, 89, 0, 90, 183, 183, 0, 195, + 196, 109, 111, 53, 49, 61, 62, 63, 59, 60, + 0, 0, 0, 0, 110, 112, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 170, 183, + 0, 172, 183, 0, 0, 0, 113, 0, 51, 47, + 67, 0, 0, 0, 0, 0, 55, 56, 57, 0, + 0, 0, 84, 83, 88, 0, 0, 0, 0, 0, + 0, 0, 98, 104, 105, 106, 107, 108, 99, 100, + 101, 103, 102, 0, 0, 0, 0, 0, 0, 183, + 169, 74, 0, 0, 0, 97, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 183, 171, 183, 173, 183, + 219, 0, 75, 0, 77, 96, 0, 0, 0, 82, + 91, 92, 0, 0, 183, 0, 183, 0, 183, 0, + 0, 0, 174, 0, 0, 58, 0, 0, 64, 66, + 182, 69, 182, 71, 182, 175, 176, 177, 76, 78, + 0, 80, 0, 0, 0, 0, 0, 0, 65, 68, + 70, 79, 81 }; const short parser::yypgoto_[] = { - -277, -277, -277, 281, 309, 310, -277, -277, -277, 207, - -277, -95, 150, -81, -277, -277, -277, -277, -277, -277, - -277, -277, -277, -277, -277, -277, -277, -277, -277, -277, - -277, -277, -277, -277, -277, -277, -277, -277, 201, -277, - -276, -269, -268, -277, -277, -277, -277, -277, -66, -7, - -65, -55, -277, -277, 306, -47, -277, -277, -277, 12, - 19, -277, -277, 196, -277, -277, -277, 253, 333, 347, - 378, -277, -277, 0, 6, -277, -15, -277, -277, -277, - 142, -277, -277 + -279, -279, -279, 289, 292, 295, -279, -279, -279, -181, + 87, -279, -279, -279, -96, -127, -279, -279, -279, -279, + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + 203, -279, -278, -273, -270, -279, -279, -279, -279, -279, + -32, -7, -71, -63, -279, -279, -33, -46, -279, -279, + -279, 256, 262, -279, -279, 290, -279, -279, -279, 317, + 343, 392, 399, -279, -279, 0, 6, -279, -13, -279, + -279, -279, 103, -279, -279 }; const short parser::yydefgoto_[] = { 0, 7, 8, 9, 10, 11, 12, 13, 14, 215, - 216, 217, 218, 342, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, - 235, 236, 237, 238, 239, 240, 241, 242, 111, 403, - 243, 244, 245, 59, 60, 61, 62, 63, 64, 65, - 66, 67, 68, 31, 112, 191, 69, 70, 71, 72, - 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - 93, 94, 95 + 216, 276, 217, 218, 219, 345, 220, 221, 222, 223, + 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, + 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, + 111, 406, 244, 245, 246, 59, 60, 61, 62, 63, + 64, 65, 66, 67, 68, 31, 112, 191, 69, 70, + 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, + 91, 92, 93, 94, 95 }; const short parser::yytable_[] = { - 15, 113, 152, 17, 17, 30, 343, 21, 15, 18, - 19, 144, 99, 344, 345, 102, 25, 285, 383, 277, - 20, 145, 148, 27, 29, 32, 97, 271, 57, 278, - -212, 98, 166, 29, 100, 103, 96, 122, 123, 28, - 101, 104, 26, 1, 2, 3, 4, 5, 384, 114, - 6, 326, 16, 6, 16, 6, 166, 16, 6, 137, - 138, 139, 113, 135, 136, 137, 138, 139, 329, 377, - 386, 119, 387, 166, 166, 166, 146, 166, 393, 193, - 105, 395, 147, 166, 419, 246, 166, 194, 432, 166, - 195, 196, 197, 166, 198, 199, 200, 201, 153, 202, + 15, 152, 113, 17, 17, 144, 346, 30, 15, 18, + 19, 347, 275, 145, 348, 99, 20, 282, 33, 1, + 2, 3, 4, 5, 102, 32, 287, 97, 279, 386, + 29, 148, 98, 29, 100, 103, 25, 57, 280, -215, + 101, 104, 34, 35, 36, 37, 38, 39, 40, 114, + 41, 42, 43, 44, 45, 46, 47, 16, 6, 387, + 109, 110, 26, 113, 49, 21, 16, 6, 27, 272, + -203, -203, 6, -203, 166, 28, 146, -203, 328, 96, + 50, 51, 147, 166, 148, 137, 138, 139, -203, 331, + 105, -203, -215, 106, 166, 339, 380, 52, 153, 107, + 53, 166, 16, 6, 29, 54, 55, 56, 57, 6, + 119, 389, 16, 6, 149, 190, 166, -195, -195, 247, + -195, 390, 258, 396, -195, 261, 166, 398, 166, -203, + -203, -203, 166, 150, 422, -195, 435, 155, -195, 166, + 436, 166, 188, 437, 248, 166, 151, 346, 166, 192, + 154, 256, 347, 117, 118, 348, 259, 147, 156, 262, + 157, 247, 158, 159, 160, 166, 247, 135, 136, 137, + 138, 139, 167, 148, 189, 273, -195, -195, -195, 278, + 144, 299, 299, 281, 283, 247, 248, 284, 145, 271, + 288, 248, 285, 256, 286, 290, 296, 297, 256, 147, + 291, 402, 343, 404, 147, 292, 300, 300, 295, 298, + 248, 305, 306, 256, 256, 329, 307, 256, 308, 147, + 147, 309, 332, 147, 335, 341, 118, 358, 359, 58, + 144, 144, 122, 123, 352, 353, 360, 361, 145, 145, + 337, 381, 438, 373, 247, 441, 375, 377, 379, 383, + 108, 146, 299, 115, 116, 385, 395, 147, 135, 136, + 137, 138, 139, 355, 356, 451, 452, 397, 399, 248, + 410, 411, 423, 425, 427, 428, 256, 300, 144, 429, + 431, 433, 147, 439, 256, 350, 145, 443, 444, 445, + 147, 446, 409, 448, 449, 450, 374, 22, 440, 376, + 23, 146, 146, 24, 304, 0, 289, 147, 147, 161, + 162, 0, 165, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 168, 169, 170, 171, 172, 173, + 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, + 184, 185, 186, 0, 187, 0, 401, 0, 0, 146, + 247, 0, 247, 0, 0, 147, 0, 257, 0, 0, + 260, 0, 419, 263, 420, 0, 421, 266, 430, 268, + 432, 0, 434, 0, 0, 248, 0, 248, 0, 0, + 0, 0, 256, 0, 256, 0, 0, 408, 147, 0, + 147, 247, 0, 299, 247, 0, 0, 277, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 249, 0, 0, + 294, 0, 0, 250, 247, 247, 248, 0, 300, 248, + 0, 0, 0, 256, 0, 256, 256, 0, 0, 147, + 0, 147, 147, 0, 0, 0, 0, 0, 0, 248, + 248, 251, 0, 0, 0, 0, 256, 256, 0, 249, + 0, 0, 147, 147, 249, 250, 34, 35, 0, 37, + 250, 0, 0, 0, 41, 42, 43, 44, 252, 249, + 249, 0, 336, 249, 212, 250, 250, 0, 0, 250, + 0, 0, 0, 251, 342, 0, 344, 0, 251, 351, + 0, 0, 0, 0, 253, 0, 0, 0, 0, 0, + 0, 357, 0, 301, 302, 0, 0, 251, 0, 0, + 252, 0, 0, 0, 0, 252, 16, 6, 0, 362, + 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, + 252, 252, 249, 0, 252, 0, 253, 378, 250, 0, + 249, 253, 0, 254, 0, 0, 250, 0, 0, 0, + 255, 0, 0, 0, 0, 0, 253, 253, 0, 0, + 253, 391, 392, 393, 394, 0, 251, 0, 0, 0, + 0, 0, 0, 0, 349, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 254, 403, 0, 405, 407, + 254, 0, 255, 252, 0, 0, 0, 255, 0, 0, + 0, 252, 0, 0, 0, 254, 254, 0, 0, 254, + 0, 0, 255, 255, 0, 0, 255, 0, 0, 253, + 0, 0, 0, 0, 0, 0, 0, 253, 0, 0, + 442, 0, -196, -196, 0, -196, 0, 0, 249, -196, + 249, 0, 0, 0, 250, 0, 250, 0, 0, 0, + -196, 34, 35, -196, 37, 0, 0, 0, 0, 41, + 42, 43, 44, 0, 0, 0, 0, 0, 254, 212, + 0, 0, 251, 0, 251, 255, 254, 213, 214, 249, + 0, 249, 249, 255, 0, 250, 0, 250, 250, 0, + 0, -196, -196, -196, 0, 0, 0, 0, 0, 252, + 0, 252, 249, 249, 0, 0, 0, 0, 250, 250, + 0, 16, 6, 251, 0, 349, 251, 0, 0, 0, + 0, 0, 0, 0, 0, 253, 0, 253, 0, 310, + 311, 0, 312, 313, 0, 0, 251, 251, 0, 0, + 252, 0, 252, 252, -197, -197, 0, -197, 0, 0, + 0, -197, 34, 35, 0, 37, 0, 0, 0, 0, + 0, 0, -197, 252, 252, -197, 253, 0, 253, 253, + 141, 0, 0, 142, 254, 0, 254, 0, 314, 315, + 0, 255, 0, 255, 0, 0, 0, 0, 0, 253, + 253, 0, 316, 317, 318, 319, 320, 321, 322, 323, + 324, 325, 326, -197, -197, -197, 0, 0, 0, 0, + 0, 143, 16, 6, 0, 254, 0, 254, 254, 0, + 0, 0, 255, 0, 255, 255, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 193, 0, 254, 254, + 0, 0, 0, 0, 194, 255, 255, 195, 196, 197, + 0, 198, 199, 200, 201, 0, 202, 203, 204, 205, + 206, 207, 208, 209, 210, 34, 35, 0, 37, 0, + 0, 0, 0, 41, 42, 43, 44, 0, 0, 0, + 0, 151, 211, 212, 0, 0, 0, 0, 0, 0, + 193, 213, 214, 0, 0, 0, 0, 0, 194, 0, + 0, 195, 196, 197, 0, 198, 199, 200, 201, 0, + 202, 203, 204, 205, 206, 207, 208, 209, 210, 34, + 35, 0, 37, 33, 0, 16, 6, 41, 42, 43, + 44, 0, 0, 0, 0, 151, 303, 212, 0, 0, + 0, 0, 0, 0, 0, 213, 214, 34, 35, 36, + 37, 38, 39, 40, 0, 41, 42, 43, 44, 45, + 46, 47, 0, 0, 0, 48, 0, 0, 0, 49, + 0, 293, 0, 0, -198, -198, 0, -198, 0, 16, + 6, -198, 0, 0, 0, 50, 51, 0, 0, 0, + 33, 0, -198, 0, 0, -198, 0, 0, 0, 0, + 0, 0, 52, 0, 0, 53, 0, 16, 6, 29, + 54, 55, 56, 57, 34, 35, 36, 37, 38, 39, + 40, 0, 41, 42, 43, 44, 45, 46, 47, 0, + 0, 0, 48, -198, -198, -198, 49, 34, 35, 0, + 37, 0, 0, 0, 140, 0, 0, -199, -199, 0, + -199, 0, 50, 51, -199, 141, 0, 33, 142, 0, + 0, 0, 0, 0, 0, -199, 0, 0, -199, 52, + 0, 0, 53, 0, 16, 6, 29, 54, 55, 56, + 57, 34, 35, 36, 37, 38, 39, 40, 0, 41, + 42, 43, 44, 45, 46, 47, 143, 16, 6, 109, + 0, 0, 0, 49, 0, 0, -199, -199, -199, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, + 51, 0, 0, 122, 123, 0, 0, 126, 127, 128, + 129, 130, 131, 0, 0, 0, 52, 0, 0, 53, + 0, 16, 6, 29, 54, 55, 56, 57, 274, 135, + 136, 137, 138, 139, 0, 194, 0, 0, 195, 196, + 197, 0, 198, 199, 200, 201, 0, 202, 203, 204, + 205, 206, 207, 208, 209, 210, 34, 35, 0, 37, + 0, 0, 0, 0, 41, 42, 43, 44, 0, 0, + 0, 0, 151, 0, 212, 0, 0, 0, 0, 0, + 0, 0, 213, 214, 338, 0, 0, 0, 0, 0, + 0, 194, 0, 0, 195, 196, 197, 0, 198, 199, + 200, 201, 0, 202, 203, 204, 205, 206, 207, 208, + 209, 210, 34, 35, 0, 37, 16, 6, 0, 0, + 41, 42, 43, 44, 0, 0, 0, 0, 151, 0, + 212, 0, 0, 0, 0, 0, 0, 194, 213, 214, + 195, 196, 197, 0, 198, 199, 200, 201, 0, 202, 203, 204, 205, 206, 207, 208, 209, 210, 34, 35, - 106, 37, 34, 35, 107, 37, 41, 42, 43, 44, - 41, 42, 43, 44, 151, 211, 212, 246, 149, 150, - 212, 433, 246, 6, 213, 214, 166, 151, 213, 214, - 434, 154, 188, 155, 247, 166, 343, 297, 297, 192, - 156, 255, 246, 344, 345, 157, 258, 147, 158, 261, - 117, 118, 159, 248, 160, 166, 167, 148, 16, 6, - 249, 189, 16, 6, 135, 136, 137, 138, 139, 34, - 35, 272, 37, 276, 279, 144, 247, 281, 286, 270, - 282, 247, 283, 255, 284, 145, 289, 141, 255, 147, - 142, 290, 294, 295, 147, 248, 298, 298, 246, 288, - 248, 247, 249, 255, 255, 293, 297, 249, 255, 147, - 147, 296, 303, 304, 147, 248, 248, 58, 305, 306, - 248, 307, 249, 249, 144, 144, 327, 249, 143, 16, - 6, 330, 333, 338, 145, 145, 340, 118, 108, 349, - 146, 115, 116, 350, 355, 378, 147, 356, 357, 358, - 34, 35, 376, 37, 380, 370, 382, 247, 41, 42, - 43, 44, 372, 374, 255, 298, 392, 394, 212, 396, - 147, 144, 255, 347, 420, 407, 248, 424, 147, 22, - 406, 145, 408, 249, 248, 422, 425, 426, 428, 146, - 146, 249, 430, 436, 440, 147, 147, 161, 162, 441, - 165, 442, 445, 246, 446, 246, 443, 23, 24, 447, - 16, 6, 168, 169, 170, 171, 172, 173, 174, 175, - 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, - 186, 437, 187, 274, 0, 287, 146, 250, 0, 0, - 0, 0, 147, 0, 246, 256, 297, 246, 259, 0, - 0, 262, 0, 0, 427, 265, 429, 267, 431, 0, - 0, 0, 247, 0, 247, 0, 0, 246, 246, 255, - 0, 255, 0, 0, 405, 147, 0, 147, 0, 250, - 0, 248, 0, 248, 250, 275, 0, 0, 249, 0, - 249, 0, 0, 0, 251, 280, 0, 0, 292, 299, - 300, 0, 0, 247, 250, 298, 247, 0, 0, 0, - 255, 0, 255, 255, 0, 302, 147, 0, 147, 147, - 0, 0, 248, 0, 248, 248, 247, 247, 0, 249, - 0, 249, 249, 255, 255, 0, 251, 0, 0, 147, - 147, 251, 0, 0, 190, 248, 248, 0, 0, 0, - 0, 257, 249, 249, 260, 0, 251, 251, 0, 334, - 250, 251, 0, 0, 0, 0, 0, 0, 346, 0, - 339, 302, 341, 0, 252, 348, 0, 0, 0, -200, - -200, 0, -200, 0, 0, 0, -200, 354, 253, 0, - 0, 0, 0, 148, 0, 0, 0, -200, 0, 0, - -200, -212, 0, 0, 0, 359, 360, 361, 362, 363, - 364, 365, 366, 367, 368, 369, 252, 251, 0, 254, - 0, 252, 0, 375, 0, 251, 0, 0, 0, 0, - 253, 0, 0, 0, 0, 253, 252, 252, -200, -200, - -200, 252, 0, 0, 0, 0, 388, 389, 390, 391, - 253, 253, 0, 0, 0, 253, 0, 0, 0, 0, - 0, 254, 0, 0, 0, 250, 254, 250, 335, 0, - 0, 400, 0, 402, 404, 0, 399, 0, 401, 0, - 0, 254, 254, 0, 0, 0, 254, 0, 0, 0, - 352, 353, -192, -192, 0, -192, 0, 252, 0, -192, - 0, 0, 0, 0, 0, 252, 250, 0, 346, 250, - -192, 253, 0, -192, 0, 439, 0, 435, 0, 253, - 438, 0, 251, 371, 251, 0, 373, 0, 0, 250, - 250, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 448, 449, 254, 0, 0, 0, 0, 0, 0, 0, - 254, -192, -192, -192, 0, 0, 308, 309, 0, 310, - 311, 0, 0, 251, 0, 251, 251, 0, 0, 0, - 0, 0, 398, 0, 0, 0, 0, 0, 0, 34, - 35, 0, 37, 0, 0, 0, 251, 251, 416, 0, - 417, 0, 418, 0, 0, 0, 0, 141, 0, 0, - 142, 0, 252, 0, 252, 312, 313, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 253, 0, 253, 314, - 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, - 0, 0, 0, 0, -193, -193, 0, -193, 143, 16, - 6, -193, 0, 252, 0, 252, 252, 254, 0, 254, - 0, 0, -193, 0, 0, -193, 0, 253, 0, 253, - 253, 0, 0, 0, 0, 0, 252, 252, 0, 0, - 122, 123, 0, 0, 126, 127, 128, 129, 130, 131, - 253, 253, 0, 0, 0, 0, 0, 0, 254, 0, - 254, 254, 0, -193, -193, -193, 135, 136, 137, 138, - 139, 0, 193, 273, 0, 0, 0, 0, 0, 0, - 194, 254, 254, 195, 196, 197, 0, 198, 199, 200, - 201, 0, 202, 203, 204, 205, 206, 207, 208, 209, - 210, 34, 35, 0, 37, 0, 0, 0, 0, 41, - 42, 43, 44, 0, 0, 0, 0, 151, 193, 212, - 0, 0, 0, 0, 0, 0, 194, 213, 214, 195, - 196, 197, 0, 198, 199, 200, 201, 0, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 34, 35, 0, - 37, 0, 0, 0, 0, 41, 42, 43, 44, 0, - 0, 16, 6, 151, 301, 212, 0, 0, 0, 0, - 0, 0, 0, 213, 214, 0, 0, 0, 0, 0, + 0, 37, 34, 35, 0, 37, 41, 42, 43, 44, + 0, 0, 16, 6, 151, 0, 212, 0, 0, 0, + 141, 0, 0, 142, 213, 214, 0, 0, 314, 315, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 193, 336, - 0, 0, 0, 0, 0, 0, 194, 16, 6, 195, - 196, 197, 0, 198, 199, 200, 201, 0, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 34, 35, 0, - 37, 0, 0, 0, 0, 41, 42, 43, 44, 0, - 0, 0, 0, 151, 193, 212, 0, 0, 0, 0, - 0, 0, 194, 213, 214, 195, 196, 197, 0, 198, - 199, 200, 201, 0, 202, 203, 204, 205, 206, 207, - 208, 209, 210, 34, 35, 0, 37, 33, 0, 0, - 0, 41, 42, 43, 44, 0, 0, 16, 6, 151, - 0, 212, 0, 0, 0, 0, 0, 0, 0, 213, - 214, 34, 35, 36, 37, 38, 39, 40, 0, 41, - 42, 43, 44, 45, 46, 47, 0, 0, 0, 109, - 110, 0, 0, 49, -194, -194, 0, -194, 0, 0, - 0, -194, 0, 16, 6, 0, 0, 0, 0, 50, - 51, 0, -194, 0, 33, -194, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 52, 0, 0, 53, - 0, 16, 6, 29, 54, 55, 56, 57, 34, 35, - 36, 37, 38, 39, 40, 0, 41, 42, 43, 44, - 45, 46, 47, -194, -194, -194, 48, 0, 0, 0, - 49, 0, 291, 0, 0, -195, -195, 0, -195, 0, - 0, 0, -195, 0, 0, 0, 50, 51, 0, 0, - 0, 33, 0, -195, 0, 0, -195, 0, 0, 0, - 0, 0, 0, 52, 0, 0, 53, 0, 16, 6, - 29, 54, 55, 56, 57, 34, 35, 36, 37, 38, - 39, 40, 0, 41, 42, 43, 44, 45, 46, 47, - 0, 0, 0, 48, -195, -195, -195, 49, 34, 35, - 0, 37, 0, 0, 0, 140, 0, 0, 0, 0, - 0, 0, 0, 50, 51, 0, 141, 0, 33, 142, + 0, 0, 316, 317, 318, 319, 320, 321, 322, 323, + 324, 325, 326, -200, -200, 0, -200, 0, 16, 6, + -200, 143, 16, 6, 0, -201, -201, 0, -201, 0, + 0, -200, -201, 0, -200, -202, -202, 0, -202, 0, + 0, 0, -202, -201, 34, 35, -201, 37, 0, 0, + 0, 122, 123, -202, 0, 0, -202, 128, 129, 130, + 131, 0, 141, 0, 0, 142, 0, 0, 0, 0, + 0, 0, -200, -200, -200, 0, 0, 135, 136, 137, + 138, 139, 0, 0, -201, -201, -201, 0, 0, 0, + 0, 0, 0, 0, -202, -202, -202, 163, 0, 0, + 0, 0, 164, 143, 16, 6, 0, 121, 0, 0, + 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 52, 0, 0, 53, 0, 16, 6, 29, 54, 55, - 56, 57, 34, 35, 36, 37, 38, 39, 40, 0, - 41, 42, 43, 44, 45, 46, 47, 143, 16, 6, - 109, 0, 0, 0, 49, 0, 0, 0, 0, 34, - 35, 0, 37, 0, 0, 0, 0, 0, 0, 0, - 50, 51, 0, 0, 0, 0, 0, 141, 0, 0, - 142, 0, 0, 0, 0, 312, 313, 52, 0, 0, - 53, 0, 16, 6, 29, 54, 55, 56, 57, 314, - 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, - -196, -196, 0, -196, 0, 0, 0, -196, 143, 16, - 6, 0, -197, -197, 0, -197, 0, 0, -196, -197, - 0, -196, -198, -198, 0, -198, 0, 0, 0, -198, - -197, -199, -199, -197, -199, 0, 0, 0, -199, 0, - -198, 0, 0, -198, 0, 0, 0, 0, 0, -199, - 0, 0, -199, 0, 0, 0, 0, 0, 0, -196, - -196, -196, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -197, -197, -197, 0, 0, 0, 0, 0, 0, - 0, -198, -198, -198, 163, 0, 0, 0, 0, 164, - -199, -199, -199, 0, 121, 0, 0, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 132, 133, 134, 135, 136, 137, 138, 139, 410, 0, - 0, 0, 0, 411, 0, 0, 0, 0, 121, 0, - 0, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 132, 133, 134, 135, 136, 137, - 138, 139, 412, 0, 0, 0, 0, 413, 0, 0, - 0, 0, 121, 0, 0, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 132, 133, - 134, 135, 136, 137, 138, 139, 414, 0, 0, 0, - 0, 415, 0, 0, 0, 0, 121, 0, 0, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 263, 0, 132, 133, 134, 135, 136, 137, 138, 139, - 121, 0, 0, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 264, 0, 132, 133, 134, 135, - 136, 137, 138, 139, 121, 0, 0, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 379, 0, - 132, 133, 134, 135, 136, 137, 138, 139, 121, 0, - 0, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 381, 0, 132, 133, 134, 135, 136, 137, - 138, 139, 121, 0, 0, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 385, 0, 132, 133, - 134, 135, 136, 137, 138, 139, 121, 0, 0, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 397, 0, 132, 133, 134, 135, 136, 137, 138, 139, - 121, 0, 0, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 409, 0, 132, 133, 134, 135, - 136, 137, 138, 139, 121, 0, 0, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 421, 0, - 132, 133, 134, 135, 136, 137, 138, 139, 121, 0, - 0, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 423, 0, 132, 133, 134, 135, 136, 137, - 138, 139, 121, 0, 0, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 444, 0, 132, 133, - 134, 135, 136, 137, 138, 139, 121, 0, 0, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 132, 133, 134, 135, 136, 137, 138, 139, - 266, 0, 0, 0, 0, 0, 121, 0, 0, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 132, 133, 134, 135, 136, 137, 138, 139, - 269, 0, 0, 0, 0, 0, 121, 0, 0, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 132, 133, 134, 135, 136, 137, 138, 139, - 325, 0, 0, 0, 0, 0, 121, 0, 0, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 132, 133, 134, 135, 136, 137, 138, 139, - 328, 0, 0, 0, 0, 0, 121, 0, 0, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 132, 133, 134, 135, 136, 137, 138, 139, - 331, 0, 0, 0, 0, 0, 121, 0, 0, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 132, 133, 134, 135, 136, 137, 138, 139, - 332, 0, 0, 0, 0, 121, 0, 0, 122, 123, - 124, 125, 126, 127, 128, 129, 130, 131, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 132, 133, 134, 135, 136, 137, 138, 139, 268, + 0, 0, 0, 132, 133, 134, 135, 136, 137, 138, + 139, 413, 0, 0, 0, 0, 414, 0, 0, 0, 0, 121, 0, 0, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 132, 133, 134, - 135, 136, 137, 138, 139, 120, 121, 0, 0, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 0, + 135, 136, 137, 138, 139, 415, 0, 0, 0, 0, + 416, 0, 0, 0, 0, 121, 0, 0, 122, 123, + 124, 125, 126, 127, 128, 129, 130, 131, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 132, 133, 134, 135, 136, 137, 138, 139, - 337, 121, 0, 0, 122, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 132, 133, 134, - 135, 136, 137, 138, 139, 351, 121, 0, 0, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 121, + 0, 132, 133, 134, 135, 136, 137, 138, 139, 417, + 0, 0, 0, 0, 418, 0, 0, 0, 0, 121, 0, 0, 122, 123, 124, 125, 126, 127, 128, 129, - 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, - 0, 0, 0, 0, 0, 132, 133, 134, 135, 136, - 137, 138, 139, 122, 123, 0, 125, 126, 127, 128, - 129, 130, 131, 122, 123, 0, 0, 126, 127, 128, - 129, 130, 131, 0, 0, 0, 132, 133, 134, 135, - 136, 137, 138, 139, 0, 0, 132, 133, 134, 135, - 136, 137, 138, 139, 122, 123, 0, 0, 126, 127, - 128, 129, 130, 131, 122, 123, 0, 0, 126, 127, - 128, 129, 130, 131, 0, 0, 0, 0, 133, 134, - 135, 136, 137, 138, 139, 0, 0, 0, 133, 0, - 135, 136, 137, 138, 139, 122, 123, 0, 0, 0, - 0, 128, 129, 130, 131, 0, 0, 0, 0, 0, + 130, 131, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 264, 0, 132, 133, 134, 135, 136, + 137, 138, 139, 121, 0, 0, 122, 123, 124, 125, + 126, 127, 128, 129, 130, 131, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 265, 0, 132, + 133, 134, 135, 136, 137, 138, 139, 121, 0, 0, + 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 135, 136, 137, 138, 139 + 0, 382, 0, 132, 133, 134, 135, 136, 137, 138, + 139, 121, 0, 0, 122, 123, 124, 125, 126, 127, + 128, 129, 130, 131, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 384, 0, 132, 133, 134, + 135, 136, 137, 138, 139, 121, 0, 0, 122, 123, + 124, 125, 126, 127, 128, 129, 130, 131, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 388, + 0, 132, 133, 134, 135, 136, 137, 138, 139, 121, + 0, 0, 122, 123, 124, 125, 126, 127, 128, 129, + 130, 131, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 400, 0, 132, 133, 134, 135, 136, + 137, 138, 139, 121, 0, 0, 122, 123, 124, 125, + 126, 127, 128, 129, 130, 131, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 412, 0, 132, + 133, 134, 135, 136, 137, 138, 139, 121, 0, 0, + 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 424, 0, 132, 133, 134, 135, 136, 137, 138, + 139, 121, 0, 0, 122, 123, 124, 125, 126, 127, + 128, 129, 130, 131, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 426, 0, 132, 133, 134, + 135, 136, 137, 138, 139, 121, 0, 0, 122, 123, + 124, 125, 126, 127, 128, 129, 130, 131, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 447, + 0, 132, 133, 134, 135, 136, 137, 138, 139, 121, + 0, 0, 122, 123, 124, 125, 126, 127, 128, 129, + 130, 131, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 132, 133, 134, 135, 136, + 137, 138, 139, 267, 0, 0, 0, 0, 0, 121, + 0, 0, 122, 123, 124, 125, 126, 127, 128, 129, + 130, 131, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 132, 133, 134, 135, 136, + 137, 138, 139, 270, 0, 0, 0, 0, 0, 121, + 0, 0, 122, 123, 124, 125, 126, 127, 128, 129, + 130, 131, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 132, 133, 134, 135, 136, + 137, 138, 139, 327, 0, 0, 0, 0, 0, 121, + 0, 0, 122, 123, 124, 125, 126, 127, 128, 129, + 130, 131, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 132, 133, 134, 135, 136, + 137, 138, 139, 330, 0, 0, 0, 0, 0, 121, + 0, 0, 122, 123, 124, 125, 126, 127, 128, 129, + 130, 131, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 132, 133, 134, 135, 136, + 137, 138, 139, 333, 0, 0, 0, 0, 0, 121, + 0, 0, 122, 123, 124, 125, 126, 127, 128, 129, + 130, 131, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 132, 133, 134, 135, 136, + 137, 138, 139, 334, 0, 0, 0, 0, 121, 0, + 0, 122, 123, 124, 125, 126, 127, 128, 129, 130, + 131, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 132, 133, 134, 135, 136, 137, + 138, 139, 269, 0, 121, 0, 0, 122, 123, 124, + 125, 126, 127, 128, 129, 130, 131, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 132, 133, 134, 135, 136, 137, 138, 139, 120, 121, + 0, 0, 122, 123, 124, 125, 126, 127, 128, 129, + 130, 131, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 132, 133, 134, 135, 136, + 137, 138, 139, 340, 121, 0, 0, 122, 123, 124, + 125, 126, 127, 128, 129, 130, 131, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 132, 133, 134, 135, 136, 137, 138, 139, 354, 121, + 0, 0, 122, 123, 124, 125, 126, 127, 128, 129, + 130, 131, 121, 0, 0, 122, 123, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, + 137, 138, 139, 0, 0, 0, 0, 0, 132, 133, + 134, 135, 136, 137, 138, 139, 122, 123, 0, 125, + 126, 127, 128, 129, 130, 131, 122, 123, 0, 0, + 126, 127, 128, 129, 130, 131, 0, 0, 0, 132, + 133, 134, 135, 136, 137, 138, 139, 0, 0, 132, + 133, 134, 135, 136, 137, 138, 139, 122, 123, 0, + 0, 126, 127, 128, 129, 130, 131, 122, 123, 0, + 0, 126, 127, 128, 129, 130, 131, 0, 0, 0, + 0, 133, 134, 135, 136, 137, 138, 139, 0, 0, + 0, 133, 0, 135, 136, 137, 138, 139 }; const short parser::yycheck_[] = { - 0, 48, 97, 3, 4, 20, 282, 0, 8, 3, - 4, 76, 58, 282, 282, 58, 54, 95, 30, 54, - 54, 76, 54, 64, 102, 25, 55, 55, 106, 64, - 62, 60, 60, 102, 34, 35, 55, 68, 69, 64, - 34, 35, 80, 11, 12, 13, 14, 15, 60, 49, - 101, 55, 100, 101, 100, 101, 60, 100, 101, 96, - 97, 98, 109, 94, 95, 96, 97, 98, 55, 55, - 55, 101, 55, 60, 60, 60, 76, 60, 55, 11, - 58, 55, 76, 60, 55, 151, 60, 19, 55, 60, - 22, 23, 24, 60, 26, 27, 28, 29, 98, 31, + 0, 97, 48, 3, 4, 76, 284, 20, 8, 3, + 4, 284, 193, 76, 284, 58, 54, 198, 16, 11, + 12, 13, 14, 15, 58, 25, 95, 55, 54, 30, + 102, 54, 60, 102, 34, 35, 54, 106, 64, 62, + 34, 35, 40, 41, 42, 43, 44, 45, 46, 49, + 48, 49, 50, 51, 52, 53, 54, 100, 101, 60, + 58, 59, 80, 109, 62, 0, 100, 101, 64, 55, + 40, 41, 101, 43, 60, 64, 76, 47, 55, 55, + 78, 79, 76, 60, 54, 96, 97, 98, 58, 55, + 58, 61, 62, 54, 60, 276, 55, 95, 98, 54, + 98, 60, 100, 101, 102, 103, 104, 105, 106, 101, + 101, 55, 100, 101, 62, 148, 60, 40, 41, 151, + 43, 55, 155, 55, 47, 158, 60, 55, 60, 99, + 100, 101, 60, 64, 55, 58, 55, 54, 61, 60, + 55, 60, 142, 55, 151, 60, 56, 425, 60, 149, + 58, 151, 425, 105, 106, 425, 156, 151, 62, 159, + 58, 193, 54, 62, 58, 60, 198, 94, 95, 96, + 97, 98, 59, 54, 62, 54, 99, 100, 101, 64, + 251, 213, 214, 54, 54, 217, 193, 54, 251, 189, + 203, 198, 54, 193, 54, 63, 54, 54, 198, 193, + 64, 382, 27, 384, 198, 64, 213, 214, 64, 58, + 217, 64, 64, 213, 214, 54, 64, 217, 64, 213, + 214, 64, 54, 217, 59, 55, 106, 54, 54, 26, + 301, 302, 68, 69, 63, 63, 54, 54, 301, 302, + 273, 64, 423, 59, 276, 426, 59, 59, 54, 54, + 47, 251, 284, 50, 51, 64, 54, 251, 94, 95, + 96, 97, 98, 296, 297, 446, 447, 54, 54, 276, + 64, 64, 25, 64, 30, 64, 276, 284, 349, 64, + 64, 64, 276, 64, 284, 285, 349, 55, 55, 55, + 284, 55, 388, 64, 64, 64, 329, 8, 425, 332, + 8, 301, 302, 8, 217, -1, 203, 301, 302, 106, + 107, -1, 109, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 121, 122, 123, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, + 137, 138, 139, -1, 141, -1, 379, -1, -1, 349, + 382, -1, 384, -1, -1, 349, -1, 154, -1, -1, + 157, -1, 395, 160, 397, -1, 399, 164, 414, 166, + 416, -1, 418, -1, -1, 382, -1, 384, -1, -1, + -1, -1, 382, -1, 384, -1, -1, 387, 382, -1, + 384, 423, -1, 425, 426, -1, -1, 194, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 151, -1, -1, + 207, -1, -1, 151, 446, 447, 423, -1, 425, 426, + -1, -1, -1, 423, -1, 425, 426, -1, -1, 423, + -1, 425, 426, -1, -1, -1, -1, -1, -1, 446, + 447, 151, -1, -1, -1, -1, 446, 447, -1, 193, + -1, -1, 446, 447, 198, 193, 40, 41, -1, 43, + 198, -1, -1, -1, 48, 49, 50, 51, 151, 213, + 214, -1, 269, 217, 58, 213, 214, -1, -1, 217, + -1, -1, -1, 193, 281, -1, 283, -1, 198, 286, + -1, -1, -1, -1, 151, -1, -1, -1, -1, -1, + -1, 298, -1, 213, 214, -1, -1, 217, -1, -1, + 193, -1, -1, -1, -1, 198, 100, 101, -1, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, + 213, 214, 276, -1, 217, -1, 193, 334, 276, -1, + 284, 198, -1, 151, -1, -1, 284, -1, -1, -1, + 151, -1, -1, -1, -1, -1, 213, 214, -1, -1, + 217, 358, 359, 360, 361, -1, 276, -1, -1, -1, + -1, -1, -1, -1, 284, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 193, 383, -1, 385, 386, + 198, -1, 193, 276, -1, -1, -1, 198, -1, -1, + -1, 284, -1, -1, -1, 213, 214, -1, -1, 217, + -1, -1, 213, 214, -1, -1, 217, -1, -1, 276, + -1, -1, -1, -1, -1, -1, -1, 284, -1, -1, + 427, -1, 40, 41, -1, 43, -1, -1, 382, 47, + 384, -1, -1, -1, 382, -1, 384, -1, -1, -1, + 58, 40, 41, 61, 43, -1, -1, -1, -1, 48, + 49, 50, 51, -1, -1, -1, -1, -1, 276, 58, + -1, -1, 382, -1, 384, 276, 284, 66, 67, 423, + -1, 425, 426, 284, -1, 423, -1, 425, 426, -1, + -1, 99, 100, 101, -1, -1, -1, -1, -1, 382, + -1, 384, 446, 447, -1, -1, -1, -1, 446, 447, + -1, 100, 101, 423, -1, 425, 426, -1, -1, -1, + -1, -1, -1, -1, -1, 382, -1, 384, -1, 17, + 18, -1, 20, 21, -1, -1, 446, 447, -1, -1, + 423, -1, 425, 426, 40, 41, -1, 43, -1, -1, + -1, 47, 40, 41, -1, 43, -1, -1, -1, -1, + -1, -1, 58, 446, 447, 61, 423, -1, 425, 426, + 58, -1, -1, 61, 382, -1, 384, -1, 66, 67, + -1, 382, -1, 384, -1, -1, -1, -1, -1, 446, + 447, -1, 80, 81, 82, 83, 84, 85, 86, 87, + 88, 89, 90, 99, 100, 101, -1, -1, -1, -1, + -1, 99, 100, 101, -1, 423, -1, 425, 426, -1, + -1, -1, 423, -1, 425, 426, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 11, -1, 446, 447, + -1, -1, -1, -1, 19, 446, 447, 22, 23, 24, + -1, 26, 27, 28, 29, -1, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, -1, 43, -1, + -1, -1, -1, 48, 49, 50, 51, -1, -1, -1, + -1, 56, 57, 58, -1, -1, -1, -1, -1, -1, + 11, 66, 67, -1, -1, -1, -1, -1, 19, -1, + -1, 22, 23, 24, -1, 26, 27, 28, 29, -1, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, -1, 43, 16, -1, 100, 101, 48, 49, 50, + 51, -1, -1, -1, -1, 56, 57, 58, -1, -1, + -1, -1, -1, -1, -1, 66, 67, 40, 41, 42, + 43, 44, 45, 46, -1, 48, 49, 50, 51, 52, + 53, 54, -1, -1, -1, 58, -1, -1, -1, 62, + -1, 64, -1, -1, 40, 41, -1, 43, -1, 100, + 101, 47, -1, -1, -1, 78, 79, -1, -1, -1, + 16, -1, 58, -1, -1, 61, -1, -1, -1, -1, + -1, -1, 95, -1, -1, 98, -1, 100, 101, 102, + 103, 104, 105, 106, 40, 41, 42, 43, 44, 45, + 46, -1, 48, 49, 50, 51, 52, 53, 54, -1, + -1, -1, 58, 99, 100, 101, 62, 40, 41, -1, + 43, -1, -1, -1, 47, -1, -1, 40, 41, -1, + 43, -1, 78, 79, 47, 58, -1, 16, 61, -1, + -1, -1, -1, -1, -1, 58, -1, -1, 61, 95, + -1, -1, 98, -1, 100, 101, 102, 103, 104, 105, + 106, 40, 41, 42, 43, 44, 45, 46, -1, 48, + 49, 50, 51, 52, 53, 54, 99, 100, 101, 58, + -1, -1, -1, 62, -1, -1, 99, 100, 101, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 78, + 79, -1, -1, 68, 69, -1, -1, 72, 73, 74, + 75, 76, 77, -1, -1, -1, 95, -1, -1, 98, + -1, 100, 101, 102, 103, 104, 105, 106, 12, 94, + 95, 96, 97, 98, -1, 19, -1, -1, 22, 23, + 24, -1, 26, 27, 28, 29, -1, 31, 32, 33, + 34, 35, 36, 37, 38, 39, 40, 41, -1, 43, + -1, -1, -1, -1, 48, 49, 50, 51, -1, -1, + -1, -1, 56, -1, 58, -1, -1, -1, -1, -1, + -1, -1, 66, 67, 12, -1, -1, -1, -1, -1, + -1, 19, -1, -1, 22, 23, 24, -1, 26, 27, + 28, 29, -1, 31, 32, 33, 34, 35, 36, 37, + 38, 39, 40, 41, -1, 43, 100, 101, -1, -1, + 48, 49, 50, 51, -1, -1, -1, -1, 56, -1, + 58, -1, -1, -1, -1, -1, -1, 19, 66, 67, + 22, 23, 24, -1, 26, 27, 28, 29, -1, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, - 54, 43, 40, 41, 54, 43, 48, 49, 50, 51, - 48, 49, 50, 51, 56, 57, 58, 193, 62, 64, - 58, 55, 198, 101, 66, 67, 60, 56, 66, 67, - 55, 58, 142, 54, 151, 60, 422, 213, 214, 149, - 62, 151, 218, 422, 422, 58, 156, 151, 54, 159, - 105, 106, 62, 151, 58, 60, 59, 54, 100, 101, - 151, 62, 100, 101, 94, 95, 96, 97, 98, 40, - 41, 54, 43, 64, 54, 250, 193, 54, 203, 189, - 54, 198, 54, 193, 54, 250, 64, 58, 198, 193, - 61, 64, 54, 54, 198, 193, 213, 214, 274, 63, - 198, 218, 193, 213, 214, 64, 282, 198, 218, 213, - 214, 58, 64, 64, 218, 213, 214, 26, 64, 64, - 218, 64, 213, 214, 299, 300, 54, 218, 99, 100, - 101, 54, 59, 55, 299, 300, 27, 106, 47, 63, - 250, 50, 51, 63, 54, 64, 250, 54, 54, 54, - 40, 41, 54, 43, 54, 59, 64, 274, 48, 49, - 50, 51, 59, 59, 274, 282, 54, 54, 58, 54, - 274, 346, 282, 283, 25, 64, 274, 30, 282, 8, - 385, 346, 64, 274, 282, 64, 64, 64, 64, 299, - 300, 282, 64, 64, 55, 299, 300, 106, 107, 55, - 109, 55, 64, 379, 64, 381, 55, 8, 8, 64, - 100, 101, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 422, 141, 193, -1, 203, 346, 151, -1, -1, - -1, -1, 346, -1, 420, 154, 422, 423, 157, -1, - -1, 160, -1, -1, 411, 164, 413, 166, 415, -1, - -1, -1, 379, -1, 381, -1, -1, 443, 444, 379, - -1, 381, -1, -1, 384, 379, -1, 381, -1, 193, - -1, 379, -1, 381, 198, 194, -1, -1, 379, -1, - 381, -1, -1, -1, 151, 198, -1, -1, 207, 213, - 214, -1, -1, 420, 218, 422, 423, -1, -1, -1, - 420, -1, 422, 423, -1, 218, 420, -1, 422, 423, - -1, -1, 420, -1, 422, 423, 443, 444, -1, 420, - -1, 422, 423, 443, 444, -1, 193, -1, -1, 443, - 444, 198, -1, -1, 148, 443, 444, -1, -1, -1, - -1, 155, 443, 444, 158, -1, 213, 214, -1, 268, - 274, 218, -1, -1, -1, -1, -1, -1, 282, -1, - 279, 274, 281, -1, 151, 284, -1, -1, -1, 40, - 41, -1, 43, -1, -1, -1, 47, 296, 151, -1, - -1, -1, -1, 54, -1, -1, -1, 58, -1, -1, - 61, 62, -1, -1, -1, 314, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 324, 193, 274, -1, 151, - -1, 198, -1, 332, -1, 282, -1, -1, -1, -1, - 193, -1, -1, -1, -1, 198, 213, 214, 99, 100, - 101, 218, -1, -1, -1, -1, 355, 356, 357, 358, - 213, 214, -1, -1, -1, 218, -1, -1, -1, -1, - -1, 193, -1, -1, -1, 379, 198, 381, 272, -1, - -1, 380, -1, 382, 383, -1, 379, -1, 381, -1, - -1, 213, 214, -1, -1, -1, 218, -1, -1, -1, - 294, 295, 40, 41, -1, 43, -1, 274, -1, 47, - -1, -1, -1, -1, -1, 282, 420, -1, 422, 423, - 58, 274, -1, 61, -1, 424, -1, 420, -1, 282, - 423, -1, 379, 327, 381, -1, 330, -1, -1, 443, - 444, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 443, 444, 274, -1, -1, -1, -1, -1, -1, -1, - 282, 99, 100, 101, -1, -1, 17, 18, -1, 20, - 21, -1, -1, 420, -1, 422, 423, -1, -1, -1, - -1, -1, 376, -1, -1, -1, -1, -1, -1, 40, - 41, -1, 43, -1, -1, -1, 443, 444, 392, -1, - 394, -1, 396, -1, -1, -1, -1, 58, -1, -1, - 61, -1, 379, -1, 381, 66, 67, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 379, -1, 381, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - -1, -1, -1, -1, 40, 41, -1, 43, 99, 100, - 101, 47, -1, 420, -1, 422, 423, 379, -1, 381, - -1, -1, 58, -1, -1, 61, -1, 420, -1, 422, - 423, -1, -1, -1, -1, -1, 443, 444, -1, -1, - 68, 69, -1, -1, 72, 73, 74, 75, 76, 77, - 443, 444, -1, -1, -1, -1, -1, -1, 420, -1, - 422, 423, -1, 99, 100, 101, 94, 95, 96, 97, - 98, -1, 11, 12, -1, -1, -1, -1, -1, -1, - 19, 443, 444, 22, 23, 24, -1, 26, 27, 28, - 29, -1, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, -1, 43, -1, -1, -1, -1, 48, - 49, 50, 51, -1, -1, -1, -1, 56, 11, 58, - -1, -1, -1, -1, -1, -1, 19, 66, 67, 22, - 23, 24, -1, 26, 27, 28, 29, -1, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, -1, - 43, -1, -1, -1, -1, 48, 49, 50, 51, -1, - -1, 100, 101, 56, 57, 58, -1, -1, -1, -1, - -1, -1, -1, 66, 67, -1, -1, -1, -1, -1, + -1, 43, 40, 41, -1, 43, 48, 49, 50, 51, + -1, -1, 100, 101, 56, -1, 58, -1, -1, -1, + 58, -1, -1, 61, 66, 67, -1, -1, 66, 67, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 11, 12, - -1, -1, -1, -1, -1, -1, 19, 100, 101, 22, - 23, 24, -1, 26, 27, 28, 29, -1, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, -1, - 43, -1, -1, -1, -1, 48, 49, 50, 51, -1, - -1, -1, -1, 56, 11, 58, -1, -1, -1, -1, - -1, -1, 19, 66, 67, 22, 23, 24, -1, 26, - 27, 28, 29, -1, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, -1, 43, 16, -1, -1, - -1, 48, 49, 50, 51, -1, -1, 100, 101, 56, - -1, 58, -1, -1, -1, -1, -1, -1, -1, 66, - 67, 40, 41, 42, 43, 44, 45, 46, -1, 48, - 49, 50, 51, 52, 53, 54, -1, -1, -1, 58, - 59, -1, -1, 62, 40, 41, -1, 43, -1, -1, - -1, 47, -1, 100, 101, -1, -1, -1, -1, 78, - 79, -1, 58, -1, 16, 61, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 95, -1, -1, 98, - -1, 100, 101, 102, 103, 104, 105, 106, 40, 41, - 42, 43, 44, 45, 46, -1, 48, 49, 50, 51, - 52, 53, 54, 99, 100, 101, 58, -1, -1, -1, - 62, -1, 64, -1, -1, 40, 41, -1, 43, -1, - -1, -1, 47, -1, -1, -1, 78, 79, -1, -1, - -1, 16, -1, 58, -1, -1, 61, -1, -1, -1, - -1, -1, -1, 95, -1, -1, 98, -1, 100, 101, - 102, 103, 104, 105, 106, 40, 41, 42, 43, 44, - 45, 46, -1, 48, 49, 50, 51, 52, 53, 54, - -1, -1, -1, 58, 99, 100, 101, 62, 40, 41, - -1, 43, -1, -1, -1, 47, -1, -1, -1, -1, - -1, -1, -1, 78, 79, -1, 58, -1, 16, 61, + -1, -1, 80, 81, 82, 83, 84, 85, 86, 87, + 88, 89, 90, 40, 41, -1, 43, -1, 100, 101, + 47, 99, 100, 101, -1, 40, 41, -1, 43, -1, + -1, 58, 47, -1, 61, 40, 41, -1, 43, -1, + -1, -1, 47, 58, 40, 41, 61, 43, -1, -1, + -1, 68, 69, 58, -1, -1, 61, 74, 75, 76, + 77, -1, 58, -1, -1, 61, -1, -1, -1, -1, + -1, -1, 99, 100, 101, -1, -1, 94, 95, 96, + 97, 98, -1, -1, 99, 100, 101, -1, -1, -1, + -1, -1, -1, -1, 99, 100, 101, 55, -1, -1, + -1, -1, 60, 99, 100, 101, -1, 65, -1, -1, + 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 95, -1, -1, 98, -1, 100, 101, 102, 103, 104, - 105, 106, 40, 41, 42, 43, 44, 45, 46, -1, - 48, 49, 50, 51, 52, 53, 54, 99, 100, 101, - 58, -1, -1, -1, 62, -1, -1, -1, -1, 40, - 41, -1, 43, -1, -1, -1, -1, -1, -1, -1, - 78, 79, -1, -1, -1, -1, -1, 58, -1, -1, - 61, -1, -1, -1, -1, 66, 67, 95, -1, -1, - 98, -1, 100, 101, 102, 103, 104, 105, 106, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 40, 41, -1, 43, -1, -1, -1, 47, 99, 100, - 101, -1, 40, 41, -1, 43, -1, -1, 58, 47, - -1, 61, 40, 41, -1, 43, -1, -1, -1, 47, - 58, 40, 41, 61, 43, -1, -1, -1, 47, -1, - 58, -1, -1, 61, -1, -1, -1, -1, -1, 58, - -1, -1, 61, -1, -1, -1, -1, -1, -1, 99, - 100, 101, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 99, 100, 101, -1, -1, -1, -1, -1, -1, - -1, 99, 100, 101, 55, -1, -1, -1, -1, 60, - 99, 100, 101, -1, 65, -1, -1, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 91, 92, 93, 94, 95, 96, 97, 98, 55, -1, - -1, -1, -1, 60, -1, -1, -1, -1, 65, -1, - -1, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 91, 92, 93, 94, 95, 96, - 97, 98, 55, -1, -1, -1, -1, 60, -1, -1, - -1, -1, 65, -1, -1, 68, 69, 70, 71, 72, - 73, 74, 75, 76, 77, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 91, 92, - 93, 94, 95, 96, 97, 98, 55, -1, -1, -1, - -1, 60, -1, -1, -1, -1, 65, -1, -1, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 55, -1, 91, 92, 93, 94, 95, 96, 97, 98, - 65, -1, -1, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 55, -1, 91, 92, 93, 94, - 95, 96, 97, 98, 65, -1, -1, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 55, -1, - 91, 92, 93, 94, 95, 96, 97, 98, 65, -1, - -1, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 55, -1, 91, 92, 93, 94, 95, 96, - 97, 98, 65, -1, -1, 68, 69, 70, 71, 72, - 73, 74, 75, 76, 77, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 55, -1, 91, 92, - 93, 94, 95, 96, 97, 98, 65, -1, -1, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 55, -1, 91, 92, 93, 94, 95, 96, 97, 98, - 65, -1, -1, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 55, -1, 91, 92, 93, 94, - 95, 96, 97, 98, 65, -1, -1, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 55, -1, - 91, 92, 93, 94, 95, 96, 97, 98, 65, -1, - -1, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 55, -1, 91, 92, 93, 94, 95, 96, - 97, 98, 65, -1, -1, 68, 69, 70, 71, 72, - 73, 74, 75, 76, 77, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 55, -1, 91, 92, - 93, 94, 95, 96, 97, 98, 65, -1, -1, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 91, 92, 93, 94, 95, 96, 97, 98, - 59, -1, -1, -1, -1, -1, 65, -1, -1, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 91, 92, 93, 94, 95, 96, 97, 98, - 59, -1, -1, -1, -1, -1, 65, -1, -1, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 91, 92, 93, 94, 95, 96, 97, 98, - 59, -1, -1, -1, -1, -1, 65, -1, -1, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 91, 92, 93, 94, 95, 96, 97, 98, - 59, -1, -1, -1, -1, -1, 65, -1, -1, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 91, 92, 93, 94, 95, 96, 97, 98, - 59, -1, -1, -1, -1, -1, 65, -1, -1, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 91, 92, 93, 94, 95, 96, 97, 98, - 60, -1, -1, -1, -1, 65, -1, -1, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 77, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 91, 92, 93, 94, 95, 96, 97, 98, 63, + -1, -1, -1, 91, 92, 93, 94, 95, 96, 97, + 98, 55, -1, -1, -1, -1, 60, -1, -1, -1, -1, 65, -1, -1, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 91, 92, 93, - 94, 95, 96, 97, 98, 64, 65, -1, -1, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, -1, + 94, 95, 96, 97, 98, 55, -1, -1, -1, -1, + 60, -1, -1, -1, -1, 65, -1, -1, 68, 69, + 70, 71, 72, 73, 74, 75, 76, 77, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 91, 92, 93, 94, 95, 96, 97, 98, - 64, 65, -1, -1, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 77, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 91, 92, 93, - 94, 95, 96, 97, 98, 64, 65, -1, -1, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 65, + -1, 91, 92, 93, 94, 95, 96, 97, 98, 55, + -1, -1, -1, -1, 60, -1, -1, -1, -1, 65, -1, -1, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 91, 92, 93, 94, 95, 96, 97, 98, - -1, -1, -1, -1, -1, 91, 92, 93, 94, 95, - 96, 97, 98, 68, 69, -1, 71, 72, 73, 74, - 75, 76, 77, 68, 69, -1, -1, 72, 73, 74, - 75, 76, 77, -1, -1, -1, 91, 92, 93, 94, - 95, 96, 97, 98, -1, -1, 91, 92, 93, 94, - 95, 96, 97, 98, 68, 69, -1, -1, 72, 73, - 74, 75, 76, 77, 68, 69, -1, -1, 72, 73, - 74, 75, 76, 77, -1, -1, -1, -1, 92, 93, - 94, 95, 96, 97, 98, -1, -1, -1, 92, -1, - 94, 95, 96, 97, 98, 68, 69, -1, -1, -1, - -1, 74, 75, 76, 77, -1, -1, -1, -1, -1, + 76, 77, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 55, -1, 91, 92, 93, 94, 95, + 96, 97, 98, 65, -1, -1, 68, 69, 70, 71, + 72, 73, 74, 75, 76, 77, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 55, -1, 91, + 92, 93, 94, 95, 96, 97, 98, 65, -1, -1, + 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 94, 95, 96, 97, 98 + -1, 55, -1, 91, 92, 93, 94, 95, 96, 97, + 98, 65, -1, -1, 68, 69, 70, 71, 72, 73, + 74, 75, 76, 77, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 55, -1, 91, 92, 93, + 94, 95, 96, 97, 98, 65, -1, -1, 68, 69, + 70, 71, 72, 73, 74, 75, 76, 77, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 55, + -1, 91, 92, 93, 94, 95, 96, 97, 98, 65, + -1, -1, 68, 69, 70, 71, 72, 73, 74, 75, + 76, 77, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 55, -1, 91, 92, 93, 94, 95, + 96, 97, 98, 65, -1, -1, 68, 69, 70, 71, + 72, 73, 74, 75, 76, 77, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 55, -1, 91, + 92, 93, 94, 95, 96, 97, 98, 65, -1, -1, + 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 55, -1, 91, 92, 93, 94, 95, 96, 97, + 98, 65, -1, -1, 68, 69, 70, 71, 72, 73, + 74, 75, 76, 77, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 55, -1, 91, 92, 93, + 94, 95, 96, 97, 98, 65, -1, -1, 68, 69, + 70, 71, 72, 73, 74, 75, 76, 77, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 55, + -1, 91, 92, 93, 94, 95, 96, 97, 98, 65, + -1, -1, 68, 69, 70, 71, 72, 73, 74, 75, + 76, 77, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 91, 92, 93, 94, 95, + 96, 97, 98, 59, -1, -1, -1, -1, -1, 65, + -1, -1, 68, 69, 70, 71, 72, 73, 74, 75, + 76, 77, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 91, 92, 93, 94, 95, + 96, 97, 98, 59, -1, -1, -1, -1, -1, 65, + -1, -1, 68, 69, 70, 71, 72, 73, 74, 75, + 76, 77, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 91, 92, 93, 94, 95, + 96, 97, 98, 59, -1, -1, -1, -1, -1, 65, + -1, -1, 68, 69, 70, 71, 72, 73, 74, 75, + 76, 77, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 91, 92, 93, 94, 95, + 96, 97, 98, 59, -1, -1, -1, -1, -1, 65, + -1, -1, 68, 69, 70, 71, 72, 73, 74, 75, + 76, 77, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 91, 92, 93, 94, 95, + 96, 97, 98, 59, -1, -1, -1, -1, -1, 65, + -1, -1, 68, 69, 70, 71, 72, 73, 74, 75, + 76, 77, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 91, 92, 93, 94, 95, + 96, 97, 98, 60, -1, -1, -1, -1, 65, -1, + -1, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 77, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 91, 92, 93, 94, 95, 96, + 97, 98, 63, -1, 65, -1, -1, 68, 69, 70, + 71, 72, 73, 74, 75, 76, 77, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 91, 92, 93, 94, 95, 96, 97, 98, 64, 65, + -1, -1, 68, 69, 70, 71, 72, 73, 74, 75, + 76, 77, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 91, 92, 93, 94, 95, + 96, 97, 98, 64, 65, -1, -1, 68, 69, 70, + 71, 72, 73, 74, 75, 76, 77, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 91, 92, 93, 94, 95, 96, 97, 98, 64, 65, + -1, -1, 68, 69, 70, 71, 72, 73, 74, 75, + 76, 77, 65, -1, -1, 68, 69, 70, 71, 72, + 73, 74, 75, 76, 77, 91, 92, 93, 94, 95, + 96, 97, 98, -1, -1, -1, -1, -1, 91, 92, + 93, 94, 95, 96, 97, 98, 68, 69, -1, 71, + 72, 73, 74, 75, 76, 77, 68, 69, -1, -1, + 72, 73, 74, 75, 76, 77, -1, -1, -1, 91, + 92, 93, 94, 95, 96, 97, 98, -1, -1, 91, + 92, 93, 94, 95, 96, 97, 98, 68, 69, -1, + -1, 72, 73, 74, 75, 76, 77, 68, 69, -1, + -1, 72, 73, 74, 75, 76, 77, -1, -1, -1, + -1, 92, 93, 94, 95, 96, 97, 98, -1, -1, + -1, 92, -1, 94, 95, 96, 97, 98 }; const unsigned char parser::yystos_[] = { 0, 11, 12, 13, 14, 15, 101, 117, 118, 119, - 120, 121, 122, 123, 124, 189, 100, 189, 190, 190, + 120, 121, 122, 123, 124, 191, 100, 191, 192, 192, 54, 0, 119, 120, 121, 54, 80, 64, 64, 102, - 192, 169, 189, 16, 40, 41, 42, 43, 44, 45, + 194, 171, 191, 16, 40, 41, 42, 43, 44, 45, 46, 48, 49, 50, 51, 52, 53, 54, 58, 62, - 78, 79, 95, 98, 103, 104, 105, 106, 154, 159, - 160, 161, 162, 163, 164, 165, 166, 167, 168, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, - 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, - 193, 194, 195, 196, 197, 198, 55, 55, 60, 58, - 189, 190, 58, 189, 190, 58, 54, 54, 154, 58, - 59, 154, 170, 171, 189, 154, 154, 105, 106, 101, + 78, 79, 95, 98, 103, 104, 105, 106, 156, 161, + 162, 163, 164, 165, 166, 167, 168, 169, 170, 174, + 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, + 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, + 195, 196, 197, 198, 199, 200, 55, 55, 60, 58, + 191, 192, 58, 191, 192, 58, 54, 54, 156, 58, + 59, 156, 172, 173, 191, 156, 156, 105, 106, 101, 64, 65, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 91, 92, 93, 94, 95, 96, 97, 98, - 47, 58, 61, 99, 166, 167, 189, 190, 54, 62, - 64, 56, 127, 189, 58, 54, 62, 58, 54, 62, - 58, 154, 154, 55, 60, 154, 60, 59, 154, 154, - 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, - 154, 154, 154, 154, 154, 154, 154, 154, 189, 62, - 170, 171, 189, 11, 19, 22, 23, 24, 26, 27, + 47, 58, 61, 99, 168, 169, 191, 192, 54, 62, + 64, 56, 130, 191, 58, 54, 62, 58, 54, 62, + 58, 156, 156, 55, 60, 156, 60, 59, 156, 156, + 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, + 156, 156, 156, 156, 156, 156, 156, 156, 191, 62, + 172, 173, 191, 11, 19, 22, 23, 24, 26, 27, 28, 29, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 57, 58, 66, 67, 125, 126, 127, 128, 130, - 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, - 151, 152, 153, 156, 157, 158, 164, 165, 175, 176, - 179, 183, 184, 185, 186, 189, 154, 170, 189, 154, - 170, 189, 154, 55, 55, 154, 59, 154, 63, 59, - 189, 55, 54, 12, 128, 154, 64, 54, 64, 54, - 125, 54, 54, 54, 54, 95, 192, 196, 63, 64, - 64, 64, 154, 64, 54, 54, 58, 164, 165, 179, - 179, 57, 125, 64, 64, 64, 64, 64, 17, 18, - 20, 21, 66, 67, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 59, 55, 54, 59, 55, - 54, 59, 60, 59, 154, 170, 12, 64, 55, 154, - 27, 154, 129, 156, 157, 158, 179, 189, 154, 63, - 63, 64, 170, 170, 154, 54, 54, 54, 54, 154, - 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, - 59, 170, 59, 170, 59, 154, 54, 55, 64, 55, - 54, 55, 64, 30, 60, 55, 55, 55, 154, 154, - 154, 154, 54, 55, 54, 55, 54, 55, 170, 125, - 154, 125, 154, 155, 154, 189, 127, 64, 64, 55, - 55, 60, 55, 60, 55, 60, 170, 170, 170, 55, - 25, 55, 64, 55, 30, 64, 64, 171, 64, 171, - 64, 171, 55, 55, 55, 125, 64, 129, 125, 154, - 55, 55, 55, 55, 55, 64, 64, 64, 125, 125 + 39, 57, 58, 66, 67, 125, 126, 128, 129, 130, + 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, + 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, + 152, 153, 154, 155, 158, 159, 160, 166, 167, 177, + 178, 181, 185, 186, 187, 188, 191, 156, 172, 191, + 156, 172, 191, 156, 55, 55, 156, 59, 156, 63, + 59, 191, 55, 54, 12, 125, 127, 156, 64, 54, + 64, 54, 125, 54, 54, 54, 54, 95, 194, 198, + 63, 64, 64, 64, 156, 64, 54, 54, 58, 166, + 167, 181, 181, 57, 126, 64, 64, 64, 64, 64, + 17, 18, 20, 21, 66, 67, 80, 81, 82, 83, + 84, 85, 86, 87, 88, 89, 90, 59, 55, 54, + 59, 55, 54, 59, 60, 59, 156, 172, 12, 125, + 64, 55, 156, 27, 156, 131, 158, 159, 160, 181, + 191, 156, 63, 63, 64, 172, 172, 156, 54, 54, + 54, 54, 156, 156, 156, 156, 156, 156, 156, 156, + 156, 156, 156, 59, 172, 59, 172, 59, 156, 54, + 55, 64, 55, 54, 55, 64, 30, 60, 55, 55, + 55, 156, 156, 156, 156, 54, 55, 54, 55, 54, + 55, 172, 125, 156, 125, 156, 157, 156, 191, 130, + 64, 64, 55, 55, 60, 55, 60, 55, 60, 172, + 172, 172, 55, 25, 55, 64, 55, 30, 64, 64, + 173, 64, 173, 64, 173, 55, 55, 55, 125, 64, + 131, 125, 156, 55, 55, 55, 55, 55, 64, 64, + 64, 125, 125 }; const unsigned char @@ -4517,25 +4560,25 @@ namespace xsk { namespace gsc { namespace s4 { 119, 120, 121, 121, 121, 121, 121, 122, 123, 124, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 126, 126, 127, 127, - 128, 128, 129, 129, 129, 129, 130, 130, 131, 131, - 131, 132, 133, 133, 134, 135, 135, 136, 136, 137, - 138, 138, 139, 140, 141, 142, 143, 144, 144, 145, - 146, 146, 147, 148, 149, 150, 150, 151, 152, 153, - 154, 154, 154, 155, 155, 156, 156, 156, 156, 156, - 156, 156, 156, 156, 156, 156, 157, 157, 158, 158, - 159, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, 160, 161, - 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, - 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, - 161, 161, 161, 161, 161, 161, 161, 161, 161, 162, - 163, 164, 164, 165, 165, 166, 166, 166, 166, 166, - 166, 167, 167, 167, 167, 168, 169, 169, 169, 170, - 170, 171, 171, 172, 173, 174, 174, 175, 176, 176, - 177, 178, 179, 179, 179, 179, 179, 179, 179, 179, - 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 190, 191, 192, 193, 194, 195, 195, 196, - 196, 197, 198 + 125, 125, 125, 125, 125, 126, 126, 127, 127, 128, + 128, 129, 129, 130, 130, 131, 131, 131, 131, 132, + 132, 133, 133, 133, 134, 135, 135, 136, 137, 137, + 138, 138, 139, 140, 140, 141, 142, 143, 144, 145, + 146, 146, 147, 148, 148, 149, 150, 151, 152, 152, + 153, 154, 155, 156, 156, 156, 157, 157, 158, 158, + 158, 158, 158, 158, 158, 158, 158, 158, 158, 159, + 159, 160, 160, 161, 162, 162, 162, 162, 162, 162, + 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, + 162, 162, 163, 163, 163, 163, 163, 163, 163, 163, + 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, + 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, + 163, 163, 164, 165, 166, 166, 167, 167, 168, 168, + 168, 168, 168, 168, 169, 169, 169, 169, 170, 171, + 171, 171, 172, 172, 173, 173, 174, 175, 176, 176, + 177, 178, 178, 179, 180, 181, 181, 181, 181, 181, + 181, 181, 181, 181, 182, 183, 184, 185, 186, 187, + 188, 189, 190, 191, 192, 192, 193, 194, 195, 196, + 197, 197, 198, 198, 199, 200 }; const signed char @@ -4545,25 +4588,25 @@ namespace xsk { namespace gsc { namespace s4 { 3, 3, 1, 1, 1, 1, 1, 5, 4, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 3, 2, 3, 2, - 2, 1, 1, 1, 1, 0, 2, 2, 2, 2, - 2, 6, 8, 6, 3, 8, 6, 8, 6, 2, - 2, 4, 5, 7, 5, 7, 9, 7, 9, 5, - 3, 3, 2, 2, 2, 3, 2, 2, 5, 5, - 1, 1, 1, 1, 0, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, - 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, + 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, + 1, 3, 2, 3, 2, 1, 1, 1, 0, 2, + 2, 2, 2, 2, 6, 8, 6, 3, 8, 6, + 8, 6, 2, 2, 4, 5, 7, 5, 7, 9, + 7, 9, 5, 3, 3, 2, 2, 2, 3, 2, + 2, 5, 5, 1, 1, 1, 1, 0, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, + 2, 2, 2, 5, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, - 2, 1, 1, 2, 2, 4, 6, 5, 7, 5, - 7, 8, 9, 9, 9, 3, 3, 1, 0, 1, - 0, 3, 1, 4, 4, 2, 3, 4, 3, 2, - 2, 3, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 2, 1, 1, 1, 1, 1, 2, 1, - 1, 1, 1, 1, 1, 1, 7, 2, 1, 2, - 1, 1, 1 + 1, 1, 2, 2, 1, 1, 2, 2, 4, 6, + 5, 7, 5, 7, 8, 9, 9, 9, 3, 3, + 1, 0, 1, 0, 3, 1, 4, 4, 2, 3, + 4, 3, 2, 2, 3, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, + 1, 2, 1, 1, 1, 1, 1, 1, 1, 7, + 2, 1, 2, 1, 1, 1 }; @@ -4573,29 +4616,29 @@ namespace xsk { namespace gsc { namespace s4 { const short parser::yyrline_[] = { - 0, 258, 258, 259, 263, 265, 267, 269, 271, 273, - 278, 282, 287, 288, 289, 290, 291, 295, 300, 305, - 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, - 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, - 330, 331, 332, 333, 334, 335, 339, 340, 344, 345, - 349, 351, 356, 358, 360, 363, 367, 369, 374, 376, - 378, 383, 388, 390, 395, 400, 402, 407, 409, 414, - 419, 421, 426, 431, 436, 441, 446, 451, 453, 458, - 463, 465, 470, 475, 480, 485, 487, 492, 497, 502, - 507, 508, 509, 513, 514, 518, 520, 522, 524, 526, - 528, 530, 532, 534, 536, 538, 543, 545, 550, 552, - 557, 562, 564, 566, 568, 570, 572, 574, 576, 578, - 580, 582, 584, 586, 588, 590, 592, 594, 596, 601, - 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, - 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, - 622, 623, 624, 625, 626, 627, 628, 629, 630, 634, - 639, 644, 645, 648, 649, 653, 655, 657, 659, 661, - 663, 668, 670, 672, 674, 679, 684, 686, 689, 693, - 696, 700, 702, 707, 712, 717, 719, 724, 729, 731, - 736, 741, 746, 747, 748, 749, 750, 751, 752, 753, - 754, 758, 763, 768, 773, 778, 783, 788, 793, 798, - 803, 808, 810, 815, 820, 825, 830, 835, 837, 842, - 844, 849, 854 + 0, 260, 260, 261, 265, 267, 269, 271, 273, 275, + 280, 284, 289, 290, 291, 292, 293, 297, 302, 307, + 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, + 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, + 332, 333, 334, 335, 336, 340, 341, 345, 347, 352, + 354, 359, 360, 364, 365, 369, 371, 373, 376, 380, + 382, 387, 389, 391, 396, 401, 403, 408, 413, 415, + 420, 422, 427, 432, 434, 439, 444, 449, 454, 459, + 464, 466, 471, 476, 478, 483, 488, 493, 498, 500, + 505, 510, 515, 520, 521, 522, 526, 527, 531, 533, + 535, 537, 539, 541, 543, 545, 547, 549, 551, 556, + 558, 563, 565, 570, 575, 577, 579, 581, 583, 585, + 587, 589, 591, 593, 595, 597, 599, 601, 603, 605, + 607, 609, 614, 615, 616, 617, 618, 619, 620, 621, + 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, + 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, + 642, 643, 647, 652, 657, 658, 661, 662, 666, 668, + 670, 672, 674, 676, 681, 683, 685, 687, 692, 697, + 699, 702, 706, 709, 713, 715, 720, 725, 730, 732, + 737, 742, 744, 749, 754, 759, 760, 761, 762, 763, + 764, 765, 766, 767, 771, 776, 781, 786, 791, 796, + 801, 806, 811, 816, 821, 823, 828, 833, 838, 843, + 848, 850, 855, 857, 862, 867 }; void @@ -4628,9 +4671,9 @@ namespace xsk { namespace gsc { namespace s4 { #line 13 "parser.ypp" } } } // xsk::gsc::s4 -#line 4632 "parser.cpp" +#line 4675 "parser.cpp" -#line 858 "parser.ypp" +#line 871 "parser.ypp" void xsk::gsc::s4::parser::error(const xsk::gsc::location& loc, const std::string& msg) diff --git a/src/s4/xsk/parser.hpp b/src/s4/xsk/parser.hpp index e0bb444b..b42f2b59 100644 --- a/src/s4/xsk/parser.hpp +++ b/src/s4/xsk/parser.hpp @@ -541,6 +541,7 @@ namespace xsk { namespace gsc { namespace s4 { char dummy41[sizeof (ast::program::ptr)]; // stmt + // stmt_or_dev char dummy42[sizeof (ast::stmt)]; // stmt_assign @@ -564,64 +565,67 @@ namespace xsk { namespace gsc { namespace s4 { // stmt_default char dummy49[sizeof (ast::stmt_default::ptr)]; + // stmt_dev + char dummy50[sizeof (ast::stmt_dev::ptr)]; + // stmt_dowhile - char dummy50[sizeof (ast::stmt_dowhile::ptr)]; + char dummy51[sizeof (ast::stmt_dowhile::ptr)]; // stmt_endon - char dummy51[sizeof (ast::stmt_endon::ptr)]; + char dummy52[sizeof (ast::stmt_endon::ptr)]; // stmt_expr - char dummy52[sizeof (ast::stmt_expr::ptr)]; + char dummy53[sizeof (ast::stmt_expr::ptr)]; // stmt_for - char dummy53[sizeof (ast::stmt_for::ptr)]; + char dummy54[sizeof (ast::stmt_for::ptr)]; // stmt_foreach - char dummy54[sizeof (ast::stmt_foreach::ptr)]; + char dummy55[sizeof (ast::stmt_foreach::ptr)]; // stmt_if - char dummy55[sizeof (ast::stmt_if::ptr)]; + char dummy56[sizeof (ast::stmt_if::ptr)]; // stmt_ifelse - char dummy56[sizeof (ast::stmt_ifelse::ptr)]; + char dummy57[sizeof (ast::stmt_ifelse::ptr)]; - // stmt_dev - // stmt_block // stmt_list - char dummy57[sizeof (ast::stmt_list::ptr)]; + // stmt_or_dev_list + // stmt_block + char dummy58[sizeof (ast::stmt_list::ptr)]; // stmt_notify - char dummy58[sizeof (ast::stmt_notify::ptr)]; + char dummy59[sizeof (ast::stmt_notify::ptr)]; // stmt_prof_begin - char dummy59[sizeof (ast::stmt_prof_begin::ptr)]; + char dummy60[sizeof (ast::stmt_prof_begin::ptr)]; // stmt_prof_end - char dummy60[sizeof (ast::stmt_prof_end::ptr)]; + char dummy61[sizeof (ast::stmt_prof_end::ptr)]; // stmt_return - char dummy61[sizeof (ast::stmt_return::ptr)]; + char dummy62[sizeof (ast::stmt_return::ptr)]; // stmt_switch - char dummy62[sizeof (ast::stmt_switch::ptr)]; + char dummy63[sizeof (ast::stmt_switch::ptr)]; // stmt_wait - char dummy63[sizeof (ast::stmt_wait::ptr)]; + char dummy64[sizeof (ast::stmt_wait::ptr)]; // stmt_waitframe - char dummy64[sizeof (ast::stmt_waitframe::ptr)]; + char dummy65[sizeof (ast::stmt_waitframe::ptr)]; // stmt_waittill - char dummy65[sizeof (ast::stmt_waittill::ptr)]; + char dummy66[sizeof (ast::stmt_waittill::ptr)]; // stmt_waittillframeend - char dummy66[sizeof (ast::stmt_waittillframeend::ptr)]; + char dummy67[sizeof (ast::stmt_waittillframeend::ptr)]; // stmt_waittillmatch - char dummy67[sizeof (ast::stmt_waittillmatch::ptr)]; + char dummy68[sizeof (ast::stmt_waittillmatch::ptr)]; // stmt_while - char dummy68[sizeof (ast::stmt_while::ptr)]; + char dummy69[sizeof (ast::stmt_while::ptr)]; // "field" // "path" @@ -631,7 +635,7 @@ namespace xsk { namespace gsc { namespace s4 { // "color" // "float" // "integer" - char dummy69[sizeof (std::string)]; + char dummy70[sizeof (std::string)]; }; /// The size of the largest semantic type. @@ -940,79 +944,81 @@ namespace xsk { namespace gsc { namespace s4 { S_decl_constant = 123, // decl_constant S_decl_thread = 124, // decl_thread S_stmt = 125, // stmt - S_stmt_dev = 126, // stmt_dev - S_stmt_block = 127, // stmt_block - S_stmt_list = 128, // stmt_list - S_stmt_expr = 129, // stmt_expr - S_stmt_call = 130, // stmt_call - S_stmt_assign = 131, // stmt_assign - S_stmt_endon = 132, // stmt_endon - S_stmt_notify = 133, // stmt_notify - S_stmt_wait = 134, // stmt_wait - S_stmt_waittill = 135, // stmt_waittill - S_stmt_waittillmatch = 136, // stmt_waittillmatch - S_stmt_waittillframeend = 137, // stmt_waittillframeend - S_stmt_waitframe = 138, // stmt_waitframe - S_stmt_if = 139, // stmt_if - S_stmt_ifelse = 140, // stmt_ifelse - S_stmt_while = 141, // stmt_while - S_stmt_dowhile = 142, // stmt_dowhile - S_stmt_for = 143, // stmt_for - S_stmt_foreach = 144, // stmt_foreach - S_stmt_switch = 145, // stmt_switch - S_stmt_case = 146, // stmt_case - S_stmt_default = 147, // stmt_default - S_stmt_break = 148, // stmt_break - S_stmt_continue = 149, // stmt_continue - S_stmt_return = 150, // stmt_return - S_stmt_breakpoint = 151, // stmt_breakpoint - S_stmt_prof_begin = 152, // stmt_prof_begin - S_stmt_prof_end = 153, // stmt_prof_end - S_expr = 154, // expr - S_expr_or_empty = 155, // expr_or_empty - S_expr_assign = 156, // expr_assign - S_expr_increment = 157, // expr_increment - S_expr_decrement = 158, // expr_decrement - S_expr_ternary = 159, // expr_ternary - S_expr_binary = 160, // expr_binary - S_expr_primitive = 161, // expr_primitive - S_expr_complement = 162, // expr_complement - S_expr_not = 163, // expr_not - S_expr_call = 164, // expr_call - S_expr_method = 165, // expr_method - S_expr_function = 166, // expr_function - S_expr_pointer = 167, // expr_pointer - S_expr_add_array = 168, // expr_add_array - S_expr_parameters = 169, // expr_parameters - S_expr_arguments = 170, // expr_arguments - S_expr_arguments_no_empty = 171, // expr_arguments_no_empty - S_expr_isdefined = 172, // expr_isdefined - S_expr_istrue = 173, // expr_istrue - S_expr_reference = 174, // expr_reference - S_expr_array = 175, // expr_array - S_expr_field = 176, // expr_field - S_expr_size = 177, // expr_size - S_expr_paren = 178, // expr_paren - S_expr_object = 179, // expr_object - S_expr_thisthread = 180, // expr_thisthread - S_expr_empty_array = 181, // expr_empty_array - S_expr_undefined = 182, // expr_undefined - S_expr_game = 183, // expr_game - S_expr_self = 184, // expr_self - S_expr_anim = 185, // expr_anim - S_expr_level = 186, // expr_level - S_expr_animation = 187, // expr_animation - S_expr_animtree = 188, // expr_animtree - S_expr_identifier = 189, // expr_identifier - S_expr_path = 190, // expr_path - S_expr_istring = 191, // expr_istring - S_expr_string = 192, // expr_string - S_expr_color = 193, // expr_color - S_expr_vector = 194, // expr_vector - S_expr_float = 195, // expr_float - S_expr_integer = 196, // expr_integer - S_expr_false = 197, // expr_false - S_expr_true = 198 // expr_true + S_stmt_or_dev = 126, // stmt_or_dev + S_stmt_list = 127, // stmt_list + S_stmt_or_dev_list = 128, // stmt_or_dev_list + S_stmt_dev = 129, // stmt_dev + S_stmt_block = 130, // stmt_block + S_stmt_expr = 131, // stmt_expr + S_stmt_call = 132, // stmt_call + S_stmt_assign = 133, // stmt_assign + S_stmt_endon = 134, // stmt_endon + S_stmt_notify = 135, // stmt_notify + S_stmt_wait = 136, // stmt_wait + S_stmt_waittill = 137, // stmt_waittill + S_stmt_waittillmatch = 138, // stmt_waittillmatch + S_stmt_waittillframeend = 139, // stmt_waittillframeend + S_stmt_waitframe = 140, // stmt_waitframe + S_stmt_if = 141, // stmt_if + S_stmt_ifelse = 142, // stmt_ifelse + S_stmt_while = 143, // stmt_while + S_stmt_dowhile = 144, // stmt_dowhile + S_stmt_for = 145, // stmt_for + S_stmt_foreach = 146, // stmt_foreach + S_stmt_switch = 147, // stmt_switch + S_stmt_case = 148, // stmt_case + S_stmt_default = 149, // stmt_default + S_stmt_break = 150, // stmt_break + S_stmt_continue = 151, // stmt_continue + S_stmt_return = 152, // stmt_return + S_stmt_breakpoint = 153, // stmt_breakpoint + S_stmt_prof_begin = 154, // stmt_prof_begin + S_stmt_prof_end = 155, // stmt_prof_end + S_expr = 156, // expr + S_expr_or_empty = 157, // expr_or_empty + S_expr_assign = 158, // expr_assign + S_expr_increment = 159, // expr_increment + S_expr_decrement = 160, // expr_decrement + S_expr_ternary = 161, // expr_ternary + S_expr_binary = 162, // expr_binary + S_expr_primitive = 163, // expr_primitive + S_expr_complement = 164, // expr_complement + S_expr_not = 165, // expr_not + S_expr_call = 166, // expr_call + S_expr_method = 167, // expr_method + S_expr_function = 168, // expr_function + S_expr_pointer = 169, // expr_pointer + S_expr_add_array = 170, // expr_add_array + S_expr_parameters = 171, // expr_parameters + S_expr_arguments = 172, // expr_arguments + S_expr_arguments_no_empty = 173, // expr_arguments_no_empty + S_expr_isdefined = 174, // expr_isdefined + S_expr_istrue = 175, // expr_istrue + S_expr_reference = 176, // expr_reference + S_expr_array = 177, // expr_array + S_expr_field = 178, // expr_field + S_expr_size = 179, // expr_size + S_expr_paren = 180, // expr_paren + S_expr_object = 181, // expr_object + S_expr_thisthread = 182, // expr_thisthread + S_expr_empty_array = 183, // expr_empty_array + S_expr_undefined = 184, // expr_undefined + S_expr_game = 185, // expr_game + S_expr_self = 186, // expr_self + S_expr_anim = 187, // expr_anim + S_expr_level = 188, // expr_level + S_expr_animation = 189, // expr_animation + S_expr_animtree = 190, // expr_animtree + S_expr_identifier = 191, // expr_identifier + S_expr_path = 192, // expr_path + S_expr_istring = 193, // expr_istring + S_expr_string = 194, // expr_string + S_expr_color = 195, // expr_color + S_expr_vector = 196, // expr_vector + S_expr_float = 197, // expr_float + S_expr_integer = 198, // expr_integer + S_expr_false = 199, // expr_false + S_expr_true = 200 // expr_true }; }; @@ -1224,6 +1230,7 @@ namespace xsk { namespace gsc { namespace s4 { break; case symbol_kind::S_stmt: // stmt + case symbol_kind::S_stmt_or_dev: // stmt_or_dev value.move< ast::stmt > (std::move (that.value)); break; @@ -1255,6 +1262,10 @@ namespace xsk { namespace gsc { namespace s4 { value.move< ast::stmt_default::ptr > (std::move (that.value)); break; + case symbol_kind::S_stmt_dev: // stmt_dev + value.move< ast::stmt_dev::ptr > (std::move (that.value)); + break; + case symbol_kind::S_stmt_dowhile: // stmt_dowhile value.move< ast::stmt_dowhile::ptr > (std::move (that.value)); break; @@ -1283,9 +1294,9 @@ namespace xsk { namespace gsc { namespace s4 { value.move< ast::stmt_ifelse::ptr > (std::move (that.value)); break; - case symbol_kind::S_stmt_dev: // stmt_dev - case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list + case symbol_kind::S_stmt_or_dev_list: // stmt_or_dev_list + case symbol_kind::S_stmt_block: // stmt_block value.move< ast::stmt_list::ptr > (std::move (that.value)); break; @@ -2053,6 +2064,20 @@ namespace xsk { namespace gsc { namespace s4 { {} #endif +#if 201103L <= YY_CPLUSPLUS + basic_symbol (typename Base::kind_type t, ast::stmt_dev::ptr&& v, location_type&& l) + : Base (t) + , value (std::move (v)) + , location (std::move (l)) + {} +#else + basic_symbol (typename Base::kind_type t, const ast::stmt_dev::ptr& v, const location_type& l) + : Base (t) + , value (v) + , location (l) + {} +#endif + #if 201103L <= YY_CPLUSPLUS basic_symbol (typename Base::kind_type t, ast::stmt_dowhile::ptr&& v, location_type&& l) : Base (t) @@ -2530,6 +2555,7 @@ switch (yykind) break; case symbol_kind::S_stmt: // stmt + case symbol_kind::S_stmt_or_dev: // stmt_or_dev value.template destroy< ast::stmt > (); break; @@ -2561,6 +2587,10 @@ switch (yykind) value.template destroy< ast::stmt_default::ptr > (); break; + case symbol_kind::S_stmt_dev: // stmt_dev + value.template destroy< ast::stmt_dev::ptr > (); + break; + case symbol_kind::S_stmt_dowhile: // stmt_dowhile value.template destroy< ast::stmt_dowhile::ptr > (); break; @@ -2589,9 +2619,9 @@ switch (yykind) value.template destroy< ast::stmt_ifelse::ptr > (); break; - case symbol_kind::S_stmt_dev: // stmt_dev - case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list + case symbol_kind::S_stmt_or_dev_list: // stmt_or_dev_list + case symbol_kind::S_stmt_block: // stmt_block value.template destroy< ast::stmt_list::ptr > (); break; @@ -4890,8 +4920,8 @@ switch (yykind) /// Constants. enum { - yylast_ = 2425, ///< Last index in yytable_. - yynnts_ = 83, ///< Number of nonterminal symbols. + yylast_ = 2407, ///< Last index in yytable_. + yynnts_ = 85, ///< Number of nonterminal symbols. yyfinal_ = 21 ///< Termination state number. }; @@ -5093,6 +5123,7 @@ switch (yykind) break; case symbol_kind::S_stmt: // stmt + case symbol_kind::S_stmt_or_dev: // stmt_or_dev value.copy< ast::stmt > (YY_MOVE (that.value)); break; @@ -5124,6 +5155,10 @@ switch (yykind) value.copy< ast::stmt_default::ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_stmt_dev: // stmt_dev + value.copy< ast::stmt_dev::ptr > (YY_MOVE (that.value)); + break; + case symbol_kind::S_stmt_dowhile: // stmt_dowhile value.copy< ast::stmt_dowhile::ptr > (YY_MOVE (that.value)); break; @@ -5152,9 +5187,9 @@ switch (yykind) value.copy< ast::stmt_ifelse::ptr > (YY_MOVE (that.value)); break; - case symbol_kind::S_stmt_dev: // stmt_dev - case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list + case symbol_kind::S_stmt_or_dev_list: // stmt_or_dev_list + case symbol_kind::S_stmt_block: // stmt_block value.copy< ast::stmt_list::ptr > (YY_MOVE (that.value)); break; @@ -5417,6 +5452,7 @@ switch (yykind) break; case symbol_kind::S_stmt: // stmt + case symbol_kind::S_stmt_or_dev: // stmt_or_dev value.move< ast::stmt > (YY_MOVE (s.value)); break; @@ -5448,6 +5484,10 @@ switch (yykind) value.move< ast::stmt_default::ptr > (YY_MOVE (s.value)); break; + case symbol_kind::S_stmt_dev: // stmt_dev + value.move< ast::stmt_dev::ptr > (YY_MOVE (s.value)); + break; + case symbol_kind::S_stmt_dowhile: // stmt_dowhile value.move< ast::stmt_dowhile::ptr > (YY_MOVE (s.value)); break; @@ -5476,9 +5516,9 @@ switch (yykind) value.move< ast::stmt_ifelse::ptr > (YY_MOVE (s.value)); break; - case symbol_kind::S_stmt_dev: // stmt_dev - case symbol_kind::S_stmt_block: // stmt_block case symbol_kind::S_stmt_list: // stmt_list + case symbol_kind::S_stmt_or_dev_list: // stmt_or_dev_list + case symbol_kind::S_stmt_block: // stmt_block value.move< ast::stmt_list::ptr > (YY_MOVE (s.value)); break; @@ -5600,7 +5640,7 @@ switch (yykind) #line 13 "parser.ypp" } } } // xsk::gsc::s4 -#line 5604 "parser.hpp" +#line 5644 "parser.hpp" diff --git a/src/s4/xsk/resolver.cpp b/src/s4/xsk/resolver.cpp index dd3ef066..f3ad490d 100644 --- a/src/s4/xsk/resolver.cpp +++ b/src/s4/xsk/resolver.cpp @@ -46,7 +46,7 @@ auto resolver::opcode_name(std::uint8_t id) -> std::string auto resolver::function_id(const std::string& name) -> std::uint16_t { - if(name.starts_with("_func_")) + if (name.starts_with("_func_")) { return std::stoul(name.substr(6), nullptr, 16); } @@ -75,7 +75,7 @@ auto resolver::function_name(std::uint16_t id) -> std::string auto resolver::method_id(const std::string& name) -> std::uint16_t { - if(name.starts_with("_meth_")) + if (name.starts_with("_meth_")) { return std::stoul(name.substr(6), nullptr, 16); } @@ -104,7 +104,7 @@ auto resolver::method_name(std::uint16_t id) -> std::string auto resolver::file_id(const std::string& name) -> std::uint32_t { - if(name.starts_with("_id_")) + if (name.starts_with("_id_")) { return std::stoul(name.substr(4), nullptr, 16); } @@ -133,7 +133,7 @@ auto resolver::file_name(std::uint32_t id) -> std::string auto resolver::token_id(const std::string& name) -> std::uint32_t { - if(name.starts_with("_id_")) + if (name.starts_with("_id_")) { return std::stoul(name.substr(4), nullptr, 16); } @@ -162,7 +162,7 @@ auto resolver::token_name(std::uint32_t id) -> std::string auto resolver::find_function(const std::string& name) -> bool { - if(name.starts_with("_func_")) return true; + if (name.starts_with("_func_")) return true; const auto itr = function_map_rev.find(name); @@ -176,7 +176,7 @@ auto resolver::find_function(const std::string& name) -> bool auto resolver::find_method(const std::string& name) -> bool { - if(name.starts_with("_meth_")) return true; + if (name.starts_with("_meth_")) return true; const auto itr = method_map_rev.find(name); @@ -190,7 +190,7 @@ auto resolver::find_method(const std::string& name) -> bool auto resolver::make_token(std::string_view str) -> std::string { - if(str.starts_with("_id_") || str.starts_with("_func_") || str.starts_with("_meth_")) + if (str.starts_with("_id_") || str.starts_with("_func_") || str.starts_with("_meth_")) { return std::string(str); } @@ -213,7 +213,7 @@ auto resolver::file_data(const std::string& name) -> std::tuplefirst ,reinterpret_cast(itr->second.data()), itr->second.size() }; } @@ -222,7 +222,7 @@ auto resolver::file_data(const std::string& name) -> std::tuplefirst, reinterpret_cast(res.first->second.data()), res.first->second.size() }; } @@ -460,7 +460,7 @@ struct __init__ __init__() { static bool init = false; - if(init) return; + if (init) return; init = true; opcode_map.reserve(opcode_list.size()); @@ -474,31 +474,31 @@ struct __init__ token_map.reserve(token_list.size()); token_map_rev.reserve(token_list.size()); - for(const auto& entry : opcode_list) + for (const auto& entry : opcode_list) { opcode_map.insert({ entry.first, entry.second }); opcode_map_rev.insert({ entry.second, entry.first }); } - for(const auto& entry : function_list) + for (const auto& entry : function_list) { function_map.insert({ entry.first, entry.second }); function_map_rev.insert({ entry.second, entry.first }); } - for(const auto& entry : method_list) + for (const auto& entry : method_list) { method_map.insert({ entry.first, entry.second }); method_map_rev.insert({ entry.second, entry.first }); } - for(const auto& entry : file_list) + for (const auto& entry : file_list) { file_map.insert({ entry.first, entry.second }); file_map_rev.insert({ entry.second, entry.first }); } - for(const auto& entry : token_list) + for (const auto& entry : token_list) { token_map.insert({ entry.first, entry.second }); token_map_rev.insert({ entry.second, entry.first }); diff --git a/src/utils/xsk/gsc/block.cpp b/src/utils/xsk/gsc/block.cpp index 63a447e6..cd0f45d1 100644 --- a/src/utils/xsk/gsc/block.cpp +++ b/src/utils/xsk/gsc/block.cpp @@ -98,7 +98,7 @@ void block::merge(const std::vector& childs) { child->local_vars.insert(child->local_vars.begin() + i, this->local_vars.at(i)); } - else if(pos > i) + else if (pos > i) { auto& v = child->local_vars; std::rotate(v.rend() - pos - 1, v.rend() - pos, v.rend() - i); diff --git a/src/utils/xsk/gsc/nodetree.cpp b/src/utils/xsk/gsc/nodetree.cpp index 0bf7c74f..378aa4e3 100644 --- a/src/utils/xsk/gsc/nodetree.cpp +++ b/src/utils/xsk/gsc/nodetree.cpp @@ -38,6 +38,23 @@ auto node::is_special_stmt() -> bool } } +auto node::is_special_stmt_dev() -> bool +{ + switch (kind_) + { + case kind::stmt_dev: + case kind::stmt_if: + case kind::stmt_ifelse: + case kind::stmt_while: + case kind::stmt_for: + case kind::stmt_foreach: + case kind::stmt_switch: + return true; + default: + return false; + } +} + auto node::is_special_stmt_noif() -> bool { switch (kind_) @@ -52,6 +69,21 @@ auto node::is_special_stmt_noif() -> bool } } +auto node::is_special_stmt_dev_noif() -> bool +{ + switch (kind_) + { + case kind::stmt_dev: + case kind::stmt_while: + case kind::stmt_for: + case kind::stmt_foreach: + case kind::stmt_switch: + return true; + default: + return false; + } +} + auto node::is_binary() -> bool { switch (kind_) @@ -121,9 +153,6 @@ expr_float::expr_float(const location& loc, const std::string& value) : node(kin expr_vector::expr_vector(expr x, expr y, expr z) : node(kind::expr_vector), x(std::move(x)), y(std::move(y)), z(std::move(z)) {} expr_vector::expr_vector(const location& loc, expr x, expr y, expr z) : node(kind::expr_vector, loc), x(std::move(x)), y(std::move(y)), z(std::move(z)) {} -expr_color::expr_color(const std::string& value) : node(kind::expr_color), value(value) {} -expr_color::expr_color(const location& loc, const std::string& value) : node(kind::expr_color, loc), value(value) {} - expr_string::expr_string(const std::string& value) : node(kind::expr_string), value(value) {} expr_string::expr_string(const location& loc, const std::string& value) : node(kind::expr_string, loc), value(value) {} @@ -318,6 +347,9 @@ expr_assign_bitwise_exor::expr_assign_bitwise_exor(const location& loc, expr lva stmt_list::stmt_list() : node(kind::stmt_list) {} stmt_list::stmt_list(const location& loc) : node(kind::stmt_list, loc) {} +stmt_dev::stmt_dev(ast::stmt_list::ptr list) : node(kind::stmt_dev), list(std::move(list)) {} +stmt_dev::stmt_dev(const location& loc, ast::stmt_list::ptr list) : node(kind::stmt_dev, loc), list(std::move(list)) {} + stmt_expr::stmt_expr(ast::expr expr) : node(kind::stmt_expr), expr(std::move(expr)) {} stmt_expr::stmt_expr(const location& loc, ast::expr expr) : node(kind::stmt_expr, loc), expr(std::move(expr)) {} @@ -486,11 +518,6 @@ auto expr_vector::print() const -> std::string return "( "s + x.print() + ", " + y.print() + ", " + z.print() + " )"; } -auto expr_color::print() const -> std::string -{ - return "#"s += value; -} - auto expr_string::print() const -> std::string { return value; @@ -861,7 +888,10 @@ auto stmt_list::print() const -> std::string if (&stmt != &list.front() && stmt.as_node->is_special_stmt() || last_special) data += "\n"; - data += stmts_pad + stmt.print(); + if (stmt == kind::stmt_dev) + data += stmt.print(); + else + data += stmts_pad + stmt.print(); if (&stmt != &list.back()) data += "\n"; @@ -880,6 +910,39 @@ auto stmt_list::print() const -> std::string return data; } +auto stmt_dev::print() const -> std::string +{ + std::string data; + bool last_special = false; + + auto stmts_pad = indented(indent_); + + data += "/#\n"; + + for (const auto& stmt : list->list) + { + if (&stmt != &list->list.front() && stmt.as_node->is_special_stmt() || last_special) + data += "\n"; + + if (stmt == kind::stmt_dev) + data += stmt.print(); + else + data += stmts_pad + stmt.print(); + + if (&stmt != &list->list.back()) + data += "\n"; + + if (stmt.as_node->is_special_stmt()) + last_special = true; + else + last_special = false; + } + + data += "\n#/"; + + return data; +} + auto stmt_expr::print() const -> std::string { return expr.print(); @@ -905,7 +968,7 @@ auto stmt_notify::print() const -> std::string if (args->list.size() == 0) return obj.print() + " notify( " + event.print() + " );"; else - return obj.print() + " notify( " + event.print() + ", " + args->print() + " );"; + return obj.print() + " notify( " + event.print() + "," + args->print() + ");"; }; auto stmt_wait::print() const -> std::string @@ -921,7 +984,7 @@ auto stmt_waittill::print() const -> std::string if (args->list.size() == 0) return obj.print() + " waittill( " + event.print() + " );"; else - return obj.print() + " waittill( " + event.print() + ", " + args->print() + " );"; + return obj.print() + " waittill( " + event.print() + "," + args->print() + ");"; }; auto stmt_waittillmatch::print() const -> std::string @@ -929,7 +992,7 @@ auto stmt_waittillmatch::print() const -> std::string if (args->list.size() == 0) return obj.print() + " waittillmatch( " + event.print() + " );"; else - return obj.print() + " waittillmatch( " + event.print() + ", " + args->print() + " );"; + return obj.print() + " waittillmatch( " + event.print() + "," + args->print() + ");"; }; auto stmt_waittillframeend::print() const -> std::string @@ -1228,32 +1291,32 @@ auto asm_loc::print() const -> std::string auto asm_jump::print() const -> std::string { - return "jump " + value; + return "__asm_jump( " + value + " );"; } auto asm_jump_back::print() const -> std::string { - return "jump_back " + value; + return "__asm_jump_back( " + value + " );"; } auto asm_jump_cond::print() const -> std::string { - return "jump_cond( " + expr.print() + " ) " + value; + return "__asm_jump_cond( " + expr.print() + ", " + value + " );"; } auto asm_jump_true_expr::print() const -> std::string { - return "expr_true " + value; + return "__asm_jump_expr_true( " + value + " );"; } auto asm_jump_false_expr::print() const -> std::string { - return "expr_false " + value; + return "__asm_jump_expr_false( " + value + " );"; } auto asm_switch::print() const -> std::string { - return "switch( " + expr.print() + " ) " + value; + return "__asm_switch( " + expr.print() + ", " + value + " );"; } auto asm_endswitch::print() const -> std::string @@ -1264,37 +1327,37 @@ auto asm_endswitch::print() const -> std::string { result += " " + entry; } - return "endswitch( " + count + " )" + result; + return "__asm_endswitch( " + count + "," + result + ");"; } auto asm_prescriptcall::print() const -> std::string { - return "prescriptcall"; + return "__asm_prescriptcall();"; } auto asm_voidcodepos::print() const -> std::string { - return "voidcodepos"; + return "__asm_voidcodepos();"; } auto asm_create::print() const -> std::string { - return "var_create_" + index; + return "__asm_var_create( " + index + " );"; } auto asm_access::print() const -> std::string { - return "var_access_" + index; + return "__asm_var_access( " + index + " );"; } auto asm_remove::print() const -> std::string { - return "var_remove_" + index; + return "__asm_var_remove( " + index + " );"; } auto asm_clear::print() const -> std::string { - return "var_clear_" + index; + return "__asm_var_clear( " + index + " );"; } // operators @@ -1334,11 +1397,6 @@ bool operator==(const expr_vector& lhs, const expr_vector& rhs) return lhs.x == rhs.x && lhs.y == rhs.y && lhs.z == rhs.z; } -bool operator==(const expr_color& lhs, const expr_color& rhs) -{ - return lhs.value == rhs.value; -} - bool operator==(const expr_string& lhs, const expr_string& rhs) { return lhs.value == rhs.value; @@ -1493,7 +1551,6 @@ expr::~expr() case kind::expr_integer: as_integer.~unique_ptr(); return; case kind::expr_float: as_float.~unique_ptr(); return; case kind::expr_vector: as_vector.~unique_ptr(); return; - case kind::expr_color: as_color.~unique_ptr(); return; case kind::expr_string: as_string.~unique_ptr(); return; case kind::expr_istring: as_istring.~unique_ptr(); return; case kind::expr_path: as_path.~unique_ptr(); return; @@ -1571,7 +1628,7 @@ bool operator==(const expr& lhs, kind rhs) bool operator==(const expr& lhs, const expr& rhs) { - if(!(*lhs.as_node == *rhs.as_node)) return false; + if (!(*lhs.as_node == *rhs.as_node)) return false; switch(lhs.as_node->kind()) { @@ -1580,7 +1637,6 @@ bool operator==(const expr& lhs, const expr& rhs) case kind::expr_integer: return *lhs.as_integer == *rhs.as_integer; case kind::expr_float: return *lhs.as_float == *rhs.as_float; case kind::expr_vector: return *lhs.as_vector == *rhs.as_vector; - case kind::expr_color: return *lhs.as_color == *rhs.as_color; case kind::expr_string: return *lhs.as_string == *rhs.as_string; case kind::expr_istring: return *lhs.as_istring == *rhs.as_istring; case kind::expr_path: return *lhs.as_path == *rhs.as_path; @@ -1640,6 +1696,7 @@ stmt::~stmt() { case kind::null: as_node.~unique_ptr(); return; case kind::stmt_list: as_list.~unique_ptr(); return; + case kind::stmt_dev: as_dev.~unique_ptr(); return; case kind::stmt_expr: as_expr.~unique_ptr(); return; case kind::stmt_call: as_call.~unique_ptr(); return; case kind::stmt_assign: as_assign.~unique_ptr(); return; @@ -1666,9 +1723,9 @@ stmt::~stmt() case kind::stmt_prof_begin: as_prof_begin.~unique_ptr(); return; case kind::stmt_prof_end: as_prof_end.~unique_ptr(); return; case kind::asm_loc: as_loc.~unique_ptr(); return; - case kind::asm_jump_cond: as_cond.~unique_ptr(); return; case kind::asm_jump: as_jump.~unique_ptr(); return; case kind::asm_jump_back: as_jump_back.~unique_ptr(); return; + case kind::asm_jump_cond: as_cond.~unique_ptr(); return; case kind::asm_switch: as_asm_switch.~unique_ptr(); return; case kind::asm_endswitch: as_asm_endswitch.~unique_ptr(); return; case kind::asm_create: as_asm_create.~unique_ptr(); return; diff --git a/src/utils/xsk/gsc/nodetree.hpp b/src/utils/xsk/gsc/nodetree.hpp index ed4383e3..4e82b8ed 100644 --- a/src/utils/xsk/gsc/nodetree.hpp +++ b/src/utils/xsk/gsc/nodetree.hpp @@ -16,7 +16,6 @@ enum class kind expr_integer, expr_float, expr_vector, - expr_color, expr_string, expr_istring, expr_path, @@ -79,6 +78,7 @@ enum class kind expr_assign_bitwise_and, expr_assign_bitwise_exor, stmt_list, + stmt_dev, stmt_expr, stmt_call, stmt_assign, @@ -134,7 +134,6 @@ struct expr_false; struct expr_integer; struct expr_float; struct expr_vector; -struct expr_color; struct expr_string; struct expr_istring; struct expr_path; @@ -199,6 +198,7 @@ struct expr_assign_bitwise_or; struct expr_assign_bitwise_and; struct expr_assign_bitwise_exor; struct stmt_list; +struct stmt_dev; struct stmt_expr; struct stmt_call; struct stmt_assign; @@ -273,7 +273,6 @@ union expr std::unique_ptr as_integer; std::unique_ptr as_float; std::unique_ptr as_vector; - std::unique_ptr as_color; std::unique_ptr as_string; std::unique_ptr as_istring; std::unique_ptr as_path; @@ -359,6 +358,7 @@ union stmt { std::unique_ptr as_node; std::unique_ptr as_list; + std::unique_ptr as_dev; std::unique_ptr as_expr; std::unique_ptr as_call; std::unique_ptr as_assign; @@ -453,7 +453,9 @@ public: auto loc() -> location& { return loc_; } auto is_special_stmt() -> bool; + auto is_special_stmt_dev() -> bool; auto is_special_stmt_noif() -> bool; + auto is_special_stmt_dev_noif() -> bool; auto is_binary() -> bool; auto precedence() -> std::uint8_t; @@ -521,18 +523,6 @@ struct expr_vector : public node friend bool operator==(const expr_vector& lhs, const expr_vector& rhs); }; -struct expr_color : public node -{ - using ptr = std::unique_ptr; - - std::string value; - - expr_color(const std::string& value); - expr_color(const location& loc, const std::string& value); - auto print() const -> std::string override; - friend bool operator==(const expr_color& lhs, const expr_color& rhs); -}; - struct expr_string : public node { using ptr = std::unique_ptr; @@ -1199,6 +1189,17 @@ struct stmt_list : public node auto print() const -> std::string override; }; +struct stmt_dev : public node +{ + using ptr = std::unique_ptr; + + stmt_list::ptr list; + + stmt_dev(stmt_list::ptr list); + stmt_dev(const location& loc, stmt_list::ptr list); + auto print() const -> std::string override; +}; + struct stmt_expr : public node { using ptr = std::unique_ptr; diff --git a/src/utils/xsk/utils/byte_buffer.cpp b/src/utils/xsk/utils/byte_buffer.cpp index b46cbe28..a18ed456 100644 --- a/src/utils/xsk/utils/byte_buffer.cpp +++ b/src/utils/xsk/utils/byte_buffer.cpp @@ -78,14 +78,14 @@ auto byte_buffer::read_c_string() -> std::string auto byte_buffer::print_bytes(std::size_t pos, std::size_t count) -> std::string { - std::string shit; + std::string data {}; for (auto i = pos; i < pos + count; i++) { - shit += utils::string::va("%s %02X", shit.data(), (*reinterpret_cast(data_.data() + i))); + data = utils::string::va("%s %02X", data.data(), (*reinterpret_cast(data_.data() + i))); } - return shit; + return data; } auto byte_buffer::pos() -> std::size_t @@ -93,6 +93,23 @@ auto byte_buffer::pos() -> std::size_t return pos_; } +void byte_buffer::pos(std::size_t pos) +{ + if (pos >= 0 && pos <= size_) + { + pos_ = pos; + } +} + +auto byte_buffer::align(std::size_t size) -> std::size_t +{ + auto pos = pos_; + + pos_ = (pos_ + (size - 1)) & ~(size - 1); + + return pos_ - pos; +} + auto byte_buffer::buffer() -> std::vector& { return data_; diff --git a/src/utils/xsk/utils/byte_buffer.hpp b/src/utils/xsk/utils/byte_buffer.hpp index c43ff3ac..101f77cf 100644 --- a/src/utils/xsk/utils/byte_buffer.hpp +++ b/src/utils/xsk/utils/byte_buffer.hpp @@ -77,6 +77,8 @@ public: auto read_c_string() -> std::string; auto print_bytes(std::size_t pos, std::size_t count) -> std::string; auto pos() -> std::size_t; + void pos(std::size_t pos); + auto align(std::size_t size) -> std::size_t; auto buffer() -> std::vector&; };