From 6980506e8873efa5f74c040f04e67e4b0d3f7bff Mon Sep 17 00:00:00 2001 From: xensik Date: Sun, 20 Feb 2022 12:10:21 +0100 Subject: [PATCH] lexer & grammar fixes --- gen/h1/parser.ypp | 26 +- gen/h2/parser.ypp | 26 +- gen/iw5/parser.ypp | 26 +- gen/iw6/parser.ypp | 26 +- gen/iw7/parser.ypp | 26 +- gen/iw8/parser.ypp | 26 +- gen/s1/parser.ypp | 26 +- gen/s2/parser.ypp | 26 +- gen/s4/parser.ypp | 26 +- gen/t6/parser.ypp | 26 +- src/h1/xsk/lexer.cpp | 122 +- src/h1/xsk/lexer.hpp | 5 +- src/h1/xsk/parser.cpp | 1740 ++++++++++++++--------------- src/h1/xsk/parser.hpp | 103 +- src/h2/xsk/lexer.cpp | 122 +- src/h2/xsk/lexer.hpp | 5 +- src/h2/xsk/parser.cpp | 1740 ++++++++++++++--------------- src/h2/xsk/parser.hpp | 103 +- src/iw5/xsk/lexer.cpp | 122 +- src/iw5/xsk/lexer.hpp | 5 +- src/iw5/xsk/parser.cpp | 1804 +++++++++++++++--------------- src/iw5/xsk/parser.hpp | 103 +- src/iw6/xsk/lexer.cpp | 122 +- src/iw6/xsk/lexer.hpp | 5 +- src/iw6/xsk/parser.cpp | 1804 +++++++++++++++--------------- src/iw6/xsk/parser.hpp | 103 +- src/iw7/xsk/lexer.cpp | 122 +- src/iw7/xsk/lexer.hpp | 5 +- src/iw7/xsk/parser.cpp | 1804 +++++++++++++++--------------- src/iw7/xsk/parser.hpp | 103 +- src/iw8/xsk/lexer.cpp | 122 +- src/iw8/xsk/lexer.hpp | 5 +- src/iw8/xsk/parser.cpp | 1815 +++++++++++++++--------------- src/iw8/xsk/parser.hpp | 103 +- src/s1/xsk/lexer.cpp | 122 +- src/s1/xsk/lexer.hpp | 5 +- src/s1/xsk/parser.cpp | 1740 ++++++++++++++--------------- src/s1/xsk/parser.hpp | 103 +- src/s2/xsk/lexer.cpp | 122 +- src/s2/xsk/lexer.hpp | 5 +- src/s2/xsk/parser.cpp | 1740 ++++++++++++++--------------- src/s2/xsk/parser.hpp | 103 +- src/s4/xsk/compiler.cpp | 2 +- src/s4/xsk/lexer.cpp | 122 +- src/s4/xsk/lexer.hpp | 5 +- src/s4/xsk/parser.cpp | 1815 +++++++++++++++--------------- src/s4/xsk/parser.hpp | 103 +- src/t6/xsk/compiler.cpp | 12 +- src/t6/xsk/decompiler.cpp | 2 +- src/t6/xsk/disassembler.cpp | 2 +- src/t6/xsk/lexer.cpp | 124 +-- src/t6/xsk/lexer.hpp | 5 +- src/t6/xsk/parser.cpp | 2099 ++++++++++++++++++----------------- src/t6/xsk/parser.hpp | 109 +- 54 files changed, 10312 insertions(+), 10375 deletions(-) diff --git a/gen/h1/parser.ypp b/gen/h1/parser.ypp index c98fdfb8..50deb346 100644 --- a/gen/h1/parser.ypp +++ b/gen/h1/parser.ypp @@ -85,7 +85,7 @@ xsk::gsc::h1::parser::symbol_type H1lex(xsk::gsc::h1::lexer& lexer); %token TRUE "true" %token FALSE "false" %token UNDEFINED "undefined" -%token SIZE ".size" +%token SIZE "size" %token GAME "game" %token SELF "self" %token ANIM "anim" @@ -135,7 +135,6 @@ xsk::gsc::h1::parser::symbol_type H1lex(xsk::gsc::h1::lexer& lexer); %token MUL "*" %token DIV "/" %token MOD "%" -%token FIELD "field" %token PATH "path" %token IDENTIFIER "identifier" %token STRING "string literal" @@ -213,6 +212,7 @@ xsk::gsc::h1::parser::symbol_type H1lex(xsk::gsc::h1::lexer& lexer); %type expr_level %type expr_animation %type expr_animtree +%type expr_identifier_nosize %type expr_identifier %type expr_path %type expr_istring @@ -223,6 +223,7 @@ xsk::gsc::h1::parser::symbol_type H1lex(xsk::gsc::h1::lexer& lexer); %type expr_false %type expr_true +%nonassoc SIZEOF %nonassoc ADD_ARRAY %nonassoc RBRACKET %nonassoc THEN @@ -722,14 +723,12 @@ expr_array ; expr_field - : expr_object DOT expr_identifier + : expr_object DOT expr_identifier_nosize { $$ = std::make_unique(@$, std::move($1), std::move($3)); } - | expr_object FIELD - { $$ = std::make_unique(@$, std::move($1), std::make_unique(@$, $2)); } ; expr_size - : expr_object SIZE + : expr_object DOT SIZE %prec SIZEOF { $$ = std::make_unique(@$, std::move($1)); } ; @@ -795,16 +794,23 @@ expr_animtree { $$ = std::make_unique(@$); }; ; -expr_identifier +expr_identifier_nosize : IDENTIFIER { $$ = std::make_unique(@$, $1); }; ; +expr_identifier + : IDENTIFIER + { $$ = std::make_unique(@$, $1); }; + | SIZE + { $$ = std::make_unique(@$, "size"); }; + ; + expr_path - : PATH + : IDENTIFIER + { $$ = std::make_unique(@$, $1); }; + | PATH { $$ = std::make_unique(@$, $1); }; - | expr_identifier - { $$ = std::make_unique(@$, $1->value); }; ; expr_istring diff --git a/gen/h2/parser.ypp b/gen/h2/parser.ypp index 1eac61b6..65301957 100644 --- a/gen/h2/parser.ypp +++ b/gen/h2/parser.ypp @@ -83,7 +83,7 @@ xsk::gsc::h2::parser::symbol_type H2lex(xsk::gsc::h2::lexer& lexer); %token TRUE "true" %token FALSE "false" %token UNDEFINED "undefined" -%token SIZE ".size" +%token SIZE "size" %token GAME "game" %token SELF "self" %token ANIM "anim" @@ -133,7 +133,6 @@ xsk::gsc::h2::parser::symbol_type H2lex(xsk::gsc::h2::lexer& lexer); %token MUL "*" %token DIV "/" %token MOD "%" -%token FIELD "field" %token PATH "path" %token IDENTIFIER "identifier" %token STRING "string literal" @@ -211,6 +210,7 @@ xsk::gsc::h2::parser::symbol_type H2lex(xsk::gsc::h2::lexer& lexer); %type expr_level %type expr_animation %type expr_animtree +%type expr_identifier_nosize %type expr_identifier %type expr_path %type expr_istring @@ -221,6 +221,7 @@ xsk::gsc::h2::parser::symbol_type H2lex(xsk::gsc::h2::lexer& lexer); %type expr_false %type expr_true +%nonassoc SIZEOF %nonassoc ADD_ARRAY %nonassoc RBRACKET %nonassoc THEN @@ -720,14 +721,12 @@ expr_array ; expr_field - : expr_object DOT expr_identifier + : expr_object DOT expr_identifier_nosize { $$ = std::make_unique(@$, std::move($1), std::move($3)); } - | expr_object FIELD - { $$ = std::make_unique(@$, std::move($1), std::make_unique(@$, $2)); } ; expr_size - : expr_object SIZE + : expr_object DOT SIZE %prec SIZEOF { $$ = std::make_unique(@$, std::move($1)); } ; @@ -793,16 +792,23 @@ expr_animtree { $$ = std::make_unique(@$); }; ; -expr_identifier +expr_identifier_nosize : IDENTIFIER { $$ = std::make_unique(@$, $1); }; ; +expr_identifier + : IDENTIFIER + { $$ = std::make_unique(@$, $1); }; + | SIZE + { $$ = std::make_unique(@$, "size"); }; + ; + expr_path - : PATH + : IDENTIFIER + { $$ = std::make_unique(@$, $1); }; + | PATH { $$ = std::make_unique(@$, $1); }; - | expr_identifier - { $$ = std::make_unique(@$, $1->value); }; ; expr_istring diff --git a/gen/iw5/parser.ypp b/gen/iw5/parser.ypp index 302344e7..75edf07b 100644 --- a/gen/iw5/parser.ypp +++ b/gen/iw5/parser.ypp @@ -82,7 +82,7 @@ xsk::gsc::iw5::parser::symbol_type IW5lex(xsk::gsc::iw5::lexer& lexer); %token TRUE "true" %token FALSE "false" %token UNDEFINED "undefined" -%token SIZE ".size" +%token SIZE "size" %token GAME "game" %token SELF "self" %token ANIM "anim" @@ -132,7 +132,6 @@ xsk::gsc::iw5::parser::symbol_type IW5lex(xsk::gsc::iw5::lexer& lexer); %token MUL "*" %token DIV "/" %token MOD "%" -%token FIELD "field" %token PATH "path" %token IDENTIFIER "identifier" %token STRING "string literal" @@ -209,6 +208,7 @@ xsk::gsc::iw5::parser::symbol_type IW5lex(xsk::gsc::iw5::lexer& lexer); %type expr_level %type expr_animation %type expr_animtree +%type expr_identifier_nosize %type expr_identifier %type expr_path %type expr_istring @@ -219,6 +219,7 @@ xsk::gsc::iw5::parser::symbol_type IW5lex(xsk::gsc::iw5::lexer& lexer); %type expr_false %type expr_true +%nonassoc SIZEOF %nonassoc ADD_ARRAY %nonassoc RBRACKET %nonassoc THEN @@ -710,14 +711,12 @@ expr_array ; expr_field - : expr_object DOT expr_identifier + : expr_object DOT expr_identifier_nosize { $$ = std::make_unique(@$, std::move($1), std::move($3)); } - | expr_object FIELD - { $$ = std::make_unique(@$, std::move($1), std::make_unique(@$, $2)); } ; expr_size - : expr_object SIZE + : expr_object DOT SIZE %prec SIZEOF { $$ = std::make_unique(@$, std::move($1)); } ; @@ -783,16 +782,23 @@ expr_animtree { $$ = std::make_unique(@$); }; ; -expr_identifier +expr_identifier_nosize : IDENTIFIER { $$ = std::make_unique(@$, $1); }; ; +expr_identifier + : IDENTIFIER + { $$ = std::make_unique(@$, $1); }; + | SIZE + { $$ = std::make_unique(@$, "size"); }; + ; + expr_path - : PATH + : IDENTIFIER + { $$ = std::make_unique(@$, $1); }; + | PATH { $$ = std::make_unique(@$, $1); }; - | expr_identifier - { $$ = std::make_unique(@$, $1->value); }; ; expr_istring diff --git a/gen/iw6/parser.ypp b/gen/iw6/parser.ypp index bf1b2bc7..dde4dc9a 100644 --- a/gen/iw6/parser.ypp +++ b/gen/iw6/parser.ypp @@ -82,7 +82,7 @@ xsk::gsc::iw6::parser::symbol_type IW6lex(xsk::gsc::iw6::lexer& lexer); %token TRUE "true" %token FALSE "false" %token UNDEFINED "undefined" -%token SIZE ".size" +%token SIZE "size" %token GAME "game" %token SELF "self" %token ANIM "anim" @@ -132,7 +132,6 @@ xsk::gsc::iw6::parser::symbol_type IW6lex(xsk::gsc::iw6::lexer& lexer); %token MUL "*" %token DIV "/" %token MOD "%" -%token FIELD "field" %token PATH "path" %token IDENTIFIER "identifier" %token STRING "string literal" @@ -209,6 +208,7 @@ xsk::gsc::iw6::parser::symbol_type IW6lex(xsk::gsc::iw6::lexer& lexer); %type expr_level %type expr_animation %type expr_animtree +%type expr_identifier_nosize %type expr_identifier %type expr_path %type expr_istring @@ -219,6 +219,7 @@ xsk::gsc::iw6::parser::symbol_type IW6lex(xsk::gsc::iw6::lexer& lexer); %type expr_false %type expr_true +%nonassoc SIZEOF %nonassoc ADD_ARRAY %nonassoc RBRACKET %nonassoc THEN @@ -710,14 +711,12 @@ expr_array ; expr_field - : expr_object DOT expr_identifier + : expr_object DOT expr_identifier_nosize { $$ = std::make_unique(@$, std::move($1), std::move($3)); } - | expr_object FIELD - { $$ = std::make_unique(@$, std::move($1), std::make_unique(@$, $2)); } ; expr_size - : expr_object SIZE + : expr_object DOT SIZE %prec SIZEOF { $$ = std::make_unique(@$, std::move($1)); } ; @@ -783,16 +782,23 @@ expr_animtree { $$ = std::make_unique(@$); }; ; -expr_identifier +expr_identifier_nosize : IDENTIFIER { $$ = std::make_unique(@$, $1); }; ; +expr_identifier + : IDENTIFIER + { $$ = std::make_unique(@$, $1); }; + | SIZE + { $$ = std::make_unique(@$, "size"); }; + ; + expr_path - : PATH + : IDENTIFIER + { $$ = std::make_unique(@$, $1); }; + | PATH { $$ = std::make_unique(@$, $1); }; - | expr_identifier - { $$ = std::make_unique(@$, $1->value); }; ; expr_istring diff --git a/gen/iw7/parser.ypp b/gen/iw7/parser.ypp index 95d15b13..8957505a 100644 --- a/gen/iw7/parser.ypp +++ b/gen/iw7/parser.ypp @@ -82,7 +82,7 @@ xsk::gsc::iw7::parser::symbol_type IW7lex(xsk::gsc::iw7::lexer& lexer); %token TRUE "true" %token FALSE "false" %token UNDEFINED "undefined" -%token SIZE ".size" +%token SIZE "size" %token GAME "game" %token SELF "self" %token ANIM "anim" @@ -132,7 +132,6 @@ xsk::gsc::iw7::parser::symbol_type IW7lex(xsk::gsc::iw7::lexer& lexer); %token MUL "*" %token DIV "/" %token MOD "%" -%token FIELD "field" %token PATH "path" %token IDENTIFIER "identifier" %token STRING "string literal" @@ -209,6 +208,7 @@ xsk::gsc::iw7::parser::symbol_type IW7lex(xsk::gsc::iw7::lexer& lexer); %type expr_level %type expr_animation %type expr_animtree +%type expr_identifier_nosize %type expr_identifier %type expr_path %type expr_istring @@ -219,6 +219,7 @@ xsk::gsc::iw7::parser::symbol_type IW7lex(xsk::gsc::iw7::lexer& lexer); %type expr_false %type expr_true +%nonassoc SIZEOF %nonassoc ADD_ARRAY %nonassoc RBRACKET %nonassoc THEN @@ -710,14 +711,12 @@ expr_array ; expr_field - : expr_object DOT expr_identifier + : expr_object DOT expr_identifier_nosize { $$ = std::make_unique(@$, std::move($1), std::move($3)); } - | expr_object FIELD - { $$ = std::make_unique(@$, std::move($1), std::make_unique(@$, $2)); } ; expr_size - : expr_object SIZE + : expr_object DOT SIZE %prec SIZEOF { $$ = std::make_unique(@$, std::move($1)); } ; @@ -783,16 +782,23 @@ expr_animtree { $$ = std::make_unique(@$); }; ; -expr_identifier +expr_identifier_nosize : IDENTIFIER { $$ = std::make_unique(@$, $1); }; ; +expr_identifier + : IDENTIFIER + { $$ = std::make_unique(@$, $1); }; + | SIZE + { $$ = std::make_unique(@$, "size"); }; + ; + expr_path - : PATH + : IDENTIFIER + { $$ = std::make_unique(@$, $1); }; + | PATH { $$ = std::make_unique(@$, $1); }; - | expr_identifier - { $$ = std::make_unique(@$, $1->value); }; ; expr_istring diff --git a/gen/iw8/parser.ypp b/gen/iw8/parser.ypp index 78d356fe..7ba5235e 100644 --- a/gen/iw8/parser.ypp +++ b/gen/iw8/parser.ypp @@ -83,7 +83,7 @@ xsk::gsc::iw8::parser::symbol_type IW8lex(xsk::gsc::iw8::lexer& lexer); %token TRUE "true" %token FALSE "false" %token UNDEFINED "undefined" -%token SIZE ".size" +%token SIZE "size" %token GAME "game" %token SELF "self" %token ANIM "anim" @@ -135,7 +135,6 @@ xsk::gsc::iw8::parser::symbol_type IW8lex(xsk::gsc::iw8::lexer& lexer); %token MUL "*" %token DIV "/" %token MOD "%" -%token FIELD "field" %token PATH "path" %token IDENTIFIER "identifier" %token STRING "string literal" @@ -215,6 +214,7 @@ xsk::gsc::iw8::parser::symbol_type IW8lex(xsk::gsc::iw8::lexer& lexer); %type expr_level %type expr_animation %type expr_animtree +%type expr_identifier_nosize %type expr_identifier %type expr_path %type expr_istring @@ -225,6 +225,7 @@ xsk::gsc::iw8::parser::symbol_type IW8lex(xsk::gsc::iw8::lexer& lexer); %type expr_false %type expr_true +%nonassoc SIZEOF %nonassoc ADD_ARRAY %nonassoc RBRACKET %nonassoc THEN @@ -736,14 +737,12 @@ expr_array ; expr_field - : expr_object DOT expr_identifier + : expr_object DOT expr_identifier_nosize { $$ = std::make_unique(@$, std::move($1), std::move($3)); } - | expr_object FIELD - { $$ = std::make_unique(@$, std::move($1), std::make_unique(@$, $2)); } ; expr_size - : expr_object SIZE + : expr_object DOT SIZE %prec SIZEOF { $$ = std::make_unique(@$, std::move($1)); } ; @@ -809,16 +808,23 @@ expr_animtree { $$ = std::make_unique(@$); }; ; -expr_identifier +expr_identifier_nosize : IDENTIFIER { $$ = std::make_unique(@$, $1); }; ; +expr_identifier + : IDENTIFIER + { $$ = std::make_unique(@$, $1); }; + | SIZE + { $$ = std::make_unique(@$, "size"); }; + ; + expr_path - : PATH + : IDENTIFIER + { $$ = std::make_unique(@$, $1); }; + | PATH { $$ = std::make_unique(@$, $1); }; - | expr_identifier - { $$ = std::make_unique(@$, $1->value); }; ; expr_istring diff --git a/gen/s1/parser.ypp b/gen/s1/parser.ypp index 3d1235bc..a5294d28 100644 --- a/gen/s1/parser.ypp +++ b/gen/s1/parser.ypp @@ -83,7 +83,7 @@ xsk::gsc::s1::parser::symbol_type S1lex(xsk::gsc::s1::lexer& lexer); %token TRUE "true" %token FALSE "false" %token UNDEFINED "undefined" -%token SIZE ".size" +%token SIZE "size" %token GAME "game" %token SELF "self" %token ANIM "anim" @@ -133,7 +133,6 @@ xsk::gsc::s1::parser::symbol_type S1lex(xsk::gsc::s1::lexer& lexer); %token MUL "*" %token DIV "/" %token MOD "%" -%token FIELD "field" %token PATH "path" %token IDENTIFIER "identifier" %token STRING "string literal" @@ -211,6 +210,7 @@ xsk::gsc::s1::parser::symbol_type S1lex(xsk::gsc::s1::lexer& lexer); %type expr_level %type expr_animation %type expr_animtree +%type expr_identifier_nosize %type expr_identifier %type expr_path %type expr_istring @@ -221,6 +221,7 @@ xsk::gsc::s1::parser::symbol_type S1lex(xsk::gsc::s1::lexer& lexer); %type expr_false %type expr_true +%nonassoc SIZEOF %nonassoc ADD_ARRAY %nonassoc RBRACKET %nonassoc THEN @@ -720,14 +721,12 @@ expr_array ; expr_field - : expr_object DOT expr_identifier + : expr_object DOT expr_identifier_nosize { $$ = std::make_unique(@$, std::move($1), std::move($3)); } - | expr_object FIELD - { $$ = std::make_unique(@$, std::move($1), std::make_unique(@$, $2)); } ; expr_size - : expr_object SIZE + : expr_object DOT SIZE %prec SIZEOF { $$ = std::make_unique(@$, std::move($1)); } ; @@ -793,16 +792,23 @@ expr_animtree { $$ = std::make_unique(@$); }; ; -expr_identifier +expr_identifier_nosize : IDENTIFIER { $$ = std::make_unique(@$, $1); }; ; +expr_identifier + : IDENTIFIER + { $$ = std::make_unique(@$, $1); }; + | SIZE + { $$ = std::make_unique(@$, "size"); }; + ; + expr_path - : PATH + : IDENTIFIER + { $$ = std::make_unique(@$, $1); }; + | PATH { $$ = std::make_unique(@$, $1); }; - | expr_identifier - { $$ = std::make_unique(@$, $1->value); }; ; expr_istring diff --git a/gen/s2/parser.ypp b/gen/s2/parser.ypp index b87093aa..c5b5f2c0 100644 --- a/gen/s2/parser.ypp +++ b/gen/s2/parser.ypp @@ -83,7 +83,7 @@ xsk::gsc::s2::parser::symbol_type S2lex(xsk::gsc::s2::lexer& lexer); %token TRUE "true" %token FALSE "false" %token UNDEFINED "undefined" -%token SIZE ".size" +%token SIZE "size" %token GAME "game" %token SELF "self" %token ANIM "anim" @@ -133,7 +133,6 @@ xsk::gsc::s2::parser::symbol_type S2lex(xsk::gsc::s2::lexer& lexer); %token MUL "*" %token DIV "/" %token MOD "%" -%token FIELD "field" %token PATH "path" %token IDENTIFIER "identifier" %token STRING "string literal" @@ -211,6 +210,7 @@ xsk::gsc::s2::parser::symbol_type S2lex(xsk::gsc::s2::lexer& lexer); %type expr_level %type expr_animation %type expr_animtree +%type expr_identifier_nosize %type expr_identifier %type expr_path %type expr_istring @@ -221,6 +221,7 @@ xsk::gsc::s2::parser::symbol_type S2lex(xsk::gsc::s2::lexer& lexer); %type expr_false %type expr_true +%nonassoc SIZEOF %nonassoc ADD_ARRAY %nonassoc RBRACKET %nonassoc THEN @@ -720,14 +721,12 @@ expr_array ; expr_field - : expr_object DOT expr_identifier + : expr_object DOT expr_identifier_nosize { $$ = std::make_unique(@$, std::move($1), std::move($3)); } - | expr_object FIELD - { $$ = std::make_unique(@$, std::move($1), std::make_unique(@$, $2)); } ; expr_size - : expr_object SIZE + : expr_object DOT SIZE %prec SIZEOF { $$ = std::make_unique(@$, std::move($1)); } ; @@ -793,16 +792,23 @@ expr_animtree { $$ = std::make_unique(@$); }; ; -expr_identifier +expr_identifier_nosize : IDENTIFIER { $$ = std::make_unique(@$, $1); }; ; +expr_identifier + : IDENTIFIER + { $$ = std::make_unique(@$, $1); }; + | SIZE + { $$ = std::make_unique(@$, "size"); }; + ; + expr_path - : PATH + : IDENTIFIER + { $$ = std::make_unique(@$, $1); }; + | PATH { $$ = std::make_unique(@$, $1); }; - | expr_identifier - { $$ = std::make_unique(@$, $1->value); }; ; expr_istring diff --git a/gen/s4/parser.ypp b/gen/s4/parser.ypp index 84547c8e..c355d4a8 100644 --- a/gen/s4/parser.ypp +++ b/gen/s4/parser.ypp @@ -83,7 +83,7 @@ xsk::gsc::s4::parser::symbol_type S4lex(xsk::gsc::s4::lexer& lexer); %token TRUE "true" %token FALSE "false" %token UNDEFINED "undefined" -%token SIZE ".size" +%token SIZE "size" %token GAME "game" %token SELF "self" %token ANIM "anim" @@ -135,7 +135,6 @@ xsk::gsc::s4::parser::symbol_type S4lex(xsk::gsc::s4::lexer& lexer); %token MUL "*" %token DIV "/" %token MOD "%" -%token FIELD "field" %token PATH "path" %token IDENTIFIER "identifier" %token STRING "string literal" @@ -215,6 +214,7 @@ xsk::gsc::s4::parser::symbol_type S4lex(xsk::gsc::s4::lexer& lexer); %type expr_level %type expr_animation %type expr_animtree +%type expr_identifier_nosize %type expr_identifier %type expr_path %type expr_istring @@ -225,6 +225,7 @@ xsk::gsc::s4::parser::symbol_type S4lex(xsk::gsc::s4::lexer& lexer); %type expr_false %type expr_true +%nonassoc SIZEOF %nonassoc ADD_ARRAY %nonassoc RBRACKET %nonassoc THEN @@ -736,14 +737,12 @@ expr_array ; expr_field - : expr_object DOT expr_identifier + : expr_object DOT expr_identifier_nosize { $$ = std::make_unique(@$, std::move($1), std::move($3)); } - | expr_object FIELD - { $$ = std::make_unique(@$, std::move($1), std::make_unique(@$, $2)); } ; expr_size - : expr_object SIZE + : expr_object DOT SIZE %prec SIZEOF { $$ = std::make_unique(@$, std::move($1)); } ; @@ -809,16 +808,23 @@ expr_animtree { $$ = std::make_unique(@$); }; ; -expr_identifier +expr_identifier_nosize : IDENTIFIER { $$ = std::make_unique(@$, $1); }; ; +expr_identifier + : IDENTIFIER + { $$ = std::make_unique(@$, $1); }; + | SIZE + { $$ = std::make_unique(@$, "size"); }; + ; + expr_path - : PATH + : IDENTIFIER + { $$ = std::make_unique(@$, $1); }; + | PATH { $$ = std::make_unique(@$, $1); }; - | expr_identifier - { $$ = std::make_unique(@$, $1->value); }; ; expr_istring diff --git a/gen/t6/parser.ypp b/gen/t6/parser.ypp index 938b3130..6f8cc0b6 100644 --- a/gen/t6/parser.ypp +++ b/gen/t6/parser.ypp @@ -78,7 +78,7 @@ xsk::arc::t6::parser::symbol_type T6lex(xsk::arc::t6::lexer& lexer); %token TRUE "true" %token FALSE "false" %token UNDEFINED "undefined" -%token SIZE ".size" +%token SIZE "size" %token GAME "game" %token SELF "self" %token ANIM "anim" @@ -147,7 +147,6 @@ xsk::arc::t6::parser::symbol_type T6lex(xsk::arc::t6::lexer& lexer); %token MUL "*" %token DIV "/" %token MOD "%" -%token FIELD "field" %token PATH "path" %token IDENTIFIER "identifier" %token STRING "string literal" @@ -241,6 +240,7 @@ xsk::arc::t6::parser::symbol_type T6lex(xsk::arc::t6::lexer& lexer); %type expr_anim %type expr_level %type expr_animation +%type expr_identifier_nosize %type expr_identifier %type expr_path %type expr_istring @@ -252,6 +252,7 @@ xsk::arc::t6::parser::symbol_type T6lex(xsk::arc::t6::lexer& lexer); %type expr_false %type expr_true +%nonassoc SIZEOF %nonassoc RBRACKET %nonassoc THEN %nonassoc ELSE @@ -841,14 +842,12 @@ expr_array ; expr_field - : expr_object DOT expr_identifier + : expr_object DOT expr_identifier_nosize { $$ = std::make_unique(@$, std::move($1), std::move($3)); } - | expr_object FIELD - { $$ = std::make_unique(@$, std::move($1), std::make_unique(@$, $2)); } ; expr_size - : expr_object SIZE + : expr_object DOT SIZE %prec SIZEOF { $$ = std::make_unique(@$, std::move($1)); } ; @@ -904,16 +903,23 @@ expr_animation { $$ = std::make_unique(@$, $2); }; ; -expr_identifier +expr_identifier_nosize : IDENTIFIER { $$ = std::make_unique(@$, $1); }; ; +expr_identifier + : IDENTIFIER + { $$ = std::make_unique(@$, $1); }; + | SIZE + { $$ = std::make_unique(@$, "size"); }; + ; + expr_path - : PATH + : IDENTIFIER + { $$ = std::make_unique(@$, $1); }; + | PATH { $$ = std::make_unique(@$, $1); }; - | expr_identifier - { $$ = std::make_unique(@$, $1->value); }; ; expr_istring diff --git a/src/h1/xsk/lexer.cpp b/src/h1/xsk/lexer.cpp index 412d1e0c..adc5692f 100644 --- a/src/h1/xsk/lexer.cpp +++ b/src/h1/xsk/lexer.cpp @@ -60,6 +60,7 @@ const std::unordered_map keywo { "true", parser::token::TRUE }, { "false", parser::token::FALSE }, { "undefined", parser::token::UNDEFINED }, + { "size", parser::token::SIZE }, { "game", parser::token::GAME }, { "self", parser::token::SELF }, { "anim", parser::token::ANIM }, @@ -85,8 +86,8 @@ bool buffer::push(char c) return true; } -reader::reader() : state(reader::end), buffer_pos(0), bytes_remaining(0), - last_byte(0), current_byte(0) { } +reader::reader() : state(reader::end), buffer_pos(0), + bytes_remaining(0), last_byte(0), current_byte(0) {} void reader::init(const char* data, size_t size) { @@ -174,7 +175,6 @@ auto lexer::lex() -> parser::symbol_type { buffer_.length = 0; state_ = state::start; - loc_.step(); while (true) { @@ -182,6 +182,7 @@ auto lexer::lex() -> parser::symbol_type auto& last = reader_.last_byte; auto& curr = reader_.current_byte; auto path = false; + loc_.step(); if (state == reader::end) { @@ -214,7 +215,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 != '*' && curr != '/') return parser::make_DIV(loc_); advance(); @@ -246,14 +247,35 @@ auto lexer::lex() -> parser::symbol_type } else if (last == '#' && curr == '/') { - reader_.advance(); + advance(); break; } - reader_.advance(); + advance(); } } } + else if (last == '@') + { + while (true) + { + if (state == reader::end) + throw comp_error(loc_, "unmatched script doc comment start ('/@')"); + + if (curr == '\n') + { + loc_.lines(); + loc_.step(); + } + else if (last == '@' && curr == '/') + { + advance(); + break; + } + + advance(); + } + } else if (last == '*') { while (true) @@ -268,11 +290,11 @@ auto lexer::lex() -> parser::symbol_type } else if (last == '*' && curr == '/') { - reader_.advance(); + advance(); break; } - reader_.advance(); + advance(); } } else if (last == '/') @@ -282,30 +304,10 @@ auto lexer::lex() -> parser::symbol_type if (state == reader::end) break; - if (last == '\\' && (curr == '\r' || curr == '\n')) - { - reader_.advance(); - - if (state == reader::end) - break; - - if (last == '\r') - { - if (curr != '\n') - throw comp_error(loc_, "invalid token ('\')"); - - reader_.advance(); - } - - loc_.lines(); - loc_.step(); - continue; - } - if (curr == '\n') break; - reader_.advance(); + advance(); } } continue; @@ -315,8 +317,8 @@ auto lexer::lex() -> parser::symbol_type if (!indev_) throw comp_error(loc_, "unmatched devblock end ('#/')"); - indev_ = false; advance(); + indev_ = false; return parser::make_DEVEND(loc_); } @@ -337,7 +339,7 @@ auto lexer::lex() -> parser::symbol_type state_ = state::preprocessor; goto lex_name; case '*': - if (curr != '/' && curr != '=') + if (curr != '=' && curr != '/') return parser::make_MUL(loc_); advance(); @@ -350,13 +352,9 @@ auto lexer::lex() -> parser::symbol_type state_ = state::string; goto lex_string; case '.': - advance(); - - if (state == reader::end) - throw comp_error(loc_, "unterminated field ('.')"); - - state_ = state::field; - goto lex_name_or_number; + if (curr < '0' || curr > '9') + return parser::make_DOT(loc_); + goto lex_number; case '(': return parser::make_LPAREN(loc_); case ')': @@ -480,7 +478,6 @@ auto lexer::lex() -> parser::symbol_type advance(); return parser::make_ASSIGN_RSHIFT(loc_); default: -lex_name_or_number: if (last >= '0' && last <= '9') goto lex_number; else if (last == '_' || last >= 'A' && last <= 'Z' || last >= 'a' && last <= 'z') @@ -562,23 +559,8 @@ lex_name: advance(); } - if (state_ == state::field) + if (state_ == state::preprocessor) { - if (path) - throw comp_error(loc_, "invalid field token '\\'"); - - if (std::string_view(buffer_.data, buffer_.length) == "size") - { - return parser::make_SIZE(loc_); - } - - return parser::make_FIELD(std::string(buffer_.data, buffer_.length), loc_); - } - else if (state_ == state::preprocessor) - { - if (path) - throw comp_error(loc_, "invalid preprocessor directive"); - auto token = parser::token::H1UNDEF; if (buffer_.length < 16) @@ -594,7 +576,8 @@ lex_name: } } - preprocessor(token); + preprocessor_run(token); + state_ = state::start; continue; } @@ -620,14 +603,11 @@ lex_name: } lex_number: - if (state_ == state::field) - buffer_.push('.'); - - if (state_ == state::field || last == '.' || last != '0' || (last == '0' && (curr != 'o' && curr != 'b' && curr != 'x'))) + if (last == '.' || last != '0' || (last == '0' && (curr != 'o' && curr != 'b' && curr != 'x'))) { buffer_.push(last); - auto dot = 0; + auto dot = last == '.' ? 1 : 0; auto flt = 0; while (true) @@ -663,10 +643,10 @@ lex_number: if (last == '\'') throw comp_error(loc_, "invalid number literal"); - if (state_ == state::field && dot || dot > 1 || flt > 1 || flt && buffer_.data[buffer_.length - 1] != 'f') + if (dot > 1 || flt > 1 || flt && buffer_.data[buffer_.length - 1] != 'f') throw comp_error(loc_, "invalid number literal"); - if (state_ == state::field || dot || flt) + if (dot || flt) return parser::make_FLOAT(std::string(buffer_.data, buffer_.length), loc_); return parser::make_INTEGER(std::string(buffer_.data, buffer_.length), loc_); @@ -681,7 +661,7 @@ lex_number: break; if (curr == '\'' && (last == '\'' || last == 'o') || (curr == 'o' && last == '\'')) - throw comp_error(loc_, "invalid octal literal"); + throw comp_error(loc_, "invalid octal literal"); if (curr == '\'') { @@ -771,18 +751,22 @@ lex_number: return parser::make_INTEGER(xsk::utils::string::hex_to_dec(buffer_.data), loc_); } - // cant get here! + + throw error("UNEXPECTED LEXER INTERNAL ERROR!"); } } void lexer::advance() { reader_.advance(); + loc_.end.column++; - // dont wrap comment marks '/\/' '/\*' outside strings - if (state_ == state::start && reader_.last_byte == '/') - return; + if (reader_.current_byte == '\\') [[unlikely]] + preprocessor_wrap(); +} +void lexer::preprocessor_wrap() +{ while (reader_.current_byte == '\\') { if (reader_.bytes_remaining == 1) @@ -824,7 +808,7 @@ void lexer::advance() } } -void lexer::preprocessor(parser::token::token_kind_type token) +void lexer::preprocessor_run(parser::token::token_kind_type token) { if (!clean_) throw comp_error(loc_, "invalid token ('#')"); diff --git a/src/h1/xsk/lexer.hpp b/src/h1/xsk/lexer.hpp index ddf472da..2e0358e5 100644 --- a/src/h1/xsk/lexer.hpp +++ b/src/h1/xsk/lexer.hpp @@ -44,7 +44,7 @@ struct reader class lexer { - enum class state : std::uint8_t { start, string, localize, field, preprocessor }; + enum class state : std::uint8_t { start, string, localize, preprocessor }; reader reader_; buffer buffer_; @@ -66,7 +66,8 @@ public: private: void advance(); - void preprocessor(parser::token::token_kind_type token); + void preprocessor_wrap(); + void preprocessor_run(parser::token::token_kind_type token); }; } // namespace xsk::gsc::h1 diff --git a/src/h1/xsk/parser.cpp b/src/h1/xsk/parser.cpp index c0b0d082..6b5dc435 100644 --- a/src/h1/xsk/parser.cpp +++ b/src/h1/xsk/parser.cpp @@ -301,6 +301,7 @@ namespace xsk { namespace gsc { namespace h1 { value.YY_MOVE_OR_COPY< ast::expr_game::ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_expr_identifier_nosize: // expr_identifier_nosize case symbol_kind::S_expr_identifier: // expr_identifier value.YY_MOVE_OR_COPY< ast::expr_identifier::ptr > (YY_MOVE (that.value)); break; @@ -492,7 +493,6 @@ namespace xsk { namespace gsc { namespace h1 { value.YY_MOVE_OR_COPY< ast::stmt_while::ptr > (YY_MOVE (that.value)); break; - case symbol_kind::S_FIELD: // "field" case symbol_kind::S_PATH: // "path" case symbol_kind::S_IDENTIFIER: // "identifier" case symbol_kind::S_STRING: // "string literal" @@ -603,6 +603,7 @@ namespace xsk { namespace gsc { namespace h1 { value.move< ast::expr_game::ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_expr_identifier_nosize: // expr_identifier_nosize case symbol_kind::S_expr_identifier: // expr_identifier value.move< ast::expr_identifier::ptr > (YY_MOVE (that.value)); break; @@ -794,7 +795,6 @@ namespace xsk { namespace gsc { namespace h1 { value.move< ast::stmt_while::ptr > (YY_MOVE (that.value)); break; - case symbol_kind::S_FIELD: // "field" case symbol_kind::S_PATH: // "path" case symbol_kind::S_IDENTIFIER: // "identifier" case symbol_kind::S_STRING: // "string literal" @@ -905,6 +905,7 @@ namespace xsk { namespace gsc { namespace h1 { value.copy< ast::expr_game::ptr > (that.value); break; + case symbol_kind::S_expr_identifier_nosize: // expr_identifier_nosize case symbol_kind::S_expr_identifier: // expr_identifier value.copy< ast::expr_identifier::ptr > (that.value); break; @@ -1096,7 +1097,6 @@ namespace xsk { namespace gsc { namespace h1 { value.copy< ast::stmt_while::ptr > (that.value); break; - case symbol_kind::S_FIELD: // "field" case symbol_kind::S_PATH: // "path" case symbol_kind::S_IDENTIFIER: // "identifier" case symbol_kind::S_STRING: // "string literal" @@ -1206,6 +1206,7 @@ namespace xsk { namespace gsc { namespace h1 { value.move< ast::expr_game::ptr > (that.value); break; + case symbol_kind::S_expr_identifier_nosize: // expr_identifier_nosize case symbol_kind::S_expr_identifier: // expr_identifier value.move< ast::expr_identifier::ptr > (that.value); break; @@ -1397,7 +1398,6 @@ namespace xsk { namespace gsc { namespace h1 { value.move< ast::stmt_while::ptr > (that.value); break; - case symbol_kind::S_FIELD: // "field" case symbol_kind::S_PATH: // "path" case symbol_kind::S_IDENTIFIER: // "identifier" case symbol_kind::S_STRING: // "string literal" @@ -1762,6 +1762,7 @@ namespace xsk { namespace gsc { namespace h1 { yylhs.value.emplace< ast::expr_game::ptr > (); break; + case symbol_kind::S_expr_identifier_nosize: // expr_identifier_nosize case symbol_kind::S_expr_identifier: // expr_identifier yylhs.value.emplace< ast::expr_identifier::ptr > (); break; @@ -1953,7 +1954,6 @@ namespace xsk { namespace gsc { namespace h1 { yylhs.value.emplace< ast::stmt_while::ptr > (); break; - case symbol_kind::S_FIELD: // "field" case symbol_kind::S_PATH: // "path" case symbol_kind::S_IDENTIFIER: // "identifier" case symbol_kind::S_STRING: // "string literal" @@ -1984,1315 +1984,1321 @@ namespace xsk { namespace gsc { namespace h1 { switch (yyn) { case 2: // root: program -#line 256 "parser.ypp" +#line 257 "parser.ypp" { ast = std::move(yystack_[0].value.as < ast::program::ptr > ()); } #line 1990 "parser.cpp" break; case 3: // root: %empty -#line 257 "parser.ypp" +#line 258 "parser.ypp" { ast = std::make_unique(yylhs.location); } #line 1996 "parser.cpp" break; case 4: // program: program inline -#line 262 "parser.ypp" +#line 263 "parser.ypp" { yylhs.value.as < ast::program::ptr > () = std::move(yystack_[1].value.as < ast::program::ptr > ()); } #line 2002 "parser.cpp" break; case 5: // program: program include -#line 264 "parser.ypp" +#line 265 "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" break; case 6: // program: program declaration -#line 266 "parser.ypp" +#line 267 "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" break; case 7: // program: inline -#line 268 "parser.ypp" +#line 269 "parser.ypp" { yylhs.value.as < ast::program::ptr > () = std::make_unique(yylhs.location); } #line 2020 "parser.cpp" break; case 8: // program: include -#line 270 "parser.ypp" +#line 271 "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" break; case 9: // program: declaration -#line 272 "parser.ypp" +#line 273 "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" break; case 10: // inline: "#inline" expr_path ";" -#line 276 "parser.ypp" +#line 277 "parser.ypp" { lexer.push_header(yystack_[1].value.as < ast::expr_path::ptr > ()->value); } #line 2038 "parser.cpp" break; case 11: // include: "#include" expr_path ";" -#line 281 "parser.ypp" +#line 282 "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" break; case 12: // declaration: "/#" -#line 285 "parser.ypp" +#line 286 "parser.ypp" { yylhs.value.as < ast::decl > ().as_dev_begin = std::make_unique(yylhs.location); } #line 2050 "parser.cpp" break; case 13: // declaration: "#/" -#line 286 "parser.ypp" +#line 287 "parser.ypp" { yylhs.value.as < ast::decl > ().as_dev_end = std::make_unique(yylhs.location); } #line 2056 "parser.cpp" break; case 14: // declaration: decl_usingtree -#line 287 "parser.ypp" +#line 288 "parser.ypp" { yylhs.value.as < ast::decl > ().as_usingtree = std::move(yystack_[0].value.as < ast::decl_usingtree::ptr > ()); } #line 2062 "parser.cpp" break; case 15: // declaration: decl_constant -#line 288 "parser.ypp" +#line 289 "parser.ypp" { yylhs.value.as < ast::decl > ().as_constant = std::move(yystack_[0].value.as < ast::decl_constant::ptr > ()); } #line 2068 "parser.cpp" break; case 16: // declaration: decl_thread -#line 289 "parser.ypp" +#line 290 "parser.ypp" { yylhs.value.as < ast::decl > ().as_thread = std::move(yystack_[0].value.as < ast::decl_thread::ptr > ()); } #line 2074 "parser.cpp" break; case 17: // decl_usingtree: "#using_animtree" "(" expr_string ")" ";" -#line 294 "parser.ypp" +#line 295 "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" break; case 18: // decl_constant: expr_identifier "=" expr ";" -#line 299 "parser.ypp" +#line 300 "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" break; case 19: // decl_thread: expr_identifier "(" expr_parameters ")" stmt_block -#line 304 "parser.ypp" +#line 305 "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" break; case 20: // stmt: stmt_block -#line 308 "parser.ypp" +#line 309 "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_call -#line 309 "parser.ypp" +#line 310 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_call = std::move(yystack_[0].value.as < ast::stmt_call::ptr > ()); } #line 2104 "parser.cpp" break; case 22: // stmt: stmt_assign -#line 310 "parser.ypp" +#line 311 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_assign = std::move(yystack_[0].value.as < ast::stmt_assign::ptr > ()); } #line 2110 "parser.cpp" break; case 23: // stmt: stmt_endon -#line 311 "parser.ypp" +#line 312 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_endon = std::move(yystack_[0].value.as < ast::stmt_endon::ptr > ()); } #line 2116 "parser.cpp" break; case 24: // stmt: stmt_notify -#line 312 "parser.ypp" +#line 313 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_notify = std::move(yystack_[0].value.as < ast::stmt_notify::ptr > ()); } #line 2122 "parser.cpp" break; case 25: // stmt: stmt_wait -#line 313 "parser.ypp" +#line 314 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_wait = std::move(yystack_[0].value.as < ast::stmt_wait::ptr > ()); } #line 2128 "parser.cpp" break; case 26: // stmt: stmt_waittill -#line 314 "parser.ypp" +#line 315 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_waittill = std::move(yystack_[0].value.as < ast::stmt_waittill::ptr > ()); } #line 2134 "parser.cpp" break; case 27: // stmt: stmt_waittillmatch -#line 315 "parser.ypp" +#line 316 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_waittillmatch = std::move(yystack_[0].value.as < ast::stmt_waittillmatch::ptr > ()); } #line 2140 "parser.cpp" break; case 28: // stmt: stmt_waittillframeend -#line 316 "parser.ypp" +#line 317 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_waittillframeend = std::move(yystack_[0].value.as < ast::stmt_waittillframeend::ptr > ()); } #line 2146 "parser.cpp" break; case 29: // stmt: stmt_waitframe -#line 317 "parser.ypp" +#line 318 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_waitframe = std::move(yystack_[0].value.as < ast::stmt_waitframe::ptr > ()); } #line 2152 "parser.cpp" break; case 30: // stmt: stmt_if -#line 318 "parser.ypp" +#line 319 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_if = std::move(yystack_[0].value.as < ast::stmt_if::ptr > ()); } #line 2158 "parser.cpp" break; case 31: // stmt: stmt_ifelse -#line 319 "parser.ypp" +#line 320 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_ifelse = std::move(yystack_[0].value.as < ast::stmt_ifelse::ptr > ()); } #line 2164 "parser.cpp" break; case 32: // stmt: stmt_while -#line 320 "parser.ypp" +#line 321 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_while = std::move(yystack_[0].value.as < ast::stmt_while::ptr > ()); } #line 2170 "parser.cpp" break; case 33: // stmt: stmt_dowhile -#line 321 "parser.ypp" +#line 322 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_dowhile = std::move(yystack_[0].value.as < ast::stmt_dowhile::ptr > ()); } #line 2176 "parser.cpp" break; case 34: // stmt: stmt_for -#line 322 "parser.ypp" +#line 323 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_for = std::move(yystack_[0].value.as < ast::stmt_for::ptr > ()); } #line 2182 "parser.cpp" break; case 35: // stmt: stmt_foreach -#line 323 "parser.ypp" +#line 324 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_foreach = std::move(yystack_[0].value.as < ast::stmt_foreach::ptr > ()); } #line 2188 "parser.cpp" break; case 36: // stmt: stmt_switch -#line 324 "parser.ypp" +#line 325 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_switch = std::move(yystack_[0].value.as < ast::stmt_switch::ptr > ()); } #line 2194 "parser.cpp" break; case 37: // stmt: stmt_case -#line 325 "parser.ypp" +#line 326 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_case = std::move(yystack_[0].value.as < ast::stmt_case::ptr > ()); } #line 2200 "parser.cpp" break; case 38: // stmt: stmt_default -#line 326 "parser.ypp" +#line 327 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_default = std::move(yystack_[0].value.as < ast::stmt_default::ptr > ()); } #line 2206 "parser.cpp" break; case 39: // stmt: stmt_break -#line 327 "parser.ypp" +#line 328 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_break = std::move(yystack_[0].value.as < ast::stmt_break::ptr > ()); } #line 2212 "parser.cpp" break; case 40: // stmt: stmt_continue -#line 328 "parser.ypp" +#line 329 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_continue = std::move(yystack_[0].value.as < ast::stmt_continue::ptr > ()); } #line 2218 "parser.cpp" break; case 41: // stmt: stmt_return -#line 329 "parser.ypp" +#line 330 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_return = std::move(yystack_[0].value.as < ast::stmt_return::ptr > ()); } #line 2224 "parser.cpp" break; case 42: // stmt: stmt_breakpoint -#line 330 "parser.ypp" +#line 331 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_breakpoint = std::move(yystack_[0].value.as < ast::stmt_breakpoint::ptr > ()); } #line 2230 "parser.cpp" break; case 43: // stmt: stmt_prof_begin -#line 331 "parser.ypp" +#line 332 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_prof_begin = std::move(yystack_[0].value.as < ast::stmt_prof_begin::ptr > ()); } #line 2236 "parser.cpp" break; case 44: // stmt: stmt_prof_end -#line 332 "parser.ypp" +#line 333 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_prof_end = std::move(yystack_[0].value.as < ast::stmt_prof_end::ptr > ()); } #line 2242 "parser.cpp" break; case 45: // stmt_or_dev: stmt -#line 336 "parser.ypp" +#line 337 "parser.ypp" { yylhs.value.as < ast::stmt > () = std::move(yystack_[0].value.as < ast::stmt > ()); } #line 2248 "parser.cpp" break; case 46: // stmt_or_dev: stmt_dev -#line 337 "parser.ypp" +#line 338 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_dev = std::move(yystack_[0].value.as < ast::stmt_dev::ptr > ()); } #line 2254 "parser.cpp" break; case 47: // stmt_list: stmt_list stmt -#line 342 "parser.ypp" +#line 343 "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 2260 "parser.cpp" break; case 48: // stmt_list: stmt -#line 344 "parser.ypp" +#line 345 "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 2266 "parser.cpp" break; case 49: // stmt_or_dev_list: stmt_or_dev_list stmt_or_dev -#line 349 "parser.ypp" +#line 350 "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 2272 "parser.cpp" break; case 50: // stmt_or_dev_list: stmt_or_dev -#line 351 "parser.ypp" +#line 352 "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 2278 "parser.cpp" break; case 51: // stmt_dev: "/#" stmt_list "#/" -#line 355 "parser.ypp" +#line 356 "parser.ypp" { yylhs.value.as < ast::stmt_dev::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::stmt_list::ptr > ())); } #line 2284 "parser.cpp" break; case 52: // stmt_dev: "/#" "#/" -#line 356 "parser.ypp" +#line 357 "parser.ypp" { yylhs.value.as < ast::stmt_dev::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } #line 2290 "parser.cpp" break; case 53: // stmt_block: "{" stmt_or_dev_list "}" -#line 360 "parser.ypp" +#line 361 "parser.ypp" { yylhs.value.as < ast::stmt_list::ptr > () = std::move(yystack_[1].value.as < ast::stmt_list::ptr > ()); } #line 2296 "parser.cpp" break; case 54: // stmt_block: "{" "}" -#line 361 "parser.ypp" +#line 362 "parser.ypp" { yylhs.value.as < ast::stmt_list::ptr > () = std::make_unique(yylhs.location); } #line 2302 "parser.cpp" break; case 55: // stmt_expr: expr_assign -#line 366 "parser.ypp" +#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 2308 "parser.cpp" break; case 56: // stmt_expr: expr_increment -#line 368 "parser.ypp" +#line 369 "parser.ypp" { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } #line 2314 "parser.cpp" break; case 57: // stmt_expr: expr_decrement -#line 370 "parser.ypp" +#line 371 "parser.ypp" { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } #line 2320 "parser.cpp" break; case 58: // stmt_expr: %empty -#line 372 "parser.ypp" +#line 373 "parser.ypp" { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } #line 2326 "parser.cpp" break; case 59: // stmt_call: expr_call ";" -#line 377 "parser.ypp" +#line 378 "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 2332 "parser.cpp" break; case 60: // stmt_call: expr_method ";" -#line 379 "parser.ypp" +#line 380 "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 2338 "parser.cpp" break; case 61: // stmt_assign: expr_assign ";" -#line 384 "parser.ypp" +#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 2344 "parser.cpp" break; case 62: // stmt_assign: expr_increment ";" -#line 386 "parser.ypp" +#line 387 "parser.ypp" { yylhs.value.as < ast::stmt_assign::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } #line 2350 "parser.cpp" break; case 63: // stmt_assign: expr_decrement ";" -#line 388 "parser.ypp" +#line 389 "parser.ypp" { yylhs.value.as < ast::stmt_assign::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } #line 2356 "parser.cpp" break; case 64: // stmt_endon: expr_object "endon" "(" expr ")" ";" -#line 393 "parser.ypp" +#line 394 "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 2362 "parser.cpp" break; case 65: // stmt_notify: expr_object "notify" "(" expr "," expr_arguments_no_empty ")" ";" -#line 398 "parser.ypp" +#line 399 "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 2368 "parser.cpp" break; case 66: // stmt_notify: expr_object "notify" "(" expr ")" ";" -#line 400 "parser.ypp" +#line 401 "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 2374 "parser.cpp" break; case 67: // stmt_wait: "wait" expr ";" -#line 405 "parser.ypp" +#line 406 "parser.ypp" { yylhs.value.as < ast::stmt_wait::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } #line 2380 "parser.cpp" break; case 68: // stmt_waittill: expr_object "waittill" "(" expr "," expr_arguments_no_empty ")" ";" -#line 410 "parser.ypp" +#line 411 "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 2386 "parser.cpp" break; case 69: // stmt_waittill: expr_object "waittill" "(" expr ")" ";" -#line 412 "parser.ypp" +#line 413 "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 2392 "parser.cpp" break; case 70: // stmt_waittillmatch: expr_object "waittillmatch" "(" expr "," expr_arguments_no_empty ")" ";" -#line 417 "parser.ypp" +#line 418 "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 2398 "parser.cpp" break; case 71: // stmt_waittillmatch: expr_object "waittillmatch" "(" expr ")" ";" -#line 419 "parser.ypp" +#line 420 "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 2404 "parser.cpp" break; case 72: // stmt_waittillframeend: "waittillframeend" ";" -#line 424 "parser.ypp" +#line 425 "parser.ypp" { yylhs.value.as < ast::stmt_waittillframeend::ptr > () = std::make_unique(yylhs.location); } #line 2410 "parser.cpp" break; case 73: // stmt_waitframe: "waitframe" ";" -#line 429 "parser.ypp" +#line 430 "parser.ypp" { yylhs.value.as < ast::stmt_waitframe::ptr > () = std::make_unique(yylhs.location); } #line 2416 "parser.cpp" break; case 74: // stmt_waitframe: "waitframe" "(" ")" ";" -#line 431 "parser.ypp" +#line 432 "parser.ypp" { yylhs.value.as < ast::stmt_waitframe::ptr > () = std::make_unique(yylhs.location); } #line 2422 "parser.cpp" break; case 75: // stmt_if: "if" "(" expr ")" stmt -#line 436 "parser.ypp" +#line 437 "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 2428 "parser.cpp" break; case 76: // stmt_ifelse: "if" "(" expr ")" stmt "else" stmt -#line 441 "parser.ypp" +#line 442 "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 2434 "parser.cpp" break; case 77: // stmt_while: "while" "(" expr ")" stmt -#line 446 "parser.ypp" +#line 447 "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 2440 "parser.cpp" break; case 78: // stmt_dowhile: "do" stmt "while" "(" expr ")" ";" -#line 451 "parser.ypp" +#line 452 "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 2446 "parser.cpp" break; case 79: // stmt_for: "for" "(" stmt_expr ";" expr_or_empty ";" stmt_expr ")" stmt -#line 456 "parser.ypp" +#line 457 "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 2452 "parser.cpp" break; case 80: // stmt_foreach: "foreach" "(" expr_identifier "in" expr ")" stmt -#line 461 "parser.ypp" +#line 462 "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 2458 "parser.cpp" break; case 81: // stmt_foreach: "foreach" "(" expr_identifier "," expr_identifier "in" expr ")" stmt -#line 463 "parser.ypp" +#line 464 "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 2464 "parser.cpp" break; case 82: // stmt_switch: "switch" "(" expr ")" stmt_block -#line 468 "parser.ypp" +#line 469 "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 2470 "parser.cpp" break; case 83: // stmt_case: "case" expr_integer ":" -#line 473 "parser.ypp" +#line 474 "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 2476 "parser.cpp" break; case 84: // stmt_case: "case" expr_string ":" -#line 475 "parser.ypp" +#line 476 "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 2482 "parser.cpp" break; case 85: // stmt_default: "default" ":" -#line 480 "parser.ypp" +#line 481 "parser.ypp" { yylhs.value.as < ast::stmt_default::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } #line 2488 "parser.cpp" break; case 86: // stmt_break: "break" ";" -#line 485 "parser.ypp" +#line 486 "parser.ypp" { yylhs.value.as < ast::stmt_break::ptr > () = std::make_unique(yylhs.location); } #line 2494 "parser.cpp" break; case 87: // stmt_continue: "continue" ";" -#line 490 "parser.ypp" +#line 491 "parser.ypp" { yylhs.value.as < ast::stmt_continue::ptr > () = std::make_unique(yylhs.location); } #line 2500 "parser.cpp" break; case 88: // stmt_return: "return" expr ";" -#line 495 "parser.ypp" +#line 496 "parser.ypp" { yylhs.value.as < ast::stmt_return::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } #line 2506 "parser.cpp" break; case 89: // stmt_return: "return" ";" -#line 497 "parser.ypp" +#line 498 "parser.ypp" { yylhs.value.as < ast::stmt_return::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } #line 2512 "parser.cpp" break; case 90: // stmt_breakpoint: "breakpoint" ";" -#line 502 "parser.ypp" +#line 503 "parser.ypp" { yylhs.value.as < ast::stmt_breakpoint::ptr > () = std::make_unique(yylhs.location); } #line 2518 "parser.cpp" break; case 91: // stmt_prof_begin: "prof_begin" "(" expr_arguments ")" ";" -#line 507 "parser.ypp" +#line 508 "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 2524 "parser.cpp" break; case 92: // stmt_prof_end: "prof_end" "(" expr_arguments ")" ";" -#line 512 "parser.ypp" +#line 513 "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 2530 "parser.cpp" break; case 93: // expr: expr_ternary -#line 516 "parser.ypp" +#line 517 "parser.ypp" { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } #line 2536 "parser.cpp" break; case 94: // expr: expr_binary -#line 517 "parser.ypp" +#line 518 "parser.ypp" { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } #line 2542 "parser.cpp" break; case 95: // expr: expr_primitive -#line 518 "parser.ypp" +#line 519 "parser.ypp" { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } #line 2548 "parser.cpp" break; case 96: // expr_or_empty: expr -#line 522 "parser.ypp" +#line 523 "parser.ypp" { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } #line 2554 "parser.cpp" break; case 97: // expr_or_empty: %empty -#line 523 "parser.ypp" +#line 524 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location); } #line 2560 "parser.cpp" break; case 98: // expr_assign: expr_object "=" expr -#line 528 "parser.ypp" +#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 2566 "parser.cpp" break; case 99: // expr_assign: expr_object "|=" expr -#line 530 "parser.ypp" +#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 2572 "parser.cpp" break; case 100: // expr_assign: expr_object "&=" expr -#line 532 "parser.ypp" +#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 2578 "parser.cpp" break; case 101: // expr_assign: expr_object "^=" expr -#line 534 "parser.ypp" +#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 2584 "parser.cpp" break; case 102: // expr_assign: expr_object "<<=" expr -#line 536 "parser.ypp" +#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 2590 "parser.cpp" break; case 103: // expr_assign: expr_object ">>=" expr -#line 538 "parser.ypp" +#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 2596 "parser.cpp" break; case 104: // expr_assign: expr_object "+=" expr -#line 540 "parser.ypp" +#line 541 "parser.ypp" { yylhs.value.as < ast::expr > ().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 542 "parser.ypp" +#line 543 "parser.ypp" { yylhs.value.as < ast::expr > ().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_assign: expr_object "*=" expr -#line 544 "parser.ypp" +#line 545 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } #line 2614 "parser.cpp" break; case 107: // expr_assign: expr_object "/=" expr -#line 546 "parser.ypp" +#line 547 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } #line 2620 "parser.cpp" break; case 108: // expr_assign: expr_object "%=" expr -#line 548 "parser.ypp" +#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 2626 "parser.cpp" break; case 109: // expr_increment: "++" expr_object -#line 553 "parser.ypp" +#line 554 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ()), true); } #line 2632 "parser.cpp" break; case 110: // expr_increment: expr_object "++" -#line 555 "parser.ypp" +#line 556 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ()), false); } #line 2638 "parser.cpp" break; case 111: // expr_decrement: "--" expr_object -#line 560 "parser.ypp" +#line 561 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ()), true); } #line 2644 "parser.cpp" break; case 112: // expr_decrement: expr_object "--" -#line 562 "parser.ypp" +#line 563 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ()), false); } #line 2650 "parser.cpp" break; case 113: // expr_ternary: expr "?" expr ":" expr -#line 567 "parser.ypp" +#line 568 "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 2656 "parser.cpp" break; case 114: // expr_binary: expr "||" expr -#line 572 "parser.ypp" +#line 573 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } #line 2662 "parser.cpp" break; case 115: // expr_binary: expr "&&" expr -#line 574 "parser.ypp" +#line 575 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } #line 2668 "parser.cpp" break; case 116: // expr_binary: expr "==" expr -#line 576 "parser.ypp" +#line 577 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } #line 2674 "parser.cpp" break; case 117: // expr_binary: expr "!=" expr -#line 578 "parser.ypp" +#line 579 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } #line 2680 "parser.cpp" break; case 118: // expr_binary: expr "<=" expr -#line 580 "parser.ypp" +#line 581 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } #line 2686 "parser.cpp" break; case 119: // expr_binary: expr ">=" expr -#line 582 "parser.ypp" +#line 583 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } #line 2692 "parser.cpp" break; case 120: // expr_binary: expr "<" expr -#line 584 "parser.ypp" +#line 585 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } #line 2698 "parser.cpp" break; case 121: // expr_binary: expr ">" expr -#line 586 "parser.ypp" +#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 2704 "parser.cpp" break; case 122: // expr_binary: expr "|" expr -#line 588 "parser.ypp" +#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 2710 "parser.cpp" break; case 123: // expr_binary: expr "&" expr -#line 590 "parser.ypp" +#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 2716 "parser.cpp" break; case 124: // expr_binary: expr "^" expr -#line 592 "parser.ypp" +#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 2722 "parser.cpp" break; case 125: // expr_binary: expr "<<" expr -#line 594 "parser.ypp" +#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 2728 "parser.cpp" break; case 126: // expr_binary: expr ">>" expr -#line 596 "parser.ypp" +#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 2734 "parser.cpp" break; case 127: // expr_binary: expr "+" expr -#line 598 "parser.ypp" +#line 599 "parser.ypp" { yylhs.value.as < ast::expr > ().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 600 "parser.ypp" +#line 601 "parser.ypp" { yylhs.value.as < ast::expr > ().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_binary: expr "*" expr -#line 602 "parser.ypp" +#line 603 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } #line 2752 "parser.cpp" break; case 130: // expr_binary: expr "/" expr -#line 604 "parser.ypp" +#line 605 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } #line 2758 "parser.cpp" break; case 131: // expr_binary: expr "%" expr -#line 606 "parser.ypp" +#line 607 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } #line 2764 "parser.cpp" break; case 132: // expr_primitive: expr_complement -#line 610 "parser.ypp" +#line 611 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_complement::ptr > ()); } #line 2770 "parser.cpp" break; case 133: // expr_primitive: expr_not -#line 611 "parser.ypp" +#line 612 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_not::ptr > ()); } #line 2776 "parser.cpp" break; case 134: // expr_primitive: expr_call -#line 612 "parser.ypp" +#line 613 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_call::ptr > ()); } #line 2782 "parser.cpp" break; case 135: // expr_primitive: expr_method -#line 613 "parser.ypp" +#line 614 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_method::ptr > ()); } #line 2788 "parser.cpp" break; case 136: // expr_primitive: expr_add_array -#line 614 "parser.ypp" +#line 615 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_add_array::ptr > ()); } #line 2794 "parser.cpp" break; case 137: // expr_primitive: expr_reference -#line 615 "parser.ypp" +#line 616 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_reference::ptr > ()); } #line 2800 "parser.cpp" break; case 138: // expr_primitive: expr_array -#line 616 "parser.ypp" +#line 617 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_array::ptr > ()); } #line 2806 "parser.cpp" break; case 139: // expr_primitive: expr_field -#line 617 "parser.ypp" +#line 618 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_field::ptr > ()); } #line 2812 "parser.cpp" break; case 140: // expr_primitive: expr_size -#line 618 "parser.ypp" +#line 619 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_size::ptr > ()); } #line 2818 "parser.cpp" break; case 141: // expr_primitive: expr_paren -#line 619 "parser.ypp" +#line 620 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_paren::ptr > ()); } #line 2824 "parser.cpp" break; case 142: // expr_primitive: expr_thisthread -#line 620 "parser.ypp" +#line 621 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_thisthread::ptr > ()); } #line 2830 "parser.cpp" break; case 143: // expr_primitive: expr_empty_array -#line 621 "parser.ypp" +#line 622 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_empty_array::ptr > ()); } #line 2836 "parser.cpp" break; case 144: // expr_primitive: expr_undefined -#line 622 "parser.ypp" +#line 623 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_undefined::ptr > ()); } #line 2842 "parser.cpp" break; case 145: // expr_primitive: expr_game -#line 623 "parser.ypp" +#line 624 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_game::ptr > ()); } #line 2848 "parser.cpp" break; case 146: // expr_primitive: expr_self -#line 624 "parser.ypp" +#line 625 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_self::ptr > ()); } #line 2854 "parser.cpp" break; case 147: // expr_primitive: expr_anim -#line 625 "parser.ypp" +#line 626 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_anim::ptr > ()); } #line 2860 "parser.cpp" break; case 148: // expr_primitive: expr_level -#line 626 "parser.ypp" +#line 627 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_level::ptr > ()); } #line 2866 "parser.cpp" break; case 149: // expr_primitive: expr_animation -#line 627 "parser.ypp" +#line 628 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_animation::ptr > ()); } #line 2872 "parser.cpp" break; case 150: // expr_primitive: expr_animtree -#line 628 "parser.ypp" +#line 629 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_animtree::ptr > ()); } #line 2878 "parser.cpp" break; case 151: // expr_primitive: expr_identifier -#line 629 "parser.ypp" +#line 630 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ()); } #line 2884 "parser.cpp" break; case 152: // expr_primitive: expr_istring -#line 630 "parser.ypp" +#line 631 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_istring::ptr > ()); } #line 2890 "parser.cpp" break; case 153: // expr_primitive: expr_string -#line 631 "parser.ypp" +#line 632 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_string::ptr > ()); } #line 2896 "parser.cpp" break; case 154: // expr_primitive: expr_vector -#line 632 "parser.ypp" +#line 633 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_vector::ptr > ()); } #line 2902 "parser.cpp" break; case 155: // expr_primitive: expr_float -#line 633 "parser.ypp" +#line 634 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_float::ptr > ()); } #line 2908 "parser.cpp" break; case 156: // expr_primitive: expr_integer -#line 634 "parser.ypp" +#line 635 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_integer::ptr > ()); } #line 2914 "parser.cpp" break; case 157: // expr_primitive: expr_false -#line 635 "parser.ypp" +#line 636 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_false::ptr > ()); } #line 2920 "parser.cpp" break; case 158: // expr_primitive: expr_true -#line 636 "parser.ypp" +#line 637 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_true::ptr > ()); } #line 2926 "parser.cpp" break; case 159: // expr_complement: "~" expr -#line 641 "parser.ypp" +#line 642 "parser.ypp" { yylhs.value.as < ast::expr_complement::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } #line 2932 "parser.cpp" break; case 160: // expr_not: "!" expr -#line 646 "parser.ypp" +#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 2938 "parser.cpp" break; case 161: // expr_call: expr_function -#line 650 "parser.ypp" +#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 2944 "parser.cpp" break; case 162: // expr_call: expr_pointer -#line 651 "parser.ypp" +#line 652 "parser.ypp" { yylhs.value.as < ast::expr_call::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::call > ())); } #line 2950 "parser.cpp" break; case 163: // expr_method: expr_object expr_function -#line 654 "parser.ypp" +#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 2956 "parser.cpp" break; case 164: // expr_method: expr_object expr_pointer -#line 655 "parser.ypp" +#line 656 "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 2962 "parser.cpp" break; case 165: // expr_function: expr_identifier "(" expr_arguments ")" -#line 660 "parser.ypp" +#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 2968 "parser.cpp" break; case 166: // expr_function: expr_path "::" expr_identifier "(" expr_arguments ")" -#line 662 "parser.ypp" +#line 663 "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 2974 "parser.cpp" break; case 167: // expr_function: "thread" expr_identifier "(" expr_arguments ")" -#line 664 "parser.ypp" +#line 665 "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 2980 "parser.cpp" break; case 168: // expr_function: "thread" expr_path "::" expr_identifier "(" expr_arguments ")" -#line 666 "parser.ypp" +#line 667 "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 2986 "parser.cpp" break; case 169: // expr_function: "childthread" expr_identifier "(" expr_arguments ")" -#line 668 "parser.ypp" +#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 2992 "parser.cpp" break; case 170: // expr_function: "childthread" expr_path "::" expr_identifier "(" expr_arguments ")" -#line 670 "parser.ypp" +#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 2998 "parser.cpp" break; case 171: // expr_pointer: "[" "[" expr "]" "]" "(" expr_arguments ")" -#line 675 "parser.ypp" +#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 3004 "parser.cpp" break; case 172: // expr_pointer: "thread" "[" "[" expr "]" "]" "(" expr_arguments ")" -#line 677 "parser.ypp" +#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 3010 "parser.cpp" break; case 173: // expr_pointer: "childthread" "[" "[" expr "]" "]" "(" expr_arguments ")" -#line 679 "parser.ypp" +#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 3016 "parser.cpp" break; case 174: // expr_pointer: "call" "[" "[" expr "]" "]" "(" expr_arguments ")" -#line 681 "parser.ypp" +#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 3022 "parser.cpp" break; case 175: // expr_add_array: "[" expr_arguments_no_empty "]" -#line 686 "parser.ypp" +#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 3028 "parser.cpp" break; case 176: // expr_parameters: expr_parameters "," expr_identifier -#line 691 "parser.ypp" +#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 3034 "parser.cpp" break; case 177: // expr_parameters: expr_identifier -#line 693 "parser.ypp" +#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 3040 "parser.cpp" break; case 178: // expr_parameters: %empty -#line 695 "parser.ypp" +#line 696 "parser.ypp" { yylhs.value.as < ast::expr_parameters::ptr > () = std::make_unique(yylhs.location); } #line 3046 "parser.cpp" break; case 179: // expr_arguments: expr_arguments_no_empty -#line 700 "parser.ypp" +#line 701 "parser.ypp" { yylhs.value.as < ast::expr_arguments::ptr > () = std::move(yystack_[0].value.as < ast::expr_arguments::ptr > ()); } #line 3052 "parser.cpp" break; case 180: // expr_arguments: %empty -#line 702 "parser.ypp" +#line 703 "parser.ypp" { yylhs.value.as < ast::expr_arguments::ptr > () = std::make_unique(yylhs.location); } #line 3058 "parser.cpp" break; case 181: // expr_arguments_no_empty: expr_arguments "," expr -#line 707 "parser.ypp" +#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 3064 "parser.cpp" break; case 182: // expr_arguments_no_empty: expr -#line 709 "parser.ypp" +#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 3070 "parser.cpp" break; case 183: // expr_reference: "::" expr_identifier -#line 714 "parser.ypp" +#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 3076 "parser.cpp" break; case 184: // expr_reference: expr_path "::" expr_identifier -#line 716 "parser.ypp" +#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 3082 "parser.cpp" break; case 185: // expr_array: expr_object "[" expr "]" -#line 721 "parser.ypp" +#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 3088 "parser.cpp" break; - case 186: // expr_field: expr_object "." expr_identifier -#line 726 "parser.ypp" + case 186: // expr_field: expr_object "." expr_identifier_nosize +#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 3094 "parser.cpp" break; - case 187: // expr_field: expr_object "field" -#line 728 "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 > ())); } + case 187: // expr_size: expr_object "." "size" +#line 732 "parser.ypp" + { yylhs.value.as < ast::expr_size::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ())); } #line 3100 "parser.cpp" break; - case 188: // expr_size: expr_object ".size" -#line 733 "parser.ypp" - { yylhs.value.as < ast::expr_size::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } + case 188: // expr_paren: "(" expr ")" +#line 737 "parser.ypp" + { yylhs.value.as < ast::expr_paren::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } #line 3106 "parser.cpp" break; - case 189: // expr_paren: "(" expr ")" -#line 738 "parser.ypp" - { yylhs.value.as < ast::expr_paren::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } + case 189: // expr_object: expr_call +#line 741 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_call::ptr > ()); } #line 3112 "parser.cpp" break; - case 190: // expr_object: expr_call + case 190: // expr_object: expr_method #line 742 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_call::ptr > ()); } + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_method::ptr > ()); } #line 3118 "parser.cpp" break; - case 191: // expr_object: expr_method + case 191: // expr_object: expr_array #line 743 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_method::ptr > ()); } + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_array::ptr > ()); } #line 3124 "parser.cpp" break; - case 192: // expr_object: expr_array + case 192: // expr_object: expr_field #line 744 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_array::ptr > ()); } + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_field::ptr > ()); } #line 3130 "parser.cpp" break; - case 193: // expr_object: expr_field + case 193: // expr_object: expr_game #line 745 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_field::ptr > ()); } + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_game::ptr > ()); } #line 3136 "parser.cpp" break; - case 194: // expr_object: expr_game + case 194: // expr_object: expr_self #line 746 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_game::ptr > ()); } + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_self::ptr > ()); } #line 3142 "parser.cpp" break; - case 195: // expr_object: expr_self + case 195: // expr_object: expr_anim #line 747 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_self::ptr > ()); } + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_anim::ptr > ()); } #line 3148 "parser.cpp" break; - case 196: // expr_object: expr_anim + case 196: // expr_object: expr_level #line 748 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_anim::ptr > ()); } + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_level::ptr > ()); } #line 3154 "parser.cpp" break; - case 197: // expr_object: expr_level + case 197: // expr_object: expr_identifier #line 749 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_level::ptr > ()); } + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ()); } #line 3160 "parser.cpp" break; - case 198: // expr_object: expr_identifier -#line 750 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ()); } + case 198: // expr_thisthread: "thisthread" +#line 754 "parser.ypp" + { yylhs.value.as < ast::expr_thisthread::ptr > () = std::make_unique(yylhs.location); } #line 3166 "parser.cpp" break; - case 199: // expr_thisthread: "thisthread" -#line 755 "parser.ypp" - { yylhs.value.as < ast::expr_thisthread::ptr > () = std::make_unique(yylhs.location); } + case 199: // expr_empty_array: "[" "]" +#line 759 "parser.ypp" + { yylhs.value.as < ast::expr_empty_array::ptr > () = std::make_unique(yylhs.location); } #line 3172 "parser.cpp" break; - case 200: // expr_empty_array: "[" "]" -#line 760 "parser.ypp" - { yylhs.value.as < ast::expr_empty_array::ptr > () = std::make_unique(yylhs.location); } + case 200: // expr_undefined: "undefined" +#line 764 "parser.ypp" + { yylhs.value.as < ast::expr_undefined::ptr > () = std::make_unique(yylhs.location); } #line 3178 "parser.cpp" break; - case 201: // expr_undefined: "undefined" -#line 765 "parser.ypp" - { yylhs.value.as < ast::expr_undefined::ptr > () = std::make_unique(yylhs.location); } + case 201: // expr_game: "game" +#line 769 "parser.ypp" + { yylhs.value.as < ast::expr_game::ptr > () = std::make_unique(yylhs.location); } #line 3184 "parser.cpp" break; - case 202: // expr_game: "game" -#line 770 "parser.ypp" - { yylhs.value.as < ast::expr_game::ptr > () = std::make_unique(yylhs.location); } + case 202: // expr_self: "self" +#line 774 "parser.ypp" + { yylhs.value.as < ast::expr_self::ptr > () = std::make_unique(yylhs.location); } #line 3190 "parser.cpp" break; - case 203: // expr_self: "self" -#line 775 "parser.ypp" - { yylhs.value.as < ast::expr_self::ptr > () = std::make_unique(yylhs.location); } + case 203: // expr_anim: "anim" +#line 779 "parser.ypp" + { yylhs.value.as < ast::expr_anim::ptr > () = std::make_unique(yylhs.location); } #line 3196 "parser.cpp" break; - case 204: // expr_anim: "anim" -#line 780 "parser.ypp" - { yylhs.value.as < ast::expr_anim::ptr > () = std::make_unique(yylhs.location); } + case 204: // expr_level: "level" +#line 784 "parser.ypp" + { yylhs.value.as < ast::expr_level::ptr > () = std::make_unique(yylhs.location); } #line 3202 "parser.cpp" break; - case 205: // expr_level: "level" -#line 785 "parser.ypp" - { yylhs.value.as < ast::expr_level::ptr > () = std::make_unique(yylhs.location); } + case 205: // expr_animation: "%" "identifier" +#line 789 "parser.ypp" + { yylhs.value.as < ast::expr_animation::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 3208 "parser.cpp" break; - case 206: // expr_animation: "%" "identifier" -#line 790 "parser.ypp" - { yylhs.value.as < ast::expr_animation::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 206: // expr_animtree: "#animtree" +#line 794 "parser.ypp" + { yylhs.value.as < ast::expr_animtree::ptr > () = std::make_unique(yylhs.location); } #line 3214 "parser.cpp" break; - case 207: // expr_animtree: "#animtree" -#line 795 "parser.ypp" - { yylhs.value.as < ast::expr_animtree::ptr > () = std::make_unique(yylhs.location); } + case 207: // expr_identifier_nosize: "identifier" +#line 799 "parser.ypp" + { yylhs.value.as < ast::expr_identifier::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 3220 "parser.cpp" break; case 208: // expr_identifier: "identifier" -#line 800 "parser.ypp" +#line 804 "parser.ypp" { yylhs.value.as < ast::expr_identifier::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 3226 "parser.cpp" break; - case 209: // expr_path: "path" -#line 805 "parser.ypp" - { yylhs.value.as < ast::expr_path::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 209: // expr_identifier: "size" +#line 806 "parser.ypp" + { yylhs.value.as < ast::expr_identifier::ptr > () = std::make_unique(yylhs.location, "size"); } #line 3232 "parser.cpp" break; - case 210: // expr_path: expr_identifier -#line 807 "parser.ypp" - { yylhs.value.as < ast::expr_path::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < ast::expr_identifier::ptr > ()->value); } + case 210: // expr_path: "identifier" +#line 811 "parser.ypp" + { yylhs.value.as < ast::expr_path::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 3238 "parser.cpp" break; - case 211: // expr_istring: "localized string" -#line 812 "parser.ypp" - { yylhs.value.as < ast::expr_istring::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 211: // expr_path: "path" +#line 813 "parser.ypp" + { yylhs.value.as < ast::expr_path::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 3244 "parser.cpp" break; - case 212: // expr_string: "string literal" -#line 817 "parser.ypp" - { yylhs.value.as < ast::expr_string::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 212: // expr_istring: "localized string" +#line 818 "parser.ypp" + { yylhs.value.as < ast::expr_istring::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 3250 "parser.cpp" break; - case 213: // expr_vector: "(" expr "," expr "," expr ")" -#line 822 "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 > ())); } + case 213: // expr_string: "string literal" +#line 823 "parser.ypp" + { yylhs.value.as < ast::expr_string::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 3256 "parser.cpp" break; - case 214: // expr_float: "-" "float" -#line 827 "parser.ypp" - { yylhs.value.as < ast::expr_float::ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } + case 214: // 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 3262 "parser.cpp" break; - case 215: // expr_float: "float" -#line 829 "parser.ypp" - { yylhs.value.as < ast::expr_float::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 215: // 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 3268 "parser.cpp" break; - case 216: // expr_integer: "-" "integer" -#line 834 "parser.ypp" - { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } + 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 3274 "parser.cpp" break; - case 217: // expr_integer: "integer" -#line 836 "parser.ypp" - { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 217: // 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 3280 "parser.cpp" break; - case 218: // expr_false: "false" -#line 841 "parser.ypp" - { yylhs.value.as < ast::expr_false::ptr > () = std::make_unique(yylhs.location); } + 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 3286 "parser.cpp" break; - case 219: // expr_true: "true" -#line 846 "parser.ypp" - { yylhs.value.as < ast::expr_true::ptr > () = std::make_unique(yylhs.location); } + case 219: // expr_false: "false" +#line 847 "parser.ypp" + { yylhs.value.as < ast::expr_false::ptr > () = std::make_unique(yylhs.location); } #line 3292 "parser.cpp" break; + case 220: // expr_true: "true" +#line 852 "parser.ypp" + { yylhs.value.as < ast::expr_true::ptr > () = std::make_unique(yylhs.location); } +#line 3298 "parser.cpp" + break; -#line 3296 "parser.cpp" + +#line 3302 "parser.cpp" default: break; @@ -3483,30 +3489,31 @@ namespace xsk { namespace gsc { namespace h1 { "else", "do", "while", "for", "foreach", "in", "switch", "case", "default", "break", "continue", "return", "breakpoint", "prof_begin", "prof_end", "thread", "childthread", "thisthread", "call", "true", - "false", "undefined", ".size", "game", "self", "anim", "level", "(", ")", + "false", "undefined", "size", "game", "self", "anim", "level", "(", ")", "{", "}", "[", "]", ",", ".", "::", ":", ";", "?", "++", "--", "<<", ">>", "||", "&&", "==", "!=", "<=", ">=", "<", ">", "!", "~", "=", "+=", "-=", "*=", "/=", "%=", "|=", "&=", "^=", ">>=", "<<=", "|", "&", "^", - "+", "-", "*", "/", "%", "field", "path", "identifier", "string literal", - "localized string", "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_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", + "+", "-", "*", "/", "%", "path", "identifier", "string literal", + "localized string", "float", "integer", "SIZEOF", "ADD_ARRAY", "THEN", + "TERN", "NEG", "ANIMREF", "PREINC", "PREDEC", "POSTINC", "POSTDEC", + "$accept", "root", "program", "inline", "include", "declaration", + "decl_usingtree", "decl_constant", "decl_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_nosize", "expr_identifier", "expr_path", "expr_istring", "expr_string", "expr_vector", "expr_float", "expr_integer", "expr_false", "expr_true", YY_NULLPTR }; @@ -3773,516 +3780,510 @@ namespace xsk { namespace gsc { namespace h1 { } - const short parser::yypact_ninf_ = -267; + const short parser::yypact_ninf_ = -271; const short parser::yytable_ninf_ = -211; const short parser::yypact_[] = { - 4, -267, -267, -69, -69, -28, -267, 26, 4, -267, - -267, -267, -267, -267, -267, -40, -267, -267, -16, -3, - 5, -267, -267, -267, -267, -27, 1039, -267, -267, -267, - 23, -26, -267, -267, -36, -34, -267, 42, -267, -267, - -267, -267, -267, -267, -267, 1039, 625, -27, 1039, 1039, - -24, 14, -267, -267, -267, 2008, -267, -267, -267, -267, - -267, 291, 431, -267, -267, -267, -267, 592, 663, -267, - -267, 1003, -267, -267, -267, 1013, 1077, 1244, 1252, -267, - -267, 67, 44, -267, -267, -267, -267, -267, -267, -267, - 50, 68, -27, 60, 80, 76, 89, 90, 78, 94, - 1294, 625, -267, 2091, 88, 95, -267, -267, -267, -267, - -267, -267, -267, 1039, 1039, 1039, 1039, 1039, 1039, 1039, - 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, - 1039, 1039, -267, 1103, -27, -267, -267, -267, 104, 101, - 1039, -27, -267, 789, -267, -267, 1039, 1039, -27, 1039, - 1039, -27, 1039, -267, 1039, 1738, 1039, -267, 1973, 126, - 126, 1243, 2122, 2204, 2204, 415, 415, 415, 415, 2132, - 2173, 2163, 63, 63, -267, -267, -267, 1778, -267, -27, - -5, -267, 110, 895, 1039, 105, -2, 116, 1232, 117, - 118, 120, 121, -49, 113, 122, 123, 975, 125, 138, - 141, -267, 140, 548, 548, -267, -267, 841, -267, -267, - -267, -267, -267, -267, -267, -267, -267, -267, -267, -267, - -267, -267, -267, -267, -267, -267, -267, -267, -267, -267, - -267, -267, -267, -267, 137, 143, 144, 146, 149, -267, - -267, 1151, -267, -267, -267, -267, -29, 1818, 15, 148, - 1858, 16, 150, 1898, 1937, 155, 2091, 1039, -267, 110, - -267, 1039, -267, -267, 949, 2043, -267, 161, -267, 1039, - 198, 1039, 690, -27, 1039, 124, 165, 167, -267, -267, - -267, -267, 2078, -267, 1039, 1039, 1039, -267, -267, -4, - -4, -267, -267, -267, -267, -267, -267, -267, 180, 181, - 182, 184, -267, -267, 1039, 1039, 1039, 1039, 1039, 1039, - 1039, 1039, 1039, 1039, 1039, 174, -267, 1039, 183, -267, - 1039, 185, 1039, 191, 2091, 17, -267, -267, -267, 175, - 1460, 192, 1494, 186, -267, -267, -267, 2, -9, 1528, - -267, -267, -267, 38, 53, 1738, 1039, 1039, 1039, 1039, - 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, - 2091, 193, 62, 194, 71, 197, 1562, 1039, -267, -267, - 1232, 1039, 1232, 1039, 1039, -27, 68, 188, 189, 1596, - 1338, 1382, 1426, 1039, -267, 1039, -267, 1039, -267, 72, - 228, 1630, -267, 2091, 195, 1664, 224, -267, -267, -267, - 199, 200, 1039, 201, 1039, 203, 1039, 75, 82, 86, - -267, 1232, 205, 690, 1232, 1039, -267, -267, 202, -267, - 215, -267, 216, -267, -267, -267, -267, -267, 222, -267, - 1698, 214, 219, 220, 1232, 1232, -267, -267, -267, -267, - -267 + 9, -271, -271, -48, -48, -34, -271, -271, 29, 9, + -271, -271, -271, -271, -271, -271, -44, -271, -271, -30, + -9, -85, -271, -271, -271, -271, -20, 684, -271, -271, + -271, -6, 21, -271, -271, -28, 39, -271, 15, -271, + -271, -271, -271, -271, -271, -271, 684, 1024, -20, 684, + 684, -38, 2, 43, -271, -271, -271, 1959, -271, -271, + -271, -271, -271, 42, 72, -271, -271, -271, -271, 86, + 186, -271, -271, 427, -271, -271, -271, 490, 615, 712, + 876, -271, -271, 25, 50, -271, -271, -271, -271, -271, + -271, -271, 44, 62, -20, 64, 82, 78, 68, 92, + 96, 103, 1284, 1024, -271, 2042, 118, 132, -271, -271, + -271, -271, -271, -271, -271, 684, 684, 684, 684, 684, + 684, 684, 684, 684, 684, 684, 684, 684, 684, 684, + 684, 684, 684, 684, 1150, -2, -271, -271, 141, 147, + 684, -20, -271, 792, -271, -271, 684, 684, -20, 684, + 684, -20, 684, -271, 684, 1728, 684, -271, 1924, 315, + 315, 2073, 2083, 1078, 1078, 165, 165, 165, 165, 2114, + 2155, 2124, -4, -4, -271, -271, -271, 1768, -271, -271, + -271, -20, 46, -271, 158, 921, 684, 149, -37, 162, + 1274, 163, 166, 167, 168, 12, 164, 172, 173, 1087, + 175, 176, 178, -271, 191, -10, -10, -271, -271, 844, + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271, 184, 187, 189, 192, + 200, -271, -271, 1197, -271, -271, -271, -271, 141, 1808, + 77, 201, 1848, 94, 215, 1888, 1019, 181, 2042, 684, + -271, 158, -271, 684, -271, -271, 998, 1994, -271, 199, + -271, 684, 241, 684, 11, -20, 684, 169, 208, 217, + -271, -271, -271, -271, 2029, -271, 684, 684, 684, -271, + -271, 953, 953, -271, -271, -271, -271, -271, -271, -271, + 224, 227, 228, 230, 188, -271, -271, 684, 684, 684, + 684, 684, 684, 684, 684, 684, 684, 684, 232, -271, + 684, 233, -271, 684, 237, 684, 243, 2042, 100, -271, + -271, -271, 234, 1450, 245, 1484, 240, -271, -271, -271, + 550, -14, 1518, -271, -271, -271, 104, 107, 1728, 684, + 684, 684, 684, 2042, 2042, 2042, 2042, 2042, 2042, 2042, + 2042, 2042, 2042, 2042, 251, 110, 252, 113, 275, 1552, + 684, -271, -271, 1274, 684, 1274, 684, 684, -20, 62, + 268, 269, 1586, 1328, 1372, 1416, 684, -271, 684, -271, + 684, -271, 124, 307, 1620, -271, 2042, 271, 1654, 305, + -271, -271, -271, 276, 281, 684, 283, 684, 286, 684, + 143, 146, 150, -271, 1274, 289, 11, 1274, 684, -271, + -271, 288, -271, 299, -271, 300, -271, -271, -271, -271, + -271, 301, -271, 1688, 294, 296, 298, 1274, 1274, -271, + -271, -271, -271, -271 }; const unsigned char parser::yydefact_[] = { - 3, 12, 13, 0, 0, 0, 208, 0, 2, 7, - 8, 9, 14, 15, 16, 0, 209, 210, 0, 0, - 0, 1, 4, 5, 6, 178, 0, 10, 11, 212, - 0, 0, 177, 207, 0, 0, 199, 0, 219, 218, - 201, 202, 203, 204, 205, 0, 180, 0, 0, 0, - 0, 0, 211, 215, 217, 0, 93, 94, 95, 132, - 133, 134, 135, 161, 162, 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, - 0, 0, 0, 0, 210, 0, 0, 210, 0, 0, - 0, 180, 200, 182, 0, 179, 183, 160, 159, 214, - 216, 206, 18, 0, 0, 0, 0, 0, 0, 0, + 3, 12, 13, 0, 0, 0, 209, 208, 0, 2, + 7, 8, 9, 14, 15, 16, 0, 211, 210, 0, + 0, 0, 1, 4, 5, 6, 178, 0, 10, 11, + 213, 0, 0, 177, 206, 0, 0, 198, 0, 220, + 219, 200, 201, 202, 203, 204, 0, 180, 0, 0, + 0, 0, 0, 208, 212, 216, 218, 0, 93, 94, + 95, 132, 133, 134, 135, 161, 162, 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, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 180, 199, 182, 0, 179, 183, 160, + 159, 215, 217, 205, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 188, 0, 0, 187, 163, 164, 210, 0, + 0, 0, 0, 0, 0, 0, 163, 164, 0, 0, 180, 0, 17, 0, 19, 176, 0, 180, 0, 0, - 180, 0, 0, 189, 0, 182, 0, 175, 0, 125, + 180, 0, 0, 188, 0, 182, 0, 175, 0, 125, 126, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 127, 128, 129, 130, 131, 0, 186, 0, - 0, 179, 184, 0, 0, 0, 0, 0, 0, 0, + 123, 124, 127, 128, 129, 130, 131, 0, 187, 207, + 186, 0, 0, 179, 184, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 190, 191, 192, - 193, 0, 194, 195, 196, 197, 198, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 181, 0, 185, 0, - 165, 180, 52, 48, 0, 0, 72, 0, 73, 0, - 0, 0, 58, 0, 0, 0, 0, 0, 85, 86, - 87, 89, 0, 90, 180, 180, 0, 190, 191, 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, 167, 180, 0, 169, - 180, 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, 180, 166, 74, - 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 180, 168, 180, 170, 180, 213, 0, - 75, 0, 77, 96, 0, 0, 0, 82, 91, 92, - 0, 0, 180, 0, 180, 0, 180, 0, 0, 0, - 171, 0, 0, 58, 0, 0, 64, 66, 179, 69, - 179, 71, 179, 172, 173, 174, 76, 78, 0, 80, - 0, 0, 0, 0, 0, 0, 65, 68, 70, 79, - 81 + 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, 189, + 190, 191, 192, 0, 193, 194, 195, 196, 197, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 181, 0, + 185, 0, 165, 180, 52, 48, 0, 0, 72, 0, + 73, 0, 0, 0, 58, 0, 0, 0, 0, 0, + 85, 86, 87, 89, 0, 90, 180, 180, 0, 189, + 190, 109, 111, 53, 49, 61, 62, 63, 59, 60, + 0, 0, 0, 0, 0, 110, 112, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 167, + 180, 0, 169, 180, 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, + 180, 166, 74, 0, 0, 0, 97, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 180, 168, 180, 170, + 180, 214, 0, 75, 0, 77, 96, 0, 0, 0, + 82, 91, 92, 0, 0, 180, 0, 180, 0, 180, + 0, 0, 0, 171, 0, 0, 58, 0, 0, 64, + 66, 179, 69, 179, 71, 179, 172, 173, 174, 76, + 78, 0, 80, 0, 0, 0, 0, 0, 0, 65, + 68, 70, 79, 81 }; const short parser::yypgoto_[] = { - -267, -267, -267, 275, 277, 280, -267, -267, -267, -155, - 85, -267, -267, -267, -89, -120, -267, -267, -267, -267, - -267, -267, -267, -267, -267, -267, -267, -267, -267, -267, - -267, -267, -267, -267, -267, -267, -267, -267, -267, -267, - 190, -267, -266, -259, -258, -267, -267, -267, -267, -267, - -86, -12, -66, -60, -267, -267, 13, -45, -267, -6, - 179, -267, -267, 249, -267, -267, -267, 282, 337, 362, - 372, -267, -267, 0, 6, -267, -13, -267, -267, 106, - -267, -267 + -271, -271, -271, 356, 357, 359, -271, -271, -271, -173, + 160, -271, -271, -271, -91, -45, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + 190, -271, -270, -267, -261, -271, -271, -271, -271, -271, + -88, -18, -70, -68, -271, -271, 14, -46, -271, -11, + 182, -271, -271, 270, -271, -271, -271, 279, 304, 329, + 375, -271, -271, -271, 0, 7, -271, -15, -271, -271, + 179, -271, -271 }; const short parser::yydefgoto_[] = { - 0, 7, 8, 9, 10, 11, 12, 13, 14, 205, - 206, 264, 207, 208, 209, 333, 210, 211, 212, 213, - 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, - 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, - 103, 394, 234, 235, 236, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, 31, 104, 181, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - 88, 89 + 0, 8, 9, 10, 11, 12, 13, 14, 15, 207, + 208, 266, 209, 210, 211, 336, 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, 397, 236, 237, 238, 58, 59, 60, 61, 62, + 63, 64, 65, 66, 67, 32, 106, 183, 68, 69, + 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 180, 83, 84, 85, 86, 87, 88, + 89, 90, 91 }; const short parser::yytable_[] = { - 15, 105, 144, 17, 17, 136, 334, 30, 15, 18, - 19, 137, 25, 335, 336, 1, 2, 3, 4, 5, - 93, 374, 96, 140, 20, 32, 21, 91, 263, 16, - 6, -210, 92, 270, 94, 97, 34, 35, 26, 37, - 95, 98, 34, 35, 275, 37, 27, 106, 260, 375, - 267, 29, 133, 156, 54, 134, 105, 237, 133, 28, - 268, 134, 16, 6, 16, 6, 302, 303, 316, 319, - 368, 138, 6, 156, 156, 156, 90, 139, 109, 110, - 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 377, 145, 135, 16, 6, 156, 237, 99, 135, - 16, 6, 237, 6, 141, 29, 378, -198, -198, 327, - -198, 156, 142, 111, -198, 384, 146, 287, 287, 140, - 156, 237, 143, -198, 386, 410, -198, -210, 423, 156, - 156, 238, 147, 156, 178, 424, 148, 239, 151, 425, - 156, 182, 150, 246, 156, 149, 156, 334, 249, 139, - 152, 252, 157, 180, 335, 336, 140, 129, 130, 131, - 248, 179, 261, 251, -198, -198, -198, 266, 269, 271, - 272, 238, 273, 274, 278, 136, 238, 239, 237, 259, - 276, 137, 239, 246, 279, 280, 287, 283, 246, 139, - 284, 288, 288, 285, 139, 238, 286, 239, 239, 293, - 317, 239, 320, 246, 246, 294, 295, 246, 296, 139, - 139, 297, 323, 139, 329, 390, 55, 392, 127, 128, - 129, 130, 131, 136, 136, 331, 340, 110, 341, 137, - 137, 361, 346, 347, 348, 100, 349, 369, 107, 108, - 363, 138, 365, 367, 371, 383, 385, 139, 373, 387, - 398, 399, 238, 411, 415, 431, 426, 413, 239, 429, - 288, 416, 417, 419, 246, 421, 239, 427, 432, 433, - 139, 136, 246, 338, 325, 434, 436, 137, 139, 439, - 440, 437, 438, 22, 237, 23, 237, 397, 24, 138, - 138, 155, 292, 428, 0, 139, 139, 343, 344, 277, - 0, 0, 0, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, - 175, 176, 240, 177, 0, 237, 0, 287, 237, 0, - 362, -190, -190, 364, -190, 0, 247, 138, -190, 250, - 0, 0, 253, 139, 254, 0, 256, -190, 237, 237, - -190, 0, 0, 0, 0, 0, 0, 418, 238, 420, - 238, 422, 240, 0, 239, 0, 239, 240, 0, 0, - 246, 0, 246, 0, 265, 396, 139, 0, 139, 0, - 389, 0, 240, 240, 0, 0, 240, 282, -190, -190, - -190, 0, 241, 0, 0, 0, 407, 0, 408, 238, - 409, 288, 238, 0, 0, 239, 0, 239, 239, 0, - 0, 246, 0, 246, 246, 0, 0, 139, 0, 139, - 139, 0, 238, 238, 0, 242, 0, 0, 239, 239, - 0, 0, 241, 0, 246, 246, 0, 241, 0, 0, - 139, 139, 0, 240, 0, 0, 0, 324, 0, 0, - 0, 240, 289, 290, 0, 0, 241, 0, 0, 330, - 0, 332, 0, 0, 339, 242, 0, 0, 0, 0, - 242, -191, -191, 0, -191, 0, 345, 0, -191, 0, - 243, 114, 115, 0, 0, 242, 242, -191, 0, 242, - -191, 0, 0, 0, 350, 351, 352, 353, 354, 355, - 356, 357, 358, 359, 360, 244, 0, 127, 128, 129, - 130, 131, 366, 241, 0, 245, 0, 0, 0, 0, - 243, 337, 0, 0, 0, 243, 0, 0, -191, -191, - -191, 0, 0, 0, 0, 0, 379, 380, 381, 382, - 243, 243, 0, 0, 243, 244, 242, 0, 0, 240, - 244, 240, 0, 0, 242, 245, 0, 0, 0, 0, - 245, 391, 0, 393, 395, 244, 244, 0, 0, 244, - 0, 0, 0, 0, 0, 245, 245, 0, 0, 245, - 0, 0, 0, 0, 0, 0, 0, 0, 34, 35, - 240, 37, 240, 240, 0, 0, 41, 42, 43, 44, - 0, 243, 0, 0, 202, 430, 0, 0, 0, 243, - 0, 0, 0, 240, 240, 0, 0, 0, 0, 241, - 0, 241, 0, 0, 0, 0, 244, 0, 0, 0, - 0, 0, -192, -192, 244, -192, 245, 0, 0, -192, - 0, 33, 0, 0, 245, 0, 16, 6, -192, 0, - 0, -192, 242, 0, 242, 0, 0, 0, 0, 0, - 241, 0, 337, 241, 0, 34, 35, 36, 37, 38, - 39, 40, 0, 41, 42, 43, 44, 45, 0, 0, - 0, 101, 102, 241, 241, 47, 0, 0, 0, -192, - -192, -192, 0, 242, 0, 242, 242, 0, 0, 0, - 0, 48, 49, -193, -193, 0, -193, 243, 0, 243, - -193, 0, 0, 0, 0, 0, 242, 242, 50, -193, - 0, 51, -193, 16, 6, 29, 52, 53, 54, 0, - 34, 35, 244, 37, 244, 0, 0, 0, 41, 42, - 43, 44, 245, 0, 245, 0, 202, 0, 243, 0, - 243, 243, 0, 0, 203, 204, 0, 0, 0, 0, - -193, -193, -193, 0, 0, 0, 0, 0, 0, 0, - 0, 243, 243, 244, 0, 244, 244, 0, 0, 0, - 0, 0, 0, 245, 0, 245, 245, 0, 16, 6, - 0, 0, 0, 0, 0, 0, 244, 244, 0, 0, - 183, 0, 0, 0, 0, 0, 245, 245, 184, 0, - 0, 185, 186, 187, 0, 188, 189, 190, 191, 0, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 34, - 35, 0, 37, 0, 0, 0, 0, 41, 42, 43, - 44, 0, 0, 143, 201, 202, 0, 0, 0, 0, - 0, 0, 183, 203, 204, 0, 0, 0, 0, 0, - 184, 0, 0, 185, 186, 187, 0, 188, 189, 190, - 191, 0, 192, 193, 194, 195, 196, 197, 198, 199, - 200, 34, 35, 0, 37, 0, 0, 16, 6, 41, - 42, 43, 44, 0, 0, 143, 291, 202, 0, 0, - 0, 0, 0, 0, 0, 203, 204, 262, 0, 0, - 0, 0, 0, 0, 184, 0, 0, 185, 186, 187, - 0, 188, 189, 190, 191, 0, 192, 193, 194, 195, - 196, 197, 198, 199, 200, 34, 35, 0, 37, 16, - 6, 0, 0, 41, 42, 43, 44, 0, 0, 143, - 0, 202, 0, 0, 0, 0, 0, 0, 0, 203, - 204, 326, 0, 0, 0, 0, 0, 0, 184, 0, - 0, 185, 186, 187, 0, 188, 189, 190, 191, 0, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 34, - 35, 33, 37, 16, 6, 0, 0, 41, 42, 43, - 44, 0, 0, 143, 0, 202, 0, 0, 0, 0, - 0, 0, 0, 203, 204, 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, 34, 35, 0, 37, 16, 6, 0, - 132, 48, 49, -194, -194, 33, -194, 0, 0, 133, - -194, 0, 134, 0, 0, 0, 0, 0, 50, -194, - 0, 51, -194, 16, 6, 29, 52, 53, 54, 34, - 35, 36, 37, 38, 39, 40, 0, 41, 42, 43, - 44, 45, 0, 0, 0, 46, 0, 0, 0, 47, - 135, 16, 6, 0, 0, 0, 0, 0, 0, 0, - -194, -194, -194, 0, 0, 48, 49, -195, -195, 33, - -195, 0, 0, 0, -195, 0, 0, 0, 0, 0, - 0, 0, 50, -195, 0, 51, -195, 16, 6, 29, - 52, 53, 54, 34, 35, 36, 37, 38, 39, 40, - 0, 41, 42, 43, 44, 45, 0, 0, 0, 101, - 0, 0, 0, 47, 0, 0, 0, 0, 298, 299, - 0, 300, 301, 0, -195, -195, -195, 0, 0, 48, - 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 34, 35, 0, 37, 0, 50, 0, 0, 51, - 0, 16, 6, 29, 52, 53, 54, 133, 0, 0, - 134, 0, 0, 0, 0, 302, 303, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 304, - 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 0, 0, 0, 0, 0, 0, 0, 0, 135, 16, - 6, 184, 0, 0, 185, 186, 187, 0, 188, 189, - 190, 191, 0, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 34, 35, 0, 37, 0, 0, 0, 0, - 41, 42, 43, 44, -196, -196, 143, -196, 202, 0, - 0, -196, -197, -197, 0, -197, 203, 204, 0, -197, - -196, 0, 0, -196, 0, 0, 0, 0, -197, 114, - 115, -197, 117, 118, 119, 120, 121, 122, 123, 0, + 16, 107, 144, 136, 337, 137, 31, 338, 26, 16, + 19, 20, 265, 339, 30, 269, 377, 272, 21, 6, + 1, 2, 3, 4, 5, 270, 33, 6, 95, 22, + 35, 36, 28, 38, 27, 96, 99, 6, 42, 43, + 44, 45, 97, 100, 378, 178, 204, 92, 108, 17, + 18, 35, 36, 29, 38, 239, 6, 107, 6, 42, + 43, 44, 45, 111, 112, -197, -197, 204, -197, 17, + 53, 101, -197, 138, 93, 205, 206, 140, 7, 94, + 139, -197, -189, -189, -197, -189, 6, 17, 53, -189, + 131, 132, 133, 330, 145, 98, 179, 239, -189, 262, + 113, -189, 239, -210, 156, 277, 142, 7, 17, 53, + 141, 30, -190, -190, 56, -190, 143, 289, 289, -190, + 146, 239, -197, -197, 149, 240, -191, -191, -190, -191, + 319, -190, 241, -191, 147, 156, 17, 53, 148, -189, + -189, 184, -191, 248, 150, -191, 337, 322, 251, 338, + 139, 254, 156, 371, 182, 339, 151, 380, 156, 152, + 381, 250, 156, 387, 253, 156, 389, 240, 156, -190, + -190, 156, 240, 136, 241, 137, 156, 413, 239, 241, + 278, 261, 156, -191, -191, 248, 289, 290, 290, 157, + 248, 240, 139, 140, 241, 241, 426, 139, 241, 427, + 393, 156, 395, 428, 156, 248, 248, 181, 156, 248, + 263, 268, 139, 139, 271, 273, 139, 57, 274, 275, + 276, 136, 136, 137, 137, 280, -192, -192, 286, -192, + 287, 116, 117, -192, 281, 282, 102, 285, 326, 109, + 110, 429, -192, 138, 432, -192, 295, 288, 240, 296, + 139, 297, 332, 320, 298, 241, 290, 129, 130, 131, + 132, 133, 299, 241, 442, 443, 248, 323, 334, 343, + 136, 112, 137, 139, 248, 341, 349, 328, 344, 350, + 351, 139, 352, -192, -192, 239, 179, 239, 400, 364, + 366, 138, 138, 155, 368, 370, 372, 374, 139, 139, + 346, 347, 376, 386, 388, 158, 159, 160, 161, 162, + 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, + 173, 174, 175, 176, 177, 242, 239, 390, 289, 239, + 401, 402, 414, 416, 365, 418, 249, 367, 419, 252, + 138, 434, 255, 420, 256, 422, 258, 139, 424, 239, + 239, 430, 435, 436, 437, 240, 439, 240, 440, 421, + 441, 423, 241, 425, 241, 23, 24, 242, 25, 294, + 0, 431, 242, 248, 279, 248, 267, 0, 399, 0, + 139, 0, 139, 0, 392, 0, 0, 242, 242, 284, + 0, 242, 0, 0, 0, 0, 240, 0, 290, 240, + 410, 0, 411, 241, 412, 241, 241, 129, 130, 131, + 132, 133, 0, 243, 248, 0, 248, 248, 0, 240, + 240, 139, 244, 139, 139, 0, 241, 241, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 248, 248, 0, + 0, 0, 0, 0, 139, 139, 0, 245, 242, 327, + 0, 0, 0, 0, 0, 243, 242, 0, 0, 0, + 243, 333, 0, 335, 244, 0, 342, 35, 36, 244, + 38, 0, 246, 0, 6, 291, 292, 0, 348, 243, + 0, 0, 0, 134, 244, 244, 135, 0, 244, 245, + 0, 0, 0, 0, 245, 0, 0, 353, 354, 355, + 356, 357, 358, 359, 360, 361, 362, 363, 0, 245, + 245, 0, 0, 245, 246, 369, 0, 0, 247, 246, + 0, 0, 0, 0, 17, 53, 0, 0, 0, 0, + -193, -193, 0, -193, 246, 246, 243, -193, 246, 382, + 383, 384, 385, 0, 340, 244, -193, 0, 0, -193, + 0, 0, 0, 244, 0, 242, 0, 242, 0, 0, + 247, 0, 0, 0, 394, 247, 396, 398, 0, 0, + 245, 0, 0, 0, 0, 0, 0, 0, 245, 0, + 247, 247, 0, 0, 247, 0, 0, -193, -193, 0, + 35, 36, 0, 38, 0, 246, 242, 6, 242, 242, + 0, 0, 0, 246, 0, 0, 134, 0, 433, 304, + 0, 0, 0, 0, 305, 306, 0, 0, 0, 242, + 242, 0, 0, 0, 0, 0, 0, 0, 307, 308, + 309, 310, 311, 312, 313, 314, 315, 316, 317, 0, + 0, 247, 0, 243, 0, 243, 0, 17, 53, 247, + 0, 0, 244, 0, 244, -194, -194, 0, -194, 0, + 0, 0, -194, 0, 0, 0, 0, 0, 0, 0, + 0, -194, 0, 0, -194, 0, 0, 245, 0, 245, + 0, 0, 0, 0, 243, 0, 340, 243, 0, 0, + 0, 0, 0, 244, 0, 244, 244, 0, 0, 0, + 34, 0, 246, 0, 246, 0, 0, 243, 243, 0, + 0, 0, -194, -194, 0, 0, 244, 244, 245, 0, + 245, 245, 0, 0, 35, 36, 37, 38, 39, 40, + 41, 6, 42, 43, 44, 45, 46, 0, 0, 0, + 47, 245, 245, 246, 48, 246, 246, 0, 247, 0, + 247, 0, -195, -195, 0, -195, 0, 0, 0, -195, + 49, 50, 0, 0, 0, 0, 246, 246, -195, 0, + 0, -195, 0, 0, 0, 0, 0, 51, 0, 0, + 52, 17, 53, 30, 54, 55, 56, 0, 0, 247, + 0, 247, 247, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 185, 0, 0, 0, 0, 0, -195, + -195, 186, 247, 247, 187, 188, 189, 0, 190, 191, + 192, 193, 0, 194, 195, 196, 197, 198, 199, 200, + 201, 202, 35, 36, 0, 38, 0, 0, 0, 6, + 42, 43, 44, 45, 0, 0, 143, 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, 35, 36, 0, 38, 0, 17, + 53, 6, 42, 43, 44, 45, 0, 0, 143, 293, + 204, 0, 0, 0, 0, 0, 0, 0, 205, 206, + 0, 0, 0, 0, 0, 0, -196, -196, 0, -196, + 0, 0, 0, -196, 0, 0, 0, 0, 0, 0, + 0, 0, -196, 264, 0, -196, 0, 0, 0, 0, + 186, 17, 53, 187, 188, 189, 0, 190, 191, 192, + 193, 0, 194, 195, 196, 197, 198, 199, 200, 201, + 202, 35, 36, 0, 38, 0, 0, 0, 6, 42, + 43, 44, 45, -196, -196, 143, 0, 204, 0, 0, + 0, 0, 0, 0, 0, 205, 206, 0, 0, 0, + 0, 0, 0, 35, 36, 0, 38, 0, 0, 0, + 6, 0, 0, 0, 0, 0, 0, 0, 0, 134, + 329, 0, 304, 0, 0, 0, 0, 186, 17, 53, + 187, 188, 189, 0, 190, 191, 192, 193, 0, 194, + 195, 196, 197, 198, 199, 200, 201, 202, 35, 36, + 34, 38, 0, 0, 0, 6, 42, 43, 44, 45, + 17, 53, 143, 0, 204, 0, 0, 0, 0, 0, + 0, 0, 205, 206, 35, 36, 37, 38, 39, 40, + 41, 6, 42, 43, 44, 45, 46, 325, 0, 0, + 103, 104, 115, 0, 48, 116, 117, 118, 119, 120, + 121, 122, 123, 124, 125, 17, 53, 0, 0, 0, + 49, 50, 0, 34, 0, 0, 0, 0, 126, 127, + 128, 129, 130, 131, 132, 133, 0, 51, 0, 0, + 52, 17, 53, 30, 54, 55, 56, 35, 36, 37, + 38, 39, 40, 41, 6, 42, 43, 44, 45, 46, + 0, 0, 0, 47, 116, 117, 0, 48, 0, 283, + 122, 123, 124, 125, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 49, 50, 0, 34, 0, 0, 0, + 129, 130, 131, 132, 133, 0, 0, 0, 0, 0, + 51, 0, 0, 52, 17, 53, 30, 54, 55, 56, + 35, 36, 37, 38, 39, 40, 41, 6, 42, 43, + 44, 45, 46, 0, 0, 0, 103, 0, 0, 0, + 48, 0, 0, 0, 300, 301, 0, 302, 303, 0, + 0, 0, 0, 0, 0, 0, 49, 50, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 35, 36, 0, + 38, 0, 0, 51, 6, 0, 52, 17, 53, 30, + 54, 55, 56, 134, 0, 0, 304, 0, 0, 0, + 0, 305, 306, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 307, 308, 309, 310, 311, + 312, 313, 314, 315, 316, 317, 0, 0, 0, 0, + 0, 0, 0, 186, 17, 53, 187, 188, 189, 0, + 190, 191, 192, 193, 0, 194, 195, 196, 197, 198, + 199, 200, 201, 202, 35, 36, 0, 38, 0, 0, + 0, 6, 42, 43, 44, 45, 0, 0, 143, 0, + 204, 0, 0, 0, 0, 0, 0, 153, 205, 206, + 0, 0, 154, 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, - 16, 6, 124, 125, 126, 127, 128, 129, 130, 131, - 0, -196, -196, -196, 0, 0, 0, 153, 0, -197, - -197, -197, 154, 0, 0, 0, 0, 113, 0, 0, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, + 0, 17, 53, 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, 0, 0, 126, 127, 128, + 129, 130, 131, 132, 133, 406, 0, 0, 0, 0, + 407, 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, 0, 0, 124, 125, 126, 127, 128, 129, 130, - 131, 401, 0, 0, 0, 0, 402, 0, 0, 0, - 0, 113, 0, 0, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 124, 125, 126, - 127, 128, 129, 130, 131, 403, 0, 0, 0, 0, - 404, 0, 0, 0, 0, 113, 0, 0, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 0, 0, + 0, 126, 127, 128, 129, 130, 131, 132, 133, 408, + 0, 0, 0, 0, 409, 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, 373, 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, 124, 125, 126, 127, 128, 129, 130, 131, 405, - 0, 0, 0, 0, 406, 0, 0, 0, 0, 113, - 0, 0, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 370, 0, 124, 125, 126, 127, 128, - 129, 130, 131, 113, 0, 0, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 372, 0, 124, - 125, 126, 127, 128, 129, 130, 131, 113, 0, 0, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, + 0, 379, 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, 391, 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, 403, + 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, 415, 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, 417, 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, 376, 0, 124, 125, 126, 127, 128, 129, 130, - 131, 113, 0, 0, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 388, 0, 124, 125, 126, - 127, 128, 129, 130, 131, 113, 0, 0, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 400, - 0, 124, 125, 126, 127, 128, 129, 130, 131, 113, - 0, 0, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 412, 0, 124, 125, 126, 127, 128, - 129, 130, 131, 113, 0, 0, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 414, 0, 124, - 125, 126, 127, 128, 129, 130, 131, 113, 0, 0, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, + 0, 438, 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, 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, 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, 324, 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, 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, 435, 0, 124, 125, 126, 127, 128, 129, 130, - 131, 113, 0, 0, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 124, 125, 126, - 127, 128, 129, 130, 131, 255, 0, 0, 0, 0, - 0, 113, 0, 0, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 124, 125, 126, - 127, 128, 129, 130, 131, 258, 0, 0, 0, 0, - 0, 113, 0, 0, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 124, 125, 126, - 127, 128, 129, 130, 131, 315, 0, 0, 0, 0, - 0, 113, 0, 0, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 124, 125, 126, - 127, 128, 129, 130, 131, 318, 0, 0, 0, 0, - 0, 113, 0, 0, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 124, 125, 126, - 127, 128, 129, 130, 131, 321, 0, 0, 0, 0, - 0, 113, 0, 0, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 124, 125, 126, - 127, 128, 129, 130, 131, 322, 0, 0, 0, 0, - 113, 0, 0, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 124, 125, 126, 127, - 128, 129, 130, 131, 257, 0, 113, 0, 0, 114, - 115, 116, 117, 118, 119, 120, 121, 122, 123, 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, 331, 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, 124, 125, 126, 127, 128, 129, 130, 131, - 112, 113, 0, 0, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 124, 125, 126, - 127, 128, 129, 130, 131, 328, 113, 0, 0, 114, - 115, 116, 117, 118, 119, 120, 121, 122, 123, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 124, 125, 126, 127, 128, 129, 130, 131, - 342, 113, 0, 0, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 113, 0, 0, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 0, 0, 0, 0, 0, - 124, 125, 126, 127, 128, 129, 130, 131, 114, 115, - 0, 0, 118, 119, 120, 121, 122, 123, 114, 115, - 0, 0, 118, 119, 120, 121, 122, 123, 0, 0, - 0, 124, 125, 126, 127, 128, 129, 130, 131, 0, - 0, 0, 125, 126, 127, 128, 129, 130, 131, 114, - 115, 0, 0, 118, 119, 120, 121, 122, 123, 114, - 115, 0, 0, 118, 119, 120, 121, 122, 123, 0, - 0, 0, 0, 125, 0, 127, 128, 129, 130, 131, - 0, 0, 0, 0, 0, 127, 128, 129, 130, 131, - 114, 115, 0, 0, 0, 0, 120, 121, 122, 123, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 127, 128, 129, 130, - 131 + 0, 0, 0, 126, 127, 128, 129, 130, 131, 132, + 133, 345, 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 }; const short parser::yycheck_[] = { - 0, 46, 91, 3, 4, 71, 272, 20, 8, 3, - 4, 71, 52, 272, 272, 11, 12, 13, 14, 15, - 56, 30, 56, 52, 52, 25, 0, 53, 183, 98, - 99, 60, 58, 188, 34, 35, 40, 41, 78, 43, - 34, 35, 40, 41, 93, 43, 62, 47, 53, 58, - 52, 100, 56, 58, 103, 59, 101, 143, 56, 62, - 62, 59, 98, 99, 98, 99, 64, 65, 53, 53, - 53, 71, 99, 58, 58, 58, 53, 71, 102, 103, - 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - 88, 53, 92, 97, 98, 99, 58, 183, 56, 97, - 98, 99, 188, 99, 60, 100, 53, 40, 41, 264, - 43, 58, 62, 99, 47, 53, 56, 203, 204, 52, - 58, 207, 54, 56, 53, 53, 59, 60, 53, 58, - 58, 143, 52, 58, 134, 53, 60, 143, 60, 53, - 58, 141, 52, 143, 58, 56, 58, 413, 148, 143, - 56, 151, 57, 140, 413, 413, 52, 94, 95, 96, - 147, 60, 52, 150, 97, 98, 99, 62, 52, 52, - 52, 183, 52, 52, 61, 241, 188, 183, 264, 179, - 193, 241, 188, 183, 62, 62, 272, 62, 188, 183, - 52, 203, 204, 52, 188, 207, 56, 203, 204, 62, - 52, 207, 52, 203, 204, 62, 62, 207, 62, 203, - 204, 62, 57, 207, 53, 370, 26, 372, 92, 93, - 94, 95, 96, 289, 290, 27, 61, 103, 61, 289, - 290, 57, 52, 52, 52, 45, 52, 62, 48, 49, - 57, 241, 57, 52, 52, 52, 52, 241, 62, 52, - 62, 62, 264, 25, 30, 53, 411, 62, 264, 414, - 272, 62, 62, 62, 264, 62, 272, 62, 53, 53, - 264, 337, 272, 273, 261, 53, 62, 337, 272, 434, - 435, 62, 62, 8, 370, 8, 372, 376, 8, 289, - 290, 101, 207, 413, -1, 289, 290, 284, 285, 193, - -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, + 0, 47, 93, 73, 274, 73, 21, 274, 52, 9, + 3, 4, 185, 274, 99, 52, 30, 190, 52, 47, + 11, 12, 13, 14, 15, 62, 26, 47, 56, 0, + 40, 41, 62, 43, 78, 35, 36, 47, 48, 49, + 50, 51, 35, 36, 58, 47, 56, 53, 48, 97, + 98, 40, 41, 62, 43, 143, 47, 103, 47, 48, + 49, 50, 51, 101, 102, 40, 41, 56, 43, 97, + 98, 56, 47, 73, 53, 64, 65, 52, 98, 58, + 73, 56, 40, 41, 59, 43, 47, 97, 98, 47, + 94, 95, 96, 266, 94, 56, 98, 185, 56, 53, + 98, 59, 190, 60, 58, 93, 62, 98, 97, 98, + 60, 99, 40, 41, 102, 43, 54, 205, 206, 47, + 56, 209, 97, 98, 56, 143, 40, 41, 56, 43, + 53, 59, 143, 47, 52, 58, 97, 98, 60, 97, + 98, 141, 56, 143, 52, 59, 416, 53, 148, 416, + 143, 151, 58, 53, 140, 416, 60, 53, 58, 56, + 53, 147, 58, 53, 150, 58, 53, 185, 58, 97, + 98, 58, 190, 243, 185, 243, 58, 53, 266, 190, + 195, 181, 58, 97, 98, 185, 274, 205, 206, 57, + 190, 209, 185, 52, 205, 206, 53, 190, 209, 53, + 373, 58, 375, 53, 58, 205, 206, 60, 58, 209, + 52, 62, 205, 206, 52, 52, 209, 27, 52, 52, + 52, 291, 292, 291, 292, 61, 40, 41, 52, 43, + 52, 66, 67, 47, 62, 62, 46, 62, 57, 49, + 50, 414, 56, 243, 417, 59, 62, 56, 266, 62, + 243, 62, 53, 52, 62, 266, 274, 92, 93, 94, + 95, 96, 62, 274, 437, 438, 266, 52, 27, 61, + 340, 102, 340, 266, 274, 275, 52, 263, 61, 52, + 52, 274, 52, 97, 98, 373, 98, 375, 379, 57, + 57, 291, 292, 103, 57, 52, 62, 52, 291, 292, + 286, 287, 62, 52, 52, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, - 130, 131, 143, 133, -1, 411, -1, 413, 414, -1, - 317, 40, 41, 320, 43, -1, 146, 337, 47, 149, - -1, -1, 152, 337, 154, -1, 156, 56, 434, 435, - 59, -1, -1, -1, -1, -1, -1, 402, 370, 404, - 372, 406, 183, -1, 370, -1, 372, 188, -1, -1, - 370, -1, 372, -1, 184, 375, 370, -1, 372, -1, - 367, -1, 203, 204, -1, -1, 207, 197, 97, 98, - 99, -1, 143, -1, -1, -1, 383, -1, 385, 411, - 387, 413, 414, -1, -1, 411, -1, 413, 414, -1, - -1, 411, -1, 413, 414, -1, -1, 411, -1, 413, - 414, -1, 434, 435, -1, 143, -1, -1, 434, 435, - -1, -1, 183, -1, 434, 435, -1, 188, -1, -1, - 434, 435, -1, 264, -1, -1, -1, 257, -1, -1, - -1, 272, 203, 204, -1, -1, 207, -1, -1, 269, - -1, 271, -1, -1, 274, 183, -1, -1, -1, -1, - 188, 40, 41, -1, 43, -1, 286, -1, 47, -1, - 143, 66, 67, -1, -1, 203, 204, 56, -1, 207, - 59, -1, -1, -1, 304, 305, 306, 307, 308, 309, - 310, 311, 312, 313, 314, 143, -1, 92, 93, 94, - 95, 96, 322, 264, -1, 143, -1, -1, -1, -1, - 183, 272, -1, -1, -1, 188, -1, -1, 97, 98, - 99, -1, -1, -1, -1, -1, 346, 347, 348, 349, - 203, 204, -1, -1, 207, 183, 264, -1, -1, 370, - 188, 372, -1, -1, 272, 183, -1, -1, -1, -1, - 188, 371, -1, 373, 374, 203, 204, -1, -1, 207, - -1, -1, -1, -1, -1, 203, 204, -1, -1, 207, - -1, -1, -1, -1, -1, -1, -1, -1, 40, 41, - 411, 43, 413, 414, -1, -1, 48, 49, 50, 51, - -1, 264, -1, -1, 56, 415, -1, -1, -1, 272, - -1, -1, -1, 434, 435, -1, -1, -1, -1, 370, - -1, 372, -1, -1, -1, -1, 264, -1, -1, -1, - -1, -1, 40, 41, 272, 43, 264, -1, -1, 47, - -1, 16, -1, -1, 272, -1, 98, 99, 56, -1, - -1, 59, 370, -1, 372, -1, -1, -1, -1, -1, - 411, -1, 413, 414, -1, 40, 41, 42, 43, 44, - 45, 46, -1, 48, 49, 50, 51, 52, -1, -1, - -1, 56, 57, 434, 435, 60, -1, -1, -1, 97, - 98, 99, -1, 411, -1, 413, 414, -1, -1, -1, - -1, 76, 77, 40, 41, -1, 43, 370, -1, 372, - 47, -1, -1, -1, -1, -1, 434, 435, 93, 56, - -1, 96, 59, 98, 99, 100, 101, 102, 103, -1, - 40, 41, 370, 43, 372, -1, -1, -1, 48, 49, - 50, 51, 370, -1, 372, -1, 56, -1, 411, -1, - 413, 414, -1, -1, 64, 65, -1, -1, -1, -1, - 97, 98, 99, -1, -1, -1, -1, -1, -1, -1, - -1, 434, 435, 411, -1, 413, 414, -1, -1, -1, - -1, -1, -1, 411, -1, 413, 414, -1, 98, 99, - -1, -1, -1, -1, -1, -1, 434, 435, -1, -1, - 11, -1, -1, -1, -1, -1, 434, 435, 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, -1, 43, -1, -1, 98, 99, 48, - 49, 50, 51, -1, -1, 54, 55, 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, -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, 16, 43, 98, 99, -1, -1, 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, -1, -1, - -1, 56, -1, -1, -1, 60, -1, 62, -1, -1, - -1, -1, -1, 40, 41, -1, 43, 98, 99, -1, - 47, 76, 77, 40, 41, 16, 43, -1, -1, 56, - 47, -1, 59, -1, -1, -1, -1, -1, 93, 56, - -1, 96, 59, 98, 99, 100, 101, 102, 103, 40, - 41, 42, 43, 44, 45, 46, -1, 48, 49, 50, - 51, 52, -1, -1, -1, 56, -1, -1, -1, 60, - 97, 98, 99, -1, -1, -1, -1, -1, -1, -1, - 97, 98, 99, -1, -1, 76, 77, 40, 41, 16, - 43, -1, -1, -1, 47, -1, -1, -1, -1, -1, - -1, -1, 93, 56, -1, 96, 59, 98, 99, 100, - 101, 102, 103, 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, 17, 18, - -1, 20, 21, -1, 97, 98, 99, -1, -1, 76, - 77, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 40, 41, -1, 43, -1, 93, -1, -1, 96, - -1, 98, 99, 100, 101, 102, 103, 56, -1, -1, - 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, - -1, -1, -1, -1, -1, -1, -1, -1, 97, 98, - 99, 19, -1, -1, 22, 23, 24, -1, 26, 27, + 130, 131, 132, 133, 134, 143, 414, 52, 416, 417, + 62, 62, 25, 62, 320, 30, 146, 323, 62, 149, + 340, 53, 152, 62, 154, 62, 156, 340, 62, 437, + 438, 62, 53, 53, 53, 373, 62, 375, 62, 405, + 62, 407, 373, 409, 375, 9, 9, 185, 9, 209, + -1, 416, 190, 373, 195, 375, 186, -1, 378, -1, + 373, -1, 375, -1, 370, -1, -1, 205, 206, 199, + -1, 209, -1, -1, -1, -1, 414, -1, 416, 417, + 386, -1, 388, 414, 390, 416, 417, 92, 93, 94, + 95, 96, -1, 143, 414, -1, 416, 417, -1, 437, + 438, 414, 143, 416, 417, -1, 437, 438, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 437, 438, -1, + -1, -1, -1, -1, 437, 438, -1, 143, 266, 259, + -1, -1, -1, -1, -1, 185, 274, -1, -1, -1, + 190, 271, -1, 273, 185, -1, 276, 40, 41, 190, + 43, -1, 143, -1, 47, 205, 206, -1, 288, 209, + -1, -1, -1, 56, 205, 206, 59, -1, 209, 185, + -1, -1, -1, -1, 190, -1, -1, 307, 308, 309, + 310, 311, 312, 313, 314, 315, 316, 317, -1, 205, + 206, -1, -1, 209, 185, 325, -1, -1, 143, 190, + -1, -1, -1, -1, 97, 98, -1, -1, -1, -1, + 40, 41, -1, 43, 205, 206, 266, 47, 209, 349, + 350, 351, 352, -1, 274, 266, 56, -1, -1, 59, + -1, -1, -1, 274, -1, 373, -1, 375, -1, -1, + 185, -1, -1, -1, 374, 190, 376, 377, -1, -1, + 266, -1, -1, -1, -1, -1, -1, -1, 274, -1, + 205, 206, -1, -1, 209, -1, -1, 97, 98, -1, + 40, 41, -1, 43, -1, 266, 414, 47, 416, 417, + -1, -1, -1, 274, -1, -1, 56, -1, 418, 59, + -1, -1, -1, -1, 64, 65, -1, -1, -1, 437, + 438, -1, -1, -1, -1, -1, -1, -1, 78, 79, + 80, 81, 82, 83, 84, 85, 86, 87, 88, -1, + -1, 266, -1, 373, -1, 375, -1, 97, 98, 274, + -1, -1, 373, -1, 375, 40, 41, -1, 43, -1, + -1, -1, 47, -1, -1, -1, -1, -1, -1, -1, + -1, 56, -1, -1, 59, -1, -1, 373, -1, 375, + -1, -1, -1, -1, 414, -1, 416, 417, -1, -1, + -1, -1, -1, 414, -1, 416, 417, -1, -1, -1, + 16, -1, 373, -1, 375, -1, -1, 437, 438, -1, + -1, -1, 97, 98, -1, -1, 437, 438, 414, -1, + 416, 417, -1, -1, 40, 41, 42, 43, 44, 45, + 46, 47, 48, 49, 50, 51, 52, -1, -1, -1, + 56, 437, 438, 414, 60, 416, 417, -1, 373, -1, + 375, -1, 40, 41, -1, 43, -1, -1, -1, 47, + 76, 77, -1, -1, -1, -1, 437, 438, 56, -1, + -1, 59, -1, -1, -1, -1, -1, 93, -1, -1, + 96, 97, 98, 99, 100, 101, 102, -1, -1, 414, + -1, 416, 417, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 11, -1, -1, -1, -1, -1, 97, + 98, 19, 437, 438, 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, 40, 41, 54, 43, 56, -1, - -1, 47, 40, 41, -1, 43, 64, 65, -1, 47, - 56, -1, -1, 59, -1, -1, -1, -1, 56, 66, - 67, 59, 69, 70, 71, 72, 73, 74, 75, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 98, 99, 89, 90, 91, 92, 93, 94, 95, 96, - -1, 97, 98, 99, -1, -1, -1, 53, -1, 97, - 98, 99, 58, -1, -1, -1, -1, 63, -1, -1, + 38, 39, 40, 41, -1, 43, -1, -1, -1, 47, + 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, -1, 43, -1, 97, + 98, 47, 48, 49, 50, 51, -1, -1, 54, 55, + 56, -1, -1, -1, -1, -1, -1, -1, 64, 65, + -1, -1, -1, -1, -1, -1, 40, 41, -1, 43, + -1, -1, -1, 47, -1, -1, -1, -1, -1, -1, + -1, -1, 56, 12, -1, 59, -1, -1, -1, -1, + 19, 97, 98, 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, 47, 48, + 49, 50, 51, 97, 98, 54, -1, 56, -1, -1, + -1, -1, -1, -1, -1, 64, 65, -1, -1, -1, + -1, -1, -1, 40, 41, -1, 43, -1, -1, -1, + 47, -1, -1, -1, -1, -1, -1, -1, -1, 56, + 12, -1, 59, -1, -1, -1, -1, 19, 97, 98, + 22, 23, 24, -1, 26, 27, 28, 29, -1, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, + 16, 43, -1, -1, -1, 47, 48, 49, 50, 51, + 97, 98, 54, -1, 56, -1, -1, -1, -1, -1, + -1, -1, 64, 65, 40, 41, 42, 43, 44, 45, + 46, 47, 48, 49, 50, 51, 52, 58, -1, -1, + 56, 57, 63, -1, 60, 66, 67, 68, 69, 70, + 71, 72, 73, 74, 75, 97, 98, -1, -1, -1, + 76, 77, -1, 16, -1, -1, -1, -1, 89, 90, + 91, 92, 93, 94, 95, 96, -1, 93, -1, -1, + 96, 97, 98, 99, 100, 101, 102, 40, 41, 42, + 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, + -1, -1, -1, 56, 66, 67, -1, 60, -1, 62, + 72, 73, 74, 75, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 76, 77, -1, 16, -1, -1, -1, + 92, 93, 94, 95, 96, -1, -1, -1, -1, -1, + 93, -1, -1, 96, 97, 98, 99, 100, 101, 102, + 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, + 50, 51, 52, -1, -1, -1, 56, -1, -1, -1, + 60, -1, -1, -1, 17, 18, -1, 20, 21, -1, + -1, -1, -1, -1, -1, -1, 76, 77, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 40, 41, -1, + 43, -1, -1, 93, 47, -1, 96, 97, 98, 99, + 100, 101, 102, 56, -1, -1, 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, -1, -1, -1, -1, + -1, -1, -1, 19, 97, 98, 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, 47, 48, 49, 50, 51, -1, -1, 54, -1, + 56, -1, -1, -1, -1, -1, -1, 53, 64, 65, + -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, + -1, 97, 98, 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, @@ -4343,88 +4344,84 @@ namespace xsk { namespace gsc { namespace h1 { -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, + 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, 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, -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, -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, -1, 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, -1, 90, 91, 92, 93, 94, 95, 96, 66, - 67, -1, -1, 70, 71, 72, 73, 74, 75, 66, + -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, -1, 90, -1, 92, 93, 94, 95, 96, - -1, -1, -1, -1, -1, 92, 93, 94, 95, 96, - 66, 67, -1, -1, -1, -1, 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 + -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 }; const unsigned char parser::yystos_[] = { - 0, 11, 12, 13, 14, 15, 99, 114, 115, 116, - 117, 118, 119, 120, 121, 186, 98, 186, 187, 187, - 52, 0, 116, 117, 118, 52, 78, 62, 62, 100, - 189, 168, 186, 16, 40, 41, 42, 43, 44, 45, - 46, 48, 49, 50, 51, 52, 56, 60, 76, 77, - 93, 96, 101, 102, 103, 153, 158, 159, 160, 161, - 162, 163, 164, 165, 166, 167, 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, 186, 187, 56, 186, 187, 56, - 153, 56, 57, 153, 169, 170, 186, 153, 153, 102, - 103, 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, 165, 166, 186, 187, - 52, 60, 62, 54, 127, 186, 56, 52, 60, 56, + 0, 11, 12, 13, 14, 15, 47, 98, 114, 115, + 116, 117, 118, 119, 120, 121, 187, 97, 98, 188, + 188, 52, 0, 116, 117, 118, 52, 78, 62, 62, + 99, 190, 168, 187, 16, 40, 41, 42, 43, 44, + 45, 46, 48, 49, 50, 51, 52, 56, 60, 76, + 77, 93, 96, 98, 100, 101, 102, 153, 158, 159, + 160, 161, 162, 163, 164, 165, 166, 167, 171, 172, + 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, + 183, 184, 185, 187, 188, 189, 190, 191, 192, 193, + 194, 195, 53, 53, 58, 56, 187, 188, 56, 187, + 188, 56, 153, 56, 57, 153, 169, 170, 187, 153, + 153, 101, 102, 98, 62, 63, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 75, 89, 90, 91, 92, + 93, 94, 95, 96, 56, 59, 165, 166, 187, 188, + 52, 60, 62, 54, 127, 187, 56, 52, 60, 56, 52, 60, 56, 53, 58, 153, 58, 57, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, - 153, 153, 153, 153, 153, 153, 153, 153, 186, 60, - 169, 170, 186, 11, 19, 22, 23, 24, 26, 27, - 28, 29, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 55, 56, 64, 65, 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, 152, 155, 156, 157, 163, 164, 172, - 173, 176, 180, 181, 182, 183, 186, 153, 169, 186, - 153, 169, 186, 153, 153, 57, 153, 61, 57, 186, - 53, 52, 12, 122, 124, 153, 62, 52, 62, 52, - 122, 52, 52, 52, 52, 93, 189, 192, 61, 62, - 62, 62, 153, 62, 52, 52, 56, 163, 164, 176, - 176, 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, 153, 169, 12, 122, 62, 53, - 153, 27, 153, 128, 155, 156, 157, 176, 186, 153, - 61, 61, 62, 169, 169, 153, 52, 52, 52, 52, - 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, - 153, 57, 169, 57, 169, 57, 153, 52, 53, 62, - 53, 52, 53, 62, 30, 58, 53, 53, 53, 153, - 153, 153, 153, 52, 53, 52, 53, 52, 53, 169, - 122, 153, 122, 153, 154, 153, 186, 127, 62, 62, - 53, 53, 58, 53, 58, 53, 58, 169, 169, 169, - 53, 25, 53, 62, 53, 30, 62, 62, 170, 62, - 170, 62, 170, 53, 53, 53, 122, 62, 128, 122, - 153, 53, 53, 53, 53, 53, 62, 62, 62, 122, - 122 + 153, 153, 153, 153, 153, 153, 153, 153, 47, 98, + 186, 60, 169, 170, 187, 11, 19, 22, 23, 24, + 26, 27, 28, 29, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 55, 56, 64, 65, 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, 152, 155, 156, 157, 163, + 164, 172, 173, 176, 180, 181, 182, 183, 187, 153, + 169, 187, 153, 169, 187, 153, 153, 57, 153, 61, + 57, 187, 53, 52, 12, 122, 124, 153, 62, 52, + 62, 52, 122, 52, 52, 52, 52, 93, 190, 193, + 61, 62, 62, 62, 153, 62, 52, 52, 56, 163, + 164, 176, 176, 55, 123, 62, 62, 62, 62, 62, + 17, 18, 20, 21, 59, 64, 65, 78, 79, 80, + 81, 82, 83, 84, 85, 86, 87, 88, 57, 53, + 52, 57, 53, 52, 57, 58, 57, 153, 169, 12, + 122, 62, 53, 153, 27, 153, 128, 155, 156, 157, + 176, 187, 153, 61, 61, 62, 169, 169, 153, 52, + 52, 52, 52, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 57, 169, 57, 169, 57, 153, + 52, 53, 62, 53, 52, 53, 62, 30, 58, 53, + 53, 53, 153, 153, 153, 153, 52, 53, 52, 53, + 52, 53, 169, 122, 153, 122, 153, 154, 153, 187, + 127, 62, 62, 53, 53, 58, 53, 58, 53, 58, + 169, 169, 169, 53, 25, 53, 62, 53, 30, 62, + 62, 170, 62, 170, 62, 170, 53, 53, 53, 122, + 62, 128, 122, 153, 53, 53, 53, 53, 53, 62, + 62, 62, 122, 122 }; const unsigned char @@ -4448,10 +4445,11 @@ namespace xsk { namespace gsc { namespace h1 { 160, 160, 160, 160, 160, 160, 160, 160, 160, 161, 162, 163, 163, 164, 164, 165, 165, 165, 165, 165, 165, 166, 166, 166, 166, 167, 168, 168, 168, 169, - 169, 170, 170, 171, 171, 172, 173, 173, 174, 175, - 176, 176, 176, 176, 176, 176, 176, 176, 176, 177, - 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, - 187, 188, 189, 190, 191, 191, 192, 192, 193, 194 + 169, 170, 170, 171, 171, 172, 173, 174, 175, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 177, 178, + 179, 180, 181, 182, 183, 184, 185, 186, 187, 187, + 188, 188, 189, 190, 191, 192, 192, 193, 193, 194, + 195 }; const signed char @@ -4475,10 +4473,11 @@ namespace xsk { namespace gsc { namespace h1 { 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, 7, 2, 1, 2, 1, 1, 1 + 0, 3, 1, 2, 3, 4, 3, 3, 3, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, + 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, + 1, 1, 1, 1, 7, 2, 1, 2, 1, 1, + 1 }; @@ -4488,28 +4487,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, 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, 640, - 645, 650, 651, 654, 655, 659, 661, 663, 665, 667, - 669, 674, 676, 678, 680, 685, 690, 692, 695, 699, - 702, 706, 708, 713, 715, 720, 725, 727, 732, 737, - 742, 743, 744, 745, 746, 747, 748, 749, 750, 754, - 759, 764, 769, 774, 779, 784, 789, 794, 799, 804, - 806, 811, 816, 821, 826, 828, 833, 835, 840, 845 + 0, 257, 257, 258, 262, 264, 266, 268, 270, 272, + 277, 281, 286, 287, 288, 289, 290, 294, 299, 304, + 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, 344, 349, + 351, 356, 357, 361, 362, 366, 368, 370, 373, 377, + 379, 384, 386, 388, 393, 398, 400, 405, 410, 412, + 417, 419, 424, 429, 431, 436, 441, 446, 451, 456, + 461, 463, 468, 473, 475, 480, 485, 490, 495, 497, + 502, 507, 512, 517, 518, 519, 523, 524, 528, 530, + 532, 534, 536, 538, 540, 542, 544, 546, 548, 553, + 555, 560, 562, 567, 572, 574, 576, 578, 580, 582, + 584, 586, 588, 590, 592, 594, 596, 598, 600, 602, + 604, 606, 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, 731, 736, 741, + 742, 743, 744, 745, 746, 747, 748, 749, 753, 758, + 763, 768, 773, 778, 783, 788, 793, 798, 803, 805, + 810, 812, 817, 822, 827, 832, 834, 839, 841, 846, + 851 }; void @@ -4544,7 +4544,7 @@ namespace xsk { namespace gsc { namespace h1 { } } } // xsk::gsc::h1 #line 4546 "parser.cpp" -#line 849 "parser.ypp" +#line 855 "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 ad714057..5d761848 100644 --- a/src/h1/xsk/parser.hpp +++ b/src/h1/xsk/parser.hpp @@ -476,6 +476,7 @@ namespace xsk { namespace gsc { namespace h1 { // expr_game char dummy19[sizeof (ast::expr_game::ptr)]; + // expr_identifier_nosize // expr_identifier char dummy20[sizeof (ast::expr_identifier::ptr)]; @@ -620,7 +621,6 @@ namespace xsk { namespace gsc { namespace h1 { // stmt_while char dummy66[sizeof (ast::stmt_while::ptr)]; - // "field" // "path" // "identifier" // "string literal" @@ -723,7 +723,7 @@ namespace xsk { namespace gsc { namespace h1 { TRUE = 44, // "true" FALSE = 45, // "false" UNDEFINED = 46, // "undefined" - SIZE = 47, // ".size" + SIZE = 47, // "size" GAME = 48, // "game" SELF = 49, // "self" ANIM = 50, // "anim" @@ -773,13 +773,13 @@ namespace xsk { namespace gsc { namespace h1 { MUL = 94, // "*" DIV = 95, // "/" MOD = 96, // "%" - FIELD = 97, // "field" - PATH = 98, // "path" - IDENTIFIER = 99, // "identifier" - STRING = 100, // "string literal" - ISTRING = 101, // "localized string" - FLOAT = 102, // "float" - INTEGER = 103, // "integer" + PATH = 97, // "path" + IDENTIFIER = 98, // "identifier" + STRING = 99, // "string literal" + ISTRING = 100, // "localized string" + FLOAT = 101, // "float" + INTEGER = 102, // "integer" + SIZEOF = 103, // SIZEOF ADD_ARRAY = 104, // ADD_ARRAY THEN = 105, // THEN TERN = 106, // TERN @@ -854,7 +854,7 @@ namespace xsk { namespace gsc { namespace h1 { S_TRUE = 44, // "true" S_FALSE = 45, // "false" S_UNDEFINED = 46, // "undefined" - S_SIZE = 47, // ".size" + S_SIZE = 47, // "size" S_GAME = 48, // "game" S_SELF = 49, // "self" S_ANIM = 50, // "anim" @@ -904,13 +904,13 @@ namespace xsk { namespace gsc { namespace h1 { S_MUL = 94, // "*" S_DIV = 95, // "/" S_MOD = 96, // "%" - S_FIELD = 97, // "field" - S_PATH = 98, // "path" - S_IDENTIFIER = 99, // "identifier" - S_STRING = 100, // "string literal" - S_ISTRING = 101, // "localized string" - S_FLOAT = 102, // "float" - S_INTEGER = 103, // "integer" + S_PATH = 97, // "path" + S_IDENTIFIER = 98, // "identifier" + S_STRING = 99, // "string literal" + S_ISTRING = 100, // "localized string" + S_FLOAT = 101, // "float" + S_INTEGER = 102, // "integer" + S_SIZEOF = 103, // SIZEOF S_ADD_ARRAY = 104, // ADD_ARRAY S_THEN = 105, // THEN S_TERN = 106, // TERN @@ -993,15 +993,16 @@ namespace xsk { namespace gsc { namespace h1 { S_expr_level = 183, // expr_level S_expr_animation = 184, // expr_animation S_expr_animtree = 185, // expr_animtree - S_expr_identifier = 186, // expr_identifier - S_expr_path = 187, // expr_path - S_expr_istring = 188, // expr_istring - S_expr_string = 189, // expr_string - 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_expr_identifier_nosize = 186, // expr_identifier_nosize + 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_vector = 191, // expr_vector + S_expr_float = 192, // expr_float + S_expr_integer = 193, // expr_integer + S_expr_false = 194, // expr_false + S_expr_true = 195 // expr_true }; }; @@ -1124,6 +1125,7 @@ namespace xsk { namespace gsc { namespace h1 { value.move< ast::expr_game::ptr > (std::move (that.value)); break; + case symbol_kind::S_expr_identifier_nosize: // expr_identifier_nosize case symbol_kind::S_expr_identifier: // expr_identifier value.move< ast::expr_identifier::ptr > (std::move (that.value)); break; @@ -1315,7 +1317,6 @@ namespace xsk { namespace gsc { namespace h1 { value.move< ast::stmt_while::ptr > (std::move (that.value)); break; - case symbol_kind::S_FIELD: // "field" case symbol_kind::S_PATH: // "path" case symbol_kind::S_IDENTIFIER: // "identifier" case symbol_kind::S_STRING: // "string literal" @@ -2394,6 +2395,7 @@ switch (yykind) value.template destroy< ast::expr_game::ptr > (); break; + case symbol_kind::S_expr_identifier_nosize: // expr_identifier_nosize case symbol_kind::S_expr_identifier: // expr_identifier value.template destroy< ast::expr_identifier::ptr > (); break; @@ -2585,7 +2587,6 @@ switch (yykind) value.template destroy< ast::stmt_while::ptr > (); break; - case symbol_kind::S_FIELD: // "field" case symbol_kind::S_PATH: // "path" case symbol_kind::S_IDENTIFIER: // "identifier" case symbol_kind::S_STRING: // "string literal" @@ -2691,7 +2692,7 @@ switch (yykind) { H1_ASSERT (tok == token::H1EOF || (token::H1error <= tok && tok <= token::MOD) - || (token::ADD_ARRAY <= tok && tok <= token::POSTDEC)); + || (token::SIZEOF <= tok && tok <= token::POSTDEC)); } #if 201103L <= YY_CPLUSPLUS symbol_type (int tok, std::string v, location_type l) @@ -2701,7 +2702,7 @@ switch (yykind) : super_type(token_type (tok), v, l) #endif { - H1_ASSERT ((token::FIELD <= tok && tok <= token::INTEGER)); + H1_ASSERT ((token::PATH <= tok && tok <= token::INTEGER)); } }; @@ -4206,21 +4207,6 @@ switch (yykind) return symbol_type (token::MOD, l); } #endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_FIELD (std::string v, location_type l) - { - return symbol_type (token::FIELD, std::move (v), std::move (l)); - } -#else - static - symbol_type - make_FIELD (const std::string& v, const location_type& l) - { - return symbol_type (token::FIELD, v, l); - } -#endif #if 201103L <= YY_CPLUSPLUS static symbol_type @@ -4311,6 +4297,21 @@ switch (yykind) return symbol_type (token::INTEGER, v, l); } #endif +#if 201103L <= YY_CPLUSPLUS + static + symbol_type + make_SIZEOF (location_type l) + { + return symbol_type (token::SIZEOF, std::move (l)); + } +#else + static + symbol_type + make_SIZEOF (const location_type& l) + { + return symbol_type (token::SIZEOF, l); + } +#endif #if 201103L <= YY_CPLUSPLUS static symbol_type @@ -4790,9 +4791,9 @@ switch (yykind) /// Constants. enum { - yylast_ = 2300, ///< Last index in yytable_. - yynnts_ = 82, ///< Number of nonterminal symbols. - yyfinal_ = 21 ///< Termination state number. + yylast_ = 2251, ///< Last index in yytable_. + yynnts_ = 83, ///< Number of nonterminal symbols. + yyfinal_ = 22 ///< Termination state number. }; @@ -4904,6 +4905,7 @@ switch (yykind) value.copy< ast::expr_game::ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_expr_identifier_nosize: // expr_identifier_nosize case symbol_kind::S_expr_identifier: // expr_identifier value.copy< ast::expr_identifier::ptr > (YY_MOVE (that.value)); break; @@ -5095,7 +5097,6 @@ switch (yykind) value.copy< ast::stmt_while::ptr > (YY_MOVE (that.value)); break; - case symbol_kind::S_FIELD: // "field" case symbol_kind::S_PATH: // "path" case symbol_kind::S_IDENTIFIER: // "identifier" case symbol_kind::S_STRING: // "string literal" @@ -5220,6 +5221,7 @@ switch (yykind) value.move< ast::expr_game::ptr > (YY_MOVE (s.value)); break; + case symbol_kind::S_expr_identifier_nosize: // expr_identifier_nosize case symbol_kind::S_expr_identifier: // expr_identifier value.move< ast::expr_identifier::ptr > (YY_MOVE (s.value)); break; @@ -5411,7 +5413,6 @@ switch (yykind) value.move< ast::stmt_while::ptr > (YY_MOVE (s.value)); break; - case symbol_kind::S_FIELD: // "field" case symbol_kind::S_PATH: // "path" case symbol_kind::S_IDENTIFIER: // "identifier" case symbol_kind::S_STRING: // "string literal" @@ -5484,7 +5485,7 @@ switch (yykind) #line 13 "parser.ypp" } } } // xsk::gsc::h1 -#line 5488 "parser.hpp" +#line 5489 "parser.hpp" diff --git a/src/h2/xsk/lexer.cpp b/src/h2/xsk/lexer.cpp index ca936dce..f3a048a2 100644 --- a/src/h2/xsk/lexer.cpp +++ b/src/h2/xsk/lexer.cpp @@ -60,6 +60,7 @@ const std::unordered_map keywo { "true", parser::token::TRUE }, { "false", parser::token::FALSE }, { "undefined", parser::token::UNDEFINED }, + { "size", parser::token::SIZE }, { "game", parser::token::GAME }, { "self", parser::token::SELF }, { "anim", parser::token::ANIM }, @@ -85,8 +86,8 @@ bool buffer::push(char c) return true; } -reader::reader() : state(reader::end), buffer_pos(0), bytes_remaining(0), - last_byte(0), current_byte(0) { } +reader::reader() : state(reader::end), buffer_pos(0), + bytes_remaining(0), last_byte(0), current_byte(0) {} void reader::init(const char* data, size_t size) { @@ -174,7 +175,6 @@ auto lexer::lex() -> parser::symbol_type { buffer_.length = 0; state_ = state::start; - loc_.step(); while (true) { @@ -182,6 +182,7 @@ auto lexer::lex() -> parser::symbol_type auto& last = reader_.last_byte; auto& curr = reader_.current_byte; auto path = false; + loc_.step(); if (state == reader::end) { @@ -214,7 +215,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 != '*' && curr != '/') return parser::make_DIV(loc_); advance(); @@ -246,14 +247,35 @@ auto lexer::lex() -> parser::symbol_type } else if (last == '#' && curr == '/') { - reader_.advance(); + advance(); break; } - reader_.advance(); + advance(); } } } + else if (last == '@') + { + while (true) + { + if (state == reader::end) + throw comp_error(loc_, "unmatched script doc comment start ('/@')"); + + if (curr == '\n') + { + loc_.lines(); + loc_.step(); + } + else if (last == '@' && curr == '/') + { + advance(); + break; + } + + advance(); + } + } else if (last == '*') { while (true) @@ -268,11 +290,11 @@ auto lexer::lex() -> parser::symbol_type } else if (last == '*' && curr == '/') { - reader_.advance(); + advance(); break; } - reader_.advance(); + advance(); } } else if (last == '/') @@ -282,30 +304,10 @@ auto lexer::lex() -> parser::symbol_type if (state == reader::end) break; - if (last == '\\' && (curr == '\r' || curr == '\n')) - { - reader_.advance(); - - if (state == reader::end) - break; - - if (last == '\r') - { - if (curr != '\n') - throw comp_error(loc_, "invalid token ('\')"); - - reader_.advance(); - } - - loc_.lines(); - loc_.step(); - continue; - } - if (curr == '\n') break; - reader_.advance(); + advance(); } } continue; @@ -315,8 +317,8 @@ auto lexer::lex() -> parser::symbol_type if (!indev_) throw comp_error(loc_, "unmatched devblock end ('#/')"); - indev_ = false; advance(); + indev_ = false; return parser::make_DEVEND(loc_); } @@ -337,7 +339,7 @@ auto lexer::lex() -> parser::symbol_type state_ = state::preprocessor; goto lex_name; case '*': - if (curr != '/' && curr != '=') + if (curr != '=' && curr != '/') return parser::make_MUL(loc_); advance(); @@ -350,13 +352,9 @@ auto lexer::lex() -> parser::symbol_type state_ = state::string; goto lex_string; case '.': - advance(); - - if (state == reader::end) - throw comp_error(loc_, "unterminated field ('.')"); - - state_ = state::field; - goto lex_name_or_number; + if (curr < '0' || curr > '9') + return parser::make_DOT(loc_); + goto lex_number; case '(': return parser::make_LPAREN(loc_); case ')': @@ -480,7 +478,6 @@ auto lexer::lex() -> parser::symbol_type advance(); return parser::make_ASSIGN_RSHIFT(loc_); default: -lex_name_or_number: if (last >= '0' && last <= '9') goto lex_number; else if (last == '_' || last >= 'A' && last <= 'Z' || last >= 'a' && last <= 'z') @@ -562,23 +559,8 @@ lex_name: advance(); } - if (state_ == state::field) + if (state_ == state::preprocessor) { - if (path) - throw comp_error(loc_, "invalid field token '\\'"); - - if (std::string_view(buffer_.data, buffer_.length) == "size") - { - return parser::make_SIZE(loc_); - } - - return parser::make_FIELD(std::string(buffer_.data, buffer_.length), loc_); - } - else if (state_ == state::preprocessor) - { - if (path) - throw comp_error(loc_, "invalid preprocessor directive"); - auto token = parser::token::H2UNDEF; if (buffer_.length < 16) @@ -594,7 +576,8 @@ lex_name: } } - preprocessor(token); + preprocessor_run(token); + state_ = state::start; continue; } @@ -620,14 +603,11 @@ lex_name: } lex_number: - if (state_ == state::field) - buffer_.push('.'); - - if (state_ == state::field || last == '.' || last != '0' || (last == '0' && (curr != 'o' && curr != 'b' && curr != 'x'))) + if (last == '.' || last != '0' || (last == '0' && (curr != 'o' && curr != 'b' && curr != 'x'))) { buffer_.push(last); - auto dot = 0; + auto dot = last == '.' ? 1 : 0; auto flt = 0; while (true) @@ -663,10 +643,10 @@ lex_number: if (last == '\'') throw comp_error(loc_, "invalid number literal"); - if (state_ == state::field && dot || dot > 1 || flt > 1 || flt && buffer_.data[buffer_.length - 1] != 'f') + if (dot > 1 || flt > 1 || flt && buffer_.data[buffer_.length - 1] != 'f') throw comp_error(loc_, "invalid number literal"); - if (state_ == state::field || dot || flt) + if (dot || flt) return parser::make_FLOAT(std::string(buffer_.data, buffer_.length), loc_); return parser::make_INTEGER(std::string(buffer_.data, buffer_.length), loc_); @@ -681,7 +661,7 @@ lex_number: break; if (curr == '\'' && (last == '\'' || last == 'o') || (curr == 'o' && last == '\'')) - throw comp_error(loc_, "invalid octal literal"); + throw comp_error(loc_, "invalid octal literal"); if (curr == '\'') { @@ -771,18 +751,22 @@ lex_number: return parser::make_INTEGER(xsk::utils::string::hex_to_dec(buffer_.data), loc_); } - // cant get here! + + throw error("UNEXPECTED LEXER INTERNAL ERROR!"); } } void lexer::advance() { reader_.advance(); + loc_.end.column++; - // dont wrap comment marks '/\/' '/\*' outside strings - if (state_ == state::start && reader_.last_byte == '/') - return; + if (reader_.current_byte == '\\') [[unlikely]] + preprocessor_wrap(); +} +void lexer::preprocessor_wrap() +{ while (reader_.current_byte == '\\') { if (reader_.bytes_remaining == 1) @@ -824,7 +808,7 @@ void lexer::advance() } } -void lexer::preprocessor(parser::token::token_kind_type token) +void lexer::preprocessor_run(parser::token::token_kind_type token) { if (!clean_) throw comp_error(loc_, "invalid token ('#')"); diff --git a/src/h2/xsk/lexer.hpp b/src/h2/xsk/lexer.hpp index c2b9d7fa..df618fd9 100644 --- a/src/h2/xsk/lexer.hpp +++ b/src/h2/xsk/lexer.hpp @@ -44,7 +44,7 @@ struct reader class lexer { - enum class state : std::uint8_t { start, string, localize, field, preprocessor }; + enum class state : std::uint8_t { start, string, localize, preprocessor }; reader reader_; buffer buffer_; @@ -66,7 +66,8 @@ public: private: void advance(); - void preprocessor(parser::token::token_kind_type token); + void preprocessor_wrap(); + void preprocessor_run(parser::token::token_kind_type token); }; } // namespace xsk::gsc::h2 diff --git a/src/h2/xsk/parser.cpp b/src/h2/xsk/parser.cpp index fcae2d52..4c1f5f9b 100644 --- a/src/h2/xsk/parser.cpp +++ b/src/h2/xsk/parser.cpp @@ -301,6 +301,7 @@ namespace xsk { namespace gsc { namespace h2 { value.YY_MOVE_OR_COPY< ast::expr_game::ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_expr_identifier_nosize: // expr_identifier_nosize case symbol_kind::S_expr_identifier: // expr_identifier value.YY_MOVE_OR_COPY< ast::expr_identifier::ptr > (YY_MOVE (that.value)); break; @@ -492,7 +493,6 @@ namespace xsk { namespace gsc { namespace h2 { value.YY_MOVE_OR_COPY< ast::stmt_while::ptr > (YY_MOVE (that.value)); break; - case symbol_kind::S_FIELD: // "field" case symbol_kind::S_PATH: // "path" case symbol_kind::S_IDENTIFIER: // "identifier" case symbol_kind::S_STRING: // "string literal" @@ -603,6 +603,7 @@ namespace xsk { namespace gsc { namespace h2 { value.move< ast::expr_game::ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_expr_identifier_nosize: // expr_identifier_nosize case symbol_kind::S_expr_identifier: // expr_identifier value.move< ast::expr_identifier::ptr > (YY_MOVE (that.value)); break; @@ -794,7 +795,6 @@ namespace xsk { namespace gsc { namespace h2 { value.move< ast::stmt_while::ptr > (YY_MOVE (that.value)); break; - case symbol_kind::S_FIELD: // "field" case symbol_kind::S_PATH: // "path" case symbol_kind::S_IDENTIFIER: // "identifier" case symbol_kind::S_STRING: // "string literal" @@ -905,6 +905,7 @@ namespace xsk { namespace gsc { namespace h2 { value.copy< ast::expr_game::ptr > (that.value); break; + case symbol_kind::S_expr_identifier_nosize: // expr_identifier_nosize case symbol_kind::S_expr_identifier: // expr_identifier value.copy< ast::expr_identifier::ptr > (that.value); break; @@ -1096,7 +1097,6 @@ namespace xsk { namespace gsc { namespace h2 { value.copy< ast::stmt_while::ptr > (that.value); break; - case symbol_kind::S_FIELD: // "field" case symbol_kind::S_PATH: // "path" case symbol_kind::S_IDENTIFIER: // "identifier" case symbol_kind::S_STRING: // "string literal" @@ -1206,6 +1206,7 @@ namespace xsk { namespace gsc { namespace h2 { value.move< ast::expr_game::ptr > (that.value); break; + case symbol_kind::S_expr_identifier_nosize: // expr_identifier_nosize case symbol_kind::S_expr_identifier: // expr_identifier value.move< ast::expr_identifier::ptr > (that.value); break; @@ -1397,7 +1398,6 @@ namespace xsk { namespace gsc { namespace h2 { value.move< ast::stmt_while::ptr > (that.value); break; - case symbol_kind::S_FIELD: // "field" case symbol_kind::S_PATH: // "path" case symbol_kind::S_IDENTIFIER: // "identifier" case symbol_kind::S_STRING: // "string literal" @@ -1762,6 +1762,7 @@ namespace xsk { namespace gsc { namespace h2 { yylhs.value.emplace< ast::expr_game::ptr > (); break; + case symbol_kind::S_expr_identifier_nosize: // expr_identifier_nosize case symbol_kind::S_expr_identifier: // expr_identifier yylhs.value.emplace< ast::expr_identifier::ptr > (); break; @@ -1953,7 +1954,6 @@ namespace xsk { namespace gsc { namespace h2 { yylhs.value.emplace< ast::stmt_while::ptr > (); break; - case symbol_kind::S_FIELD: // "field" case symbol_kind::S_PATH: // "path" case symbol_kind::S_IDENTIFIER: // "identifier" case symbol_kind::S_STRING: // "string literal" @@ -1984,1315 +1984,1321 @@ namespace xsk { namespace gsc { namespace h2 { switch (yyn) { case 2: // root: program -#line 254 "parser.ypp" +#line 255 "parser.ypp" { ast = std::move(yystack_[0].value.as < ast::program::ptr > ()); } #line 1990 "parser.cpp" break; case 3: // root: %empty -#line 255 "parser.ypp" +#line 256 "parser.ypp" { ast = std::make_unique(yylhs.location); } #line 1996 "parser.cpp" break; case 4: // program: program inline -#line 260 "parser.ypp" +#line 261 "parser.ypp" { yylhs.value.as < ast::program::ptr > () = std::move(yystack_[1].value.as < ast::program::ptr > ()); } #line 2002 "parser.cpp" break; case 5: // program: program include -#line 262 "parser.ypp" +#line 263 "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" break; case 6: // program: program declaration -#line 264 "parser.ypp" +#line 265 "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" break; case 7: // program: inline -#line 266 "parser.ypp" +#line 267 "parser.ypp" { yylhs.value.as < ast::program::ptr > () = std::make_unique(yylhs.location); } #line 2020 "parser.cpp" break; case 8: // program: include -#line 268 "parser.ypp" +#line 269 "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" break; case 9: // program: declaration -#line 270 "parser.ypp" +#line 271 "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" break; case 10: // inline: "#inline" expr_path ";" -#line 274 "parser.ypp" +#line 275 "parser.ypp" { lexer.push_header(yystack_[1].value.as < ast::expr_path::ptr > ()->value); } #line 2038 "parser.cpp" break; case 11: // include: "#include" expr_path ";" -#line 279 "parser.ypp" +#line 280 "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" break; case 12: // declaration: "/#" -#line 283 "parser.ypp" +#line 284 "parser.ypp" { yylhs.value.as < ast::decl > ().as_dev_begin = std::make_unique(yylhs.location); } #line 2050 "parser.cpp" break; case 13: // declaration: "#/" -#line 284 "parser.ypp" +#line 285 "parser.ypp" { yylhs.value.as < ast::decl > ().as_dev_end = std::make_unique(yylhs.location); } #line 2056 "parser.cpp" break; case 14: // declaration: decl_usingtree -#line 285 "parser.ypp" +#line 286 "parser.ypp" { yylhs.value.as < ast::decl > ().as_usingtree = std::move(yystack_[0].value.as < ast::decl_usingtree::ptr > ()); } #line 2062 "parser.cpp" break; case 15: // declaration: decl_constant -#line 286 "parser.ypp" +#line 287 "parser.ypp" { yylhs.value.as < ast::decl > ().as_constant = std::move(yystack_[0].value.as < ast::decl_constant::ptr > ()); } #line 2068 "parser.cpp" break; case 16: // declaration: decl_thread -#line 287 "parser.ypp" +#line 288 "parser.ypp" { yylhs.value.as < ast::decl > ().as_thread = std::move(yystack_[0].value.as < ast::decl_thread::ptr > ()); } #line 2074 "parser.cpp" break; case 17: // decl_usingtree: "#using_animtree" "(" expr_string ")" ";" -#line 292 "parser.ypp" +#line 293 "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" break; case 18: // decl_constant: expr_identifier "=" expr ";" -#line 297 "parser.ypp" +#line 298 "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" break; case 19: // decl_thread: expr_identifier "(" expr_parameters ")" stmt_block -#line 302 "parser.ypp" +#line 303 "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" break; case 20: // stmt: stmt_block -#line 306 "parser.ypp" +#line 307 "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_call -#line 307 "parser.ypp" +#line 308 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_call = std::move(yystack_[0].value.as < ast::stmt_call::ptr > ()); } #line 2104 "parser.cpp" break; case 22: // stmt: stmt_assign -#line 308 "parser.ypp" +#line 309 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_assign = std::move(yystack_[0].value.as < ast::stmt_assign::ptr > ()); } #line 2110 "parser.cpp" break; case 23: // stmt: stmt_endon -#line 309 "parser.ypp" +#line 310 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_endon = std::move(yystack_[0].value.as < ast::stmt_endon::ptr > ()); } #line 2116 "parser.cpp" break; case 24: // stmt: stmt_notify -#line 310 "parser.ypp" +#line 311 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_notify = std::move(yystack_[0].value.as < ast::stmt_notify::ptr > ()); } #line 2122 "parser.cpp" break; case 25: // stmt: stmt_wait -#line 311 "parser.ypp" +#line 312 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_wait = std::move(yystack_[0].value.as < ast::stmt_wait::ptr > ()); } #line 2128 "parser.cpp" break; case 26: // stmt: stmt_waittill -#line 312 "parser.ypp" +#line 313 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_waittill = std::move(yystack_[0].value.as < ast::stmt_waittill::ptr > ()); } #line 2134 "parser.cpp" break; case 27: // stmt: stmt_waittillmatch -#line 313 "parser.ypp" +#line 314 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_waittillmatch = std::move(yystack_[0].value.as < ast::stmt_waittillmatch::ptr > ()); } #line 2140 "parser.cpp" break; case 28: // stmt: stmt_waittillframeend -#line 314 "parser.ypp" +#line 315 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_waittillframeend = std::move(yystack_[0].value.as < ast::stmt_waittillframeend::ptr > ()); } #line 2146 "parser.cpp" break; case 29: // stmt: stmt_waitframe -#line 315 "parser.ypp" +#line 316 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_waitframe = std::move(yystack_[0].value.as < ast::stmt_waitframe::ptr > ()); } #line 2152 "parser.cpp" break; case 30: // stmt: stmt_if -#line 316 "parser.ypp" +#line 317 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_if = std::move(yystack_[0].value.as < ast::stmt_if::ptr > ()); } #line 2158 "parser.cpp" break; case 31: // stmt: stmt_ifelse -#line 317 "parser.ypp" +#line 318 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_ifelse = std::move(yystack_[0].value.as < ast::stmt_ifelse::ptr > ()); } #line 2164 "parser.cpp" break; case 32: // stmt: stmt_while -#line 318 "parser.ypp" +#line 319 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_while = std::move(yystack_[0].value.as < ast::stmt_while::ptr > ()); } #line 2170 "parser.cpp" break; case 33: // stmt: stmt_dowhile -#line 319 "parser.ypp" +#line 320 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_dowhile = std::move(yystack_[0].value.as < ast::stmt_dowhile::ptr > ()); } #line 2176 "parser.cpp" break; case 34: // stmt: stmt_for -#line 320 "parser.ypp" +#line 321 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_for = std::move(yystack_[0].value.as < ast::stmt_for::ptr > ()); } #line 2182 "parser.cpp" break; case 35: // stmt: stmt_foreach -#line 321 "parser.ypp" +#line 322 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_foreach = std::move(yystack_[0].value.as < ast::stmt_foreach::ptr > ()); } #line 2188 "parser.cpp" break; case 36: // stmt: stmt_switch -#line 322 "parser.ypp" +#line 323 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_switch = std::move(yystack_[0].value.as < ast::stmt_switch::ptr > ()); } #line 2194 "parser.cpp" break; case 37: // stmt: stmt_case -#line 323 "parser.ypp" +#line 324 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_case = std::move(yystack_[0].value.as < ast::stmt_case::ptr > ()); } #line 2200 "parser.cpp" break; case 38: // stmt: stmt_default -#line 324 "parser.ypp" +#line 325 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_default = std::move(yystack_[0].value.as < ast::stmt_default::ptr > ()); } #line 2206 "parser.cpp" break; case 39: // stmt: stmt_break -#line 325 "parser.ypp" +#line 326 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_break = std::move(yystack_[0].value.as < ast::stmt_break::ptr > ()); } #line 2212 "parser.cpp" break; case 40: // stmt: stmt_continue -#line 326 "parser.ypp" +#line 327 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_continue = std::move(yystack_[0].value.as < ast::stmt_continue::ptr > ()); } #line 2218 "parser.cpp" break; case 41: // stmt: stmt_return -#line 327 "parser.ypp" +#line 328 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_return = std::move(yystack_[0].value.as < ast::stmt_return::ptr > ()); } #line 2224 "parser.cpp" break; case 42: // stmt: stmt_breakpoint -#line 328 "parser.ypp" +#line 329 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_breakpoint = std::move(yystack_[0].value.as < ast::stmt_breakpoint::ptr > ()); } #line 2230 "parser.cpp" break; case 43: // stmt: stmt_prof_begin -#line 329 "parser.ypp" +#line 330 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_prof_begin = std::move(yystack_[0].value.as < ast::stmt_prof_begin::ptr > ()); } #line 2236 "parser.cpp" break; case 44: // stmt: stmt_prof_end -#line 330 "parser.ypp" +#line 331 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_prof_end = std::move(yystack_[0].value.as < ast::stmt_prof_end::ptr > ()); } #line 2242 "parser.cpp" break; case 45: // stmt_or_dev: stmt -#line 334 "parser.ypp" +#line 335 "parser.ypp" { yylhs.value.as < ast::stmt > () = std::move(yystack_[0].value.as < ast::stmt > ()); } #line 2248 "parser.cpp" break; case 46: // stmt_or_dev: stmt_dev -#line 335 "parser.ypp" +#line 336 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_dev = std::move(yystack_[0].value.as < ast::stmt_dev::ptr > ()); } #line 2254 "parser.cpp" break; case 47: // stmt_list: stmt_list stmt -#line 340 "parser.ypp" +#line 341 "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 2260 "parser.cpp" break; case 48: // stmt_list: stmt -#line 342 "parser.ypp" +#line 343 "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 2266 "parser.cpp" break; case 49: // stmt_or_dev_list: stmt_or_dev_list stmt_or_dev -#line 347 "parser.ypp" +#line 348 "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 2272 "parser.cpp" break; case 50: // stmt_or_dev_list: stmt_or_dev -#line 349 "parser.ypp" +#line 350 "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 2278 "parser.cpp" break; case 51: // stmt_dev: "/#" stmt_list "#/" -#line 353 "parser.ypp" +#line 354 "parser.ypp" { yylhs.value.as < ast::stmt_dev::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::stmt_list::ptr > ())); } #line 2284 "parser.cpp" break; case 52: // stmt_dev: "/#" "#/" -#line 354 "parser.ypp" +#line 355 "parser.ypp" { yylhs.value.as < ast::stmt_dev::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } #line 2290 "parser.cpp" break; case 53: // stmt_block: "{" stmt_or_dev_list "}" -#line 358 "parser.ypp" +#line 359 "parser.ypp" { yylhs.value.as < ast::stmt_list::ptr > () = std::move(yystack_[1].value.as < ast::stmt_list::ptr > ()); } #line 2296 "parser.cpp" break; case 54: // stmt_block: "{" "}" -#line 359 "parser.ypp" +#line 360 "parser.ypp" { yylhs.value.as < ast::stmt_list::ptr > () = std::make_unique(yylhs.location); } #line 2302 "parser.cpp" break; case 55: // stmt_expr: expr_assign -#line 364 "parser.ypp" +#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 2308 "parser.cpp" break; case 56: // stmt_expr: expr_increment -#line 366 "parser.ypp" +#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 2314 "parser.cpp" break; case 57: // stmt_expr: expr_decrement -#line 368 "parser.ypp" +#line 369 "parser.ypp" { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } #line 2320 "parser.cpp" break; case 58: // stmt_expr: %empty -#line 370 "parser.ypp" +#line 371 "parser.ypp" { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } #line 2326 "parser.cpp" break; case 59: // stmt_call: expr_call ";" -#line 375 "parser.ypp" +#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_call::ptr > ()))); } #line 2332 "parser.cpp" break; case 60: // stmt_call: expr_method ";" -#line 377 "parser.ypp" +#line 378 "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 2338 "parser.cpp" break; case 61: // stmt_assign: expr_assign ";" -#line 382 "parser.ypp" +#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 2344 "parser.cpp" break; case 62: // stmt_assign: expr_increment ";" -#line 384 "parser.ypp" +#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 2350 "parser.cpp" break; case 63: // stmt_assign: expr_decrement ";" -#line 386 "parser.ypp" +#line 387 "parser.ypp" { yylhs.value.as < ast::stmt_assign::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } #line 2356 "parser.cpp" break; case 64: // stmt_endon: expr_object "endon" "(" expr ")" ";" -#line 391 "parser.ypp" +#line 392 "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 2362 "parser.cpp" break; case 65: // stmt_notify: expr_object "notify" "(" expr "," expr_arguments_no_empty ")" ";" -#line 396 "parser.ypp" +#line 397 "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 2368 "parser.cpp" break; case 66: // stmt_notify: expr_object "notify" "(" expr ")" ";" -#line 398 "parser.ypp" +#line 399 "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 2374 "parser.cpp" break; case 67: // stmt_wait: "wait" expr ";" -#line 403 "parser.ypp" +#line 404 "parser.ypp" { yylhs.value.as < ast::stmt_wait::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } #line 2380 "parser.cpp" break; case 68: // stmt_waittill: expr_object "waittill" "(" expr "," expr_arguments_no_empty ")" ";" -#line 408 "parser.ypp" +#line 409 "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 2386 "parser.cpp" break; case 69: // stmt_waittill: expr_object "waittill" "(" expr ")" ";" -#line 410 "parser.ypp" +#line 411 "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 2392 "parser.cpp" break; case 70: // stmt_waittillmatch: expr_object "waittillmatch" "(" expr "," expr_arguments_no_empty ")" ";" -#line 415 "parser.ypp" +#line 416 "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 2398 "parser.cpp" break; case 71: // stmt_waittillmatch: expr_object "waittillmatch" "(" expr ")" ";" -#line 417 "parser.ypp" +#line 418 "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 2404 "parser.cpp" break; case 72: // stmt_waittillframeend: "waittillframeend" ";" -#line 422 "parser.ypp" +#line 423 "parser.ypp" { yylhs.value.as < ast::stmt_waittillframeend::ptr > () = std::make_unique(yylhs.location); } #line 2410 "parser.cpp" break; case 73: // stmt_waitframe: "waitframe" ";" -#line 427 "parser.ypp" +#line 428 "parser.ypp" { yylhs.value.as < ast::stmt_waitframe::ptr > () = std::make_unique(yylhs.location); } #line 2416 "parser.cpp" break; case 74: // stmt_waitframe: "waitframe" "(" ")" ";" -#line 429 "parser.ypp" +#line 430 "parser.ypp" { yylhs.value.as < ast::stmt_waitframe::ptr > () = std::make_unique(yylhs.location); } #line 2422 "parser.cpp" break; case 75: // stmt_if: "if" "(" expr ")" stmt -#line 434 "parser.ypp" +#line 435 "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 2428 "parser.cpp" break; case 76: // stmt_ifelse: "if" "(" expr ")" stmt "else" stmt -#line 439 "parser.ypp" +#line 440 "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 2434 "parser.cpp" break; case 77: // stmt_while: "while" "(" expr ")" stmt -#line 444 "parser.ypp" +#line 445 "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 2440 "parser.cpp" break; case 78: // stmt_dowhile: "do" stmt "while" "(" expr ")" ";" -#line 449 "parser.ypp" +#line 450 "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 2446 "parser.cpp" break; case 79: // stmt_for: "for" "(" stmt_expr ";" expr_or_empty ";" stmt_expr ")" stmt -#line 454 "parser.ypp" +#line 455 "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 2452 "parser.cpp" break; case 80: // stmt_foreach: "foreach" "(" expr_identifier "in" expr ")" stmt -#line 459 "parser.ypp" +#line 460 "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 2458 "parser.cpp" break; case 81: // stmt_foreach: "foreach" "(" expr_identifier "," expr_identifier "in" expr ")" stmt -#line 461 "parser.ypp" +#line 462 "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 2464 "parser.cpp" break; case 82: // stmt_switch: "switch" "(" expr ")" stmt_block -#line 466 "parser.ypp" +#line 467 "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 2470 "parser.cpp" break; case 83: // stmt_case: "case" expr_integer ":" -#line 471 "parser.ypp" +#line 472 "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 2476 "parser.cpp" break; case 84: // stmt_case: "case" expr_string ":" -#line 473 "parser.ypp" +#line 474 "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 2482 "parser.cpp" break; case 85: // stmt_default: "default" ":" -#line 478 "parser.ypp" +#line 479 "parser.ypp" { yylhs.value.as < ast::stmt_default::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } #line 2488 "parser.cpp" break; case 86: // stmt_break: "break" ";" -#line 483 "parser.ypp" +#line 484 "parser.ypp" { yylhs.value.as < ast::stmt_break::ptr > () = std::make_unique(yylhs.location); } #line 2494 "parser.cpp" break; case 87: // stmt_continue: "continue" ";" -#line 488 "parser.ypp" +#line 489 "parser.ypp" { yylhs.value.as < ast::stmt_continue::ptr > () = std::make_unique(yylhs.location); } #line 2500 "parser.cpp" break; case 88: // stmt_return: "return" expr ";" -#line 493 "parser.ypp" +#line 494 "parser.ypp" { yylhs.value.as < ast::stmt_return::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } #line 2506 "parser.cpp" break; case 89: // stmt_return: "return" ";" -#line 495 "parser.ypp" +#line 496 "parser.ypp" { yylhs.value.as < ast::stmt_return::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } #line 2512 "parser.cpp" break; case 90: // stmt_breakpoint: "breakpoint" ";" -#line 500 "parser.ypp" +#line 501 "parser.ypp" { yylhs.value.as < ast::stmt_breakpoint::ptr > () = std::make_unique(yylhs.location); } #line 2518 "parser.cpp" break; case 91: // stmt_prof_begin: "prof_begin" "(" expr_arguments ")" ";" -#line 505 "parser.ypp" +#line 506 "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 2524 "parser.cpp" break; case 92: // stmt_prof_end: "prof_end" "(" expr_arguments ")" ";" -#line 510 "parser.ypp" +#line 511 "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 2530 "parser.cpp" break; case 93: // expr: expr_ternary -#line 514 "parser.ypp" +#line 515 "parser.ypp" { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } #line 2536 "parser.cpp" break; case 94: // expr: expr_binary -#line 515 "parser.ypp" +#line 516 "parser.ypp" { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } #line 2542 "parser.cpp" break; case 95: // expr: expr_primitive -#line 516 "parser.ypp" +#line 517 "parser.ypp" { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } #line 2548 "parser.cpp" break; case 96: // expr_or_empty: expr -#line 520 "parser.ypp" +#line 521 "parser.ypp" { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } #line 2554 "parser.cpp" break; case 97: // expr_or_empty: %empty -#line 521 "parser.ypp" +#line 522 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location); } #line 2560 "parser.cpp" break; case 98: // expr_assign: expr_object "=" expr -#line 526 "parser.ypp" +#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 2566 "parser.cpp" break; case 99: // expr_assign: expr_object "|=" expr -#line 528 "parser.ypp" +#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 2572 "parser.cpp" break; case 100: // expr_assign: expr_object "&=" expr -#line 530 "parser.ypp" +#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 2578 "parser.cpp" break; case 101: // expr_assign: expr_object "^=" expr -#line 532 "parser.ypp" +#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 2584 "parser.cpp" break; case 102: // expr_assign: expr_object "<<=" expr -#line 534 "parser.ypp" +#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 2590 "parser.cpp" break; case 103: // expr_assign: expr_object ">>=" expr -#line 536 "parser.ypp" +#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 2596 "parser.cpp" break; case 104: // expr_assign: expr_object "+=" expr -#line 538 "parser.ypp" +#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 2602 "parser.cpp" break; case 105: // expr_assign: expr_object "-=" expr -#line 540 "parser.ypp" +#line 541 "parser.ypp" { yylhs.value.as < ast::expr > ().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_assign: expr_object "*=" expr -#line 542 "parser.ypp" +#line 543 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } #line 2614 "parser.cpp" break; case 107: // expr_assign: expr_object "/=" expr -#line 544 "parser.ypp" +#line 545 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } #line 2620 "parser.cpp" break; case 108: // expr_assign: expr_object "%=" expr -#line 546 "parser.ypp" +#line 547 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } #line 2626 "parser.cpp" break; case 109: // expr_increment: "++" expr_object -#line 551 "parser.ypp" +#line 552 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ()), true); } #line 2632 "parser.cpp" break; case 110: // expr_increment: expr_object "++" -#line 553 "parser.ypp" +#line 554 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ()), false); } #line 2638 "parser.cpp" break; case 111: // expr_decrement: "--" expr_object -#line 558 "parser.ypp" +#line 559 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ()), true); } #line 2644 "parser.cpp" break; case 112: // expr_decrement: expr_object "--" -#line 560 "parser.ypp" +#line 561 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ()), false); } #line 2650 "parser.cpp" break; case 113: // expr_ternary: expr "?" expr ":" expr -#line 565 "parser.ypp" +#line 566 "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 2656 "parser.cpp" break; case 114: // expr_binary: expr "||" expr -#line 570 "parser.ypp" +#line 571 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } #line 2662 "parser.cpp" break; case 115: // expr_binary: expr "&&" expr -#line 572 "parser.ypp" +#line 573 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } #line 2668 "parser.cpp" break; case 116: // expr_binary: expr "==" expr -#line 574 "parser.ypp" +#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 2674 "parser.cpp" break; case 117: // expr_binary: expr "!=" expr -#line 576 "parser.ypp" +#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 2680 "parser.cpp" break; case 118: // expr_binary: expr "<=" expr -#line 578 "parser.ypp" +#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 2686 "parser.cpp" break; case 119: // expr_binary: expr ">=" expr -#line 580 "parser.ypp" +#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 2692 "parser.cpp" break; case 120: // expr_binary: expr "<" expr -#line 582 "parser.ypp" +#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 2698 "parser.cpp" break; case 121: // expr_binary: expr ">" expr -#line 584 "parser.ypp" +#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 2704 "parser.cpp" break; case 122: // expr_binary: expr "|" expr -#line 586 "parser.ypp" +#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 2710 "parser.cpp" break; case 123: // expr_binary: expr "&" expr -#line 588 "parser.ypp" +#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 2716 "parser.cpp" break; case 124: // expr_binary: expr "^" expr -#line 590 "parser.ypp" +#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 2722 "parser.cpp" break; case 125: // expr_binary: expr "<<" expr -#line 592 "parser.ypp" +#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 2728 "parser.cpp" break; case 126: // expr_binary: expr ">>" expr -#line 594 "parser.ypp" +#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 2734 "parser.cpp" break; case 127: // expr_binary: expr "+" expr -#line 596 "parser.ypp" +#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 2740 "parser.cpp" break; case 128: // expr_binary: expr "-" expr -#line 598 "parser.ypp" +#line 599 "parser.ypp" { yylhs.value.as < ast::expr > ().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_binary: expr "*" expr -#line 600 "parser.ypp" +#line 601 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } #line 2752 "parser.cpp" break; case 130: // expr_binary: expr "/" expr -#line 602 "parser.ypp" +#line 603 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } #line 2758 "parser.cpp" break; case 131: // expr_binary: expr "%" expr -#line 604 "parser.ypp" +#line 605 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } #line 2764 "parser.cpp" break; case 132: // expr_primitive: expr_complement -#line 608 "parser.ypp" +#line 609 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_complement::ptr > ()); } #line 2770 "parser.cpp" break; case 133: // expr_primitive: expr_not -#line 609 "parser.ypp" +#line 610 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_not::ptr > ()); } #line 2776 "parser.cpp" break; case 134: // expr_primitive: expr_call -#line 610 "parser.ypp" +#line 611 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_call::ptr > ()); } #line 2782 "parser.cpp" break; case 135: // expr_primitive: expr_method -#line 611 "parser.ypp" +#line 612 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_method::ptr > ()); } #line 2788 "parser.cpp" break; case 136: // expr_primitive: expr_add_array -#line 612 "parser.ypp" +#line 613 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_add_array::ptr > ()); } #line 2794 "parser.cpp" break; case 137: // expr_primitive: expr_reference -#line 613 "parser.ypp" +#line 614 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_reference::ptr > ()); } #line 2800 "parser.cpp" break; case 138: // expr_primitive: expr_array -#line 614 "parser.ypp" +#line 615 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_array::ptr > ()); } #line 2806 "parser.cpp" break; case 139: // expr_primitive: expr_field -#line 615 "parser.ypp" +#line 616 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_field::ptr > ()); } #line 2812 "parser.cpp" break; case 140: // expr_primitive: expr_size -#line 616 "parser.ypp" +#line 617 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_size::ptr > ()); } #line 2818 "parser.cpp" break; case 141: // expr_primitive: expr_paren -#line 617 "parser.ypp" +#line 618 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_paren::ptr > ()); } #line 2824 "parser.cpp" break; case 142: // expr_primitive: expr_thisthread -#line 618 "parser.ypp" +#line 619 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_thisthread::ptr > ()); } #line 2830 "parser.cpp" break; case 143: // expr_primitive: expr_empty_array -#line 619 "parser.ypp" +#line 620 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_empty_array::ptr > ()); } #line 2836 "parser.cpp" break; case 144: // expr_primitive: expr_undefined -#line 620 "parser.ypp" +#line 621 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_undefined::ptr > ()); } #line 2842 "parser.cpp" break; case 145: // expr_primitive: expr_game -#line 621 "parser.ypp" +#line 622 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_game::ptr > ()); } #line 2848 "parser.cpp" break; case 146: // expr_primitive: expr_self -#line 622 "parser.ypp" +#line 623 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_self::ptr > ()); } #line 2854 "parser.cpp" break; case 147: // expr_primitive: expr_anim -#line 623 "parser.ypp" +#line 624 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_anim::ptr > ()); } #line 2860 "parser.cpp" break; case 148: // expr_primitive: expr_level -#line 624 "parser.ypp" +#line 625 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_level::ptr > ()); } #line 2866 "parser.cpp" break; case 149: // expr_primitive: expr_animation -#line 625 "parser.ypp" +#line 626 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_animation::ptr > ()); } #line 2872 "parser.cpp" break; case 150: // expr_primitive: expr_animtree -#line 626 "parser.ypp" +#line 627 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_animtree::ptr > ()); } #line 2878 "parser.cpp" break; case 151: // expr_primitive: expr_identifier -#line 627 "parser.ypp" +#line 628 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ()); } #line 2884 "parser.cpp" break; case 152: // expr_primitive: expr_istring -#line 628 "parser.ypp" +#line 629 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_istring::ptr > ()); } #line 2890 "parser.cpp" break; case 153: // expr_primitive: expr_string -#line 629 "parser.ypp" +#line 630 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_string::ptr > ()); } #line 2896 "parser.cpp" break; case 154: // expr_primitive: expr_vector -#line 630 "parser.ypp" +#line 631 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_vector::ptr > ()); } #line 2902 "parser.cpp" break; case 155: // expr_primitive: expr_float -#line 631 "parser.ypp" +#line 632 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_float::ptr > ()); } #line 2908 "parser.cpp" break; case 156: // expr_primitive: expr_integer -#line 632 "parser.ypp" +#line 633 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_integer::ptr > ()); } #line 2914 "parser.cpp" break; case 157: // expr_primitive: expr_false -#line 633 "parser.ypp" +#line 634 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_false::ptr > ()); } #line 2920 "parser.cpp" break; case 158: // expr_primitive: expr_true -#line 634 "parser.ypp" +#line 635 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_true::ptr > ()); } #line 2926 "parser.cpp" break; case 159: // expr_complement: "~" expr -#line 639 "parser.ypp" +#line 640 "parser.ypp" { yylhs.value.as < ast::expr_complement::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } #line 2932 "parser.cpp" break; case 160: // expr_not: "!" expr -#line 644 "parser.ypp" +#line 645 "parser.ypp" { yylhs.value.as < ast::expr_not::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } #line 2938 "parser.cpp" break; case 161: // expr_call: expr_function -#line 648 "parser.ypp" +#line 649 "parser.ypp" { yylhs.value.as < ast::expr_call::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::call > ())); } #line 2944 "parser.cpp" break; case 162: // expr_call: expr_pointer -#line 649 "parser.ypp" +#line 650 "parser.ypp" { yylhs.value.as < ast::expr_call::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::call > ())); } #line 2950 "parser.cpp" break; case 163: // expr_method: expr_object expr_function -#line 652 "parser.ypp" +#line 653 "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 2956 "parser.cpp" break; case 164: // expr_method: expr_object expr_pointer -#line 653 "parser.ypp" +#line 654 "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 2962 "parser.cpp" break; case 165: // expr_function: expr_identifier "(" expr_arguments ")" -#line 658 "parser.ypp" +#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::normal); } #line 2968 "parser.cpp" break; case 166: // expr_function: expr_path "::" expr_identifier "(" expr_arguments ")" -#line 660 "parser.ypp" +#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::normal); } #line 2974 "parser.cpp" break; case 167: // expr_function: "thread" expr_identifier "(" expr_arguments ")" -#line 662 "parser.ypp" +#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::thread); } #line 2980 "parser.cpp" break; case 168: // expr_function: "thread" expr_path "::" expr_identifier "(" expr_arguments ")" -#line 664 "parser.ypp" +#line 665 "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 2986 "parser.cpp" break; case 169: // expr_function: "childthread" expr_identifier "(" expr_arguments ")" -#line 666 "parser.ypp" +#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::childthread); } #line 2992 "parser.cpp" break; case 170: // expr_function: "childthread" expr_path "::" expr_identifier "(" expr_arguments ")" -#line 668 "parser.ypp" +#line 669 "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 2998 "parser.cpp" break; case 171: // expr_pointer: "[" "[" expr "]" "]" "(" expr_arguments ")" -#line 673 "parser.ypp" +#line 674 "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 3004 "parser.cpp" break; case 172: // expr_pointer: "thread" "[" "[" expr "]" "]" "(" expr_arguments ")" -#line 675 "parser.ypp" +#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::thread); } #line 3010 "parser.cpp" break; case 173: // expr_pointer: "childthread" "[" "[" expr "]" "]" "(" expr_arguments ")" -#line 677 "parser.ypp" +#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::childthread); } #line 3016 "parser.cpp" break; case 174: // expr_pointer: "call" "[" "[" expr "]" "]" "(" expr_arguments ")" -#line 679 "parser.ypp" +#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::builtin); } #line 3022 "parser.cpp" break; case 175: // expr_add_array: "[" expr_arguments_no_empty "]" -#line 684 "parser.ypp" +#line 685 "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 3028 "parser.cpp" break; case 176: // expr_parameters: expr_parameters "," expr_identifier -#line 689 "parser.ypp" +#line 690 "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 3034 "parser.cpp" break; case 177: // expr_parameters: expr_identifier -#line 691 "parser.ypp" +#line 692 "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 3040 "parser.cpp" break; case 178: // expr_parameters: %empty -#line 693 "parser.ypp" +#line 694 "parser.ypp" { yylhs.value.as < ast::expr_parameters::ptr > () = std::make_unique(yylhs.location); } #line 3046 "parser.cpp" break; case 179: // expr_arguments: expr_arguments_no_empty -#line 698 "parser.ypp" +#line 699 "parser.ypp" { yylhs.value.as < ast::expr_arguments::ptr > () = std::move(yystack_[0].value.as < ast::expr_arguments::ptr > ()); } #line 3052 "parser.cpp" break; case 180: // expr_arguments: %empty -#line 700 "parser.ypp" +#line 701 "parser.ypp" { yylhs.value.as < ast::expr_arguments::ptr > () = std::make_unique(yylhs.location); } #line 3058 "parser.cpp" break; case 181: // expr_arguments_no_empty: expr_arguments "," expr -#line 705 "parser.ypp" +#line 706 "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 3064 "parser.cpp" break; case 182: // expr_arguments_no_empty: expr -#line 707 "parser.ypp" +#line 708 "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 3070 "parser.cpp" break; case 183: // expr_reference: "::" expr_identifier -#line 712 "parser.ypp" +#line 713 "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 3076 "parser.cpp" break; case 184: // expr_reference: expr_path "::" expr_identifier -#line 714 "parser.ypp" +#line 715 "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 3082 "parser.cpp" break; case 185: // expr_array: expr_object "[" expr "]" -#line 719 "parser.ypp" +#line 720 "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 3088 "parser.cpp" break; - case 186: // expr_field: expr_object "." expr_identifier -#line 724 "parser.ypp" + case 186: // expr_field: expr_object "." expr_identifier_nosize +#line 725 "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 3094 "parser.cpp" break; - case 187: // expr_field: expr_object "field" -#line 726 "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 > ())); } + case 187: // expr_size: expr_object "." "size" +#line 730 "parser.ypp" + { yylhs.value.as < ast::expr_size::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ())); } #line 3100 "parser.cpp" break; - case 188: // expr_size: expr_object ".size" -#line 731 "parser.ypp" - { yylhs.value.as < ast::expr_size::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } + case 188: // expr_paren: "(" expr ")" +#line 735 "parser.ypp" + { yylhs.value.as < ast::expr_paren::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } #line 3106 "parser.cpp" break; - case 189: // expr_paren: "(" expr ")" -#line 736 "parser.ypp" - { yylhs.value.as < ast::expr_paren::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } + case 189: // expr_object: expr_call +#line 739 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_call::ptr > ()); } #line 3112 "parser.cpp" break; - case 190: // expr_object: expr_call + case 190: // expr_object: expr_method #line 740 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_call::ptr > ()); } + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_method::ptr > ()); } #line 3118 "parser.cpp" break; - case 191: // expr_object: expr_method + case 191: // expr_object: expr_array #line 741 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_method::ptr > ()); } + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_array::ptr > ()); } #line 3124 "parser.cpp" break; - case 192: // expr_object: expr_array + case 192: // expr_object: expr_field #line 742 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_array::ptr > ()); } + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_field::ptr > ()); } #line 3130 "parser.cpp" break; - case 193: // expr_object: expr_field + case 193: // expr_object: expr_game #line 743 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_field::ptr > ()); } + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_game::ptr > ()); } #line 3136 "parser.cpp" break; - case 194: // expr_object: expr_game + case 194: // expr_object: expr_self #line 744 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_game::ptr > ()); } + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_self::ptr > ()); } #line 3142 "parser.cpp" break; - case 195: // expr_object: expr_self + case 195: // expr_object: expr_anim #line 745 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_self::ptr > ()); } + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_anim::ptr > ()); } #line 3148 "parser.cpp" break; - case 196: // expr_object: expr_anim + case 196: // expr_object: expr_level #line 746 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_anim::ptr > ()); } + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_level::ptr > ()); } #line 3154 "parser.cpp" break; - case 197: // expr_object: expr_level + case 197: // expr_object: expr_identifier #line 747 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_level::ptr > ()); } + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ()); } #line 3160 "parser.cpp" break; - case 198: // expr_object: expr_identifier -#line 748 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ()); } + case 198: // expr_thisthread: "thisthread" +#line 752 "parser.ypp" + { yylhs.value.as < ast::expr_thisthread::ptr > () = std::make_unique(yylhs.location); } #line 3166 "parser.cpp" break; - case 199: // expr_thisthread: "thisthread" -#line 753 "parser.ypp" - { yylhs.value.as < ast::expr_thisthread::ptr > () = std::make_unique(yylhs.location); } + case 199: // expr_empty_array: "[" "]" +#line 757 "parser.ypp" + { yylhs.value.as < ast::expr_empty_array::ptr > () = std::make_unique(yylhs.location); } #line 3172 "parser.cpp" break; - case 200: // expr_empty_array: "[" "]" -#line 758 "parser.ypp" - { yylhs.value.as < ast::expr_empty_array::ptr > () = std::make_unique(yylhs.location); } + case 200: // expr_undefined: "undefined" +#line 762 "parser.ypp" + { yylhs.value.as < ast::expr_undefined::ptr > () = std::make_unique(yylhs.location); } #line 3178 "parser.cpp" break; - case 201: // expr_undefined: "undefined" -#line 763 "parser.ypp" - { yylhs.value.as < ast::expr_undefined::ptr > () = std::make_unique(yylhs.location); } + case 201: // expr_game: "game" +#line 767 "parser.ypp" + { yylhs.value.as < ast::expr_game::ptr > () = std::make_unique(yylhs.location); } #line 3184 "parser.cpp" break; - case 202: // expr_game: "game" -#line 768 "parser.ypp" - { yylhs.value.as < ast::expr_game::ptr > () = std::make_unique(yylhs.location); } + case 202: // expr_self: "self" +#line 772 "parser.ypp" + { yylhs.value.as < ast::expr_self::ptr > () = std::make_unique(yylhs.location); } #line 3190 "parser.cpp" break; - case 203: // expr_self: "self" -#line 773 "parser.ypp" - { yylhs.value.as < ast::expr_self::ptr > () = std::make_unique(yylhs.location); } + case 203: // expr_anim: "anim" +#line 777 "parser.ypp" + { yylhs.value.as < ast::expr_anim::ptr > () = std::make_unique(yylhs.location); } #line 3196 "parser.cpp" break; - case 204: // expr_anim: "anim" -#line 778 "parser.ypp" - { yylhs.value.as < ast::expr_anim::ptr > () = std::make_unique(yylhs.location); } + case 204: // expr_level: "level" +#line 782 "parser.ypp" + { yylhs.value.as < ast::expr_level::ptr > () = std::make_unique(yylhs.location); } #line 3202 "parser.cpp" break; - case 205: // expr_level: "level" -#line 783 "parser.ypp" - { yylhs.value.as < ast::expr_level::ptr > () = std::make_unique(yylhs.location); } + case 205: // expr_animation: "%" "identifier" +#line 787 "parser.ypp" + { yylhs.value.as < ast::expr_animation::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 3208 "parser.cpp" break; - case 206: // expr_animation: "%" "identifier" -#line 788 "parser.ypp" - { yylhs.value.as < ast::expr_animation::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 206: // expr_animtree: "#animtree" +#line 792 "parser.ypp" + { yylhs.value.as < ast::expr_animtree::ptr > () = std::make_unique(yylhs.location); } #line 3214 "parser.cpp" break; - case 207: // expr_animtree: "#animtree" -#line 793 "parser.ypp" - { yylhs.value.as < ast::expr_animtree::ptr > () = std::make_unique(yylhs.location); } + case 207: // expr_identifier_nosize: "identifier" +#line 797 "parser.ypp" + { yylhs.value.as < ast::expr_identifier::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 3220 "parser.cpp" break; case 208: // expr_identifier: "identifier" -#line 798 "parser.ypp" +#line 802 "parser.ypp" { yylhs.value.as < ast::expr_identifier::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 3226 "parser.cpp" break; - case 209: // expr_path: "path" -#line 803 "parser.ypp" - { yylhs.value.as < ast::expr_path::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 209: // expr_identifier: "size" +#line 804 "parser.ypp" + { yylhs.value.as < ast::expr_identifier::ptr > () = std::make_unique(yylhs.location, "size"); } #line 3232 "parser.cpp" break; - case 210: // expr_path: expr_identifier -#line 805 "parser.ypp" - { yylhs.value.as < ast::expr_path::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < ast::expr_identifier::ptr > ()->value); } + case 210: // expr_path: "identifier" +#line 809 "parser.ypp" + { yylhs.value.as < ast::expr_path::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 3238 "parser.cpp" break; - case 211: // expr_istring: "localized string" -#line 810 "parser.ypp" - { yylhs.value.as < ast::expr_istring::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 211: // expr_path: "path" +#line 811 "parser.ypp" + { yylhs.value.as < ast::expr_path::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 3244 "parser.cpp" break; - case 212: // expr_string: "string literal" -#line 815 "parser.ypp" - { yylhs.value.as < ast::expr_string::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 212: // expr_istring: "localized string" +#line 816 "parser.ypp" + { yylhs.value.as < ast::expr_istring::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 3250 "parser.cpp" break; - case 213: // expr_vector: "(" expr "," expr "," expr ")" -#line 820 "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 > ())); } + case 213: // expr_string: "string literal" +#line 821 "parser.ypp" + { yylhs.value.as < ast::expr_string::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 3256 "parser.cpp" break; - 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 > ()); } + case 214: // expr_vector: "(" expr "," expr "," expr ")" +#line 826 "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 3262 "parser.cpp" break; - case 215: // expr_float: "float" -#line 827 "parser.ypp" - { yylhs.value.as < ast::expr_float::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 215: // expr_float: "-" "float" +#line 831 "parser.ypp" + { yylhs.value.as < ast::expr_float::ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } #line 3268 "parser.cpp" break; - 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 > ()); } + 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 3274 "parser.cpp" break; - case 217: // expr_integer: "integer" -#line 834 "parser.ypp" - { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 217: // expr_integer: "-" "integer" +#line 838 "parser.ypp" + { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } #line 3280 "parser.cpp" break; - case 218: // expr_false: "false" -#line 839 "parser.ypp" - { yylhs.value.as < ast::expr_false::ptr > () = std::make_unique(yylhs.location); } + 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 3286 "parser.cpp" break; - case 219: // expr_true: "true" -#line 844 "parser.ypp" - { yylhs.value.as < ast::expr_true::ptr > () = std::make_unique(yylhs.location); } + case 219: // expr_false: "false" +#line 845 "parser.ypp" + { yylhs.value.as < ast::expr_false::ptr > () = std::make_unique(yylhs.location); } #line 3292 "parser.cpp" break; + case 220: // expr_true: "true" +#line 850 "parser.ypp" + { yylhs.value.as < ast::expr_true::ptr > () = std::make_unique(yylhs.location); } +#line 3298 "parser.cpp" + break; -#line 3296 "parser.cpp" + +#line 3302 "parser.cpp" default: break; @@ -3483,30 +3489,31 @@ namespace xsk { namespace gsc { namespace h2 { "else", "do", "while", "for", "foreach", "in", "switch", "case", "default", "break", "continue", "return", "breakpoint", "prof_begin", "prof_end", "thread", "childthread", "thisthread", "call", "true", - "false", "undefined", ".size", "game", "self", "anim", "level", "(", ")", + "false", "undefined", "size", "game", "self", "anim", "level", "(", ")", "{", "}", "[", "]", ",", ".", "::", ":", ";", "?", "++", "--", "<<", ">>", "||", "&&", "==", "!=", "<=", ">=", "<", ">", "!", "~", "=", "+=", "-=", "*=", "/=", "%=", "|=", "&=", "^=", ">>=", "<<=", "|", "&", "^", - "+", "-", "*", "/", "%", "field", "path", "identifier", "string literal", - "localized string", "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_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", + "+", "-", "*", "/", "%", "path", "identifier", "string literal", + "localized string", "float", "integer", "SIZEOF", "ADD_ARRAY", "THEN", + "TERN", "NEG", "ANIMREF", "PREINC", "PREDEC", "POSTINC", "POSTDEC", + "$accept", "root", "program", "inline", "include", "declaration", + "decl_usingtree", "decl_constant", "decl_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_nosize", "expr_identifier", "expr_path", "expr_istring", "expr_string", "expr_vector", "expr_float", "expr_integer", "expr_false", "expr_true", YY_NULLPTR }; @@ -3773,516 +3780,510 @@ namespace xsk { namespace gsc { namespace h2 { } - const short parser::yypact_ninf_ = -267; + const short parser::yypact_ninf_ = -271; const short parser::yytable_ninf_ = -211; const short parser::yypact_[] = { - 4, -267, -267, -69, -69, -28, -267, 26, 4, -267, - -267, -267, -267, -267, -267, -40, -267, -267, -16, -3, - 5, -267, -267, -267, -267, -27, 1039, -267, -267, -267, - 23, -26, -267, -267, -36, -34, -267, 42, -267, -267, - -267, -267, -267, -267, -267, 1039, 625, -27, 1039, 1039, - -24, 14, -267, -267, -267, 2008, -267, -267, -267, -267, - -267, 291, 431, -267, -267, -267, -267, 592, 663, -267, - -267, 1003, -267, -267, -267, 1013, 1077, 1244, 1252, -267, - -267, 67, 44, -267, -267, -267, -267, -267, -267, -267, - 50, 68, -27, 60, 80, 76, 89, 90, 78, 94, - 1294, 625, -267, 2091, 88, 95, -267, -267, -267, -267, - -267, -267, -267, 1039, 1039, 1039, 1039, 1039, 1039, 1039, - 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, - 1039, 1039, -267, 1103, -27, -267, -267, -267, 104, 101, - 1039, -27, -267, 789, -267, -267, 1039, 1039, -27, 1039, - 1039, -27, 1039, -267, 1039, 1738, 1039, -267, 1973, 126, - 126, 1243, 2122, 2204, 2204, 415, 415, 415, 415, 2132, - 2173, 2163, 63, 63, -267, -267, -267, 1778, -267, -27, - -5, -267, 110, 895, 1039, 105, -2, 116, 1232, 117, - 118, 120, 121, -49, 113, 122, 123, 975, 125, 138, - 141, -267, 140, 548, 548, -267, -267, 841, -267, -267, - -267, -267, -267, -267, -267, -267, -267, -267, -267, -267, - -267, -267, -267, -267, -267, -267, -267, -267, -267, -267, - -267, -267, -267, -267, 137, 143, 144, 146, 149, -267, - -267, 1151, -267, -267, -267, -267, -29, 1818, 15, 148, - 1858, 16, 150, 1898, 1937, 155, 2091, 1039, -267, 110, - -267, 1039, -267, -267, 949, 2043, -267, 161, -267, 1039, - 198, 1039, 690, -27, 1039, 124, 165, 167, -267, -267, - -267, -267, 2078, -267, 1039, 1039, 1039, -267, -267, -4, - -4, -267, -267, -267, -267, -267, -267, -267, 180, 181, - 182, 184, -267, -267, 1039, 1039, 1039, 1039, 1039, 1039, - 1039, 1039, 1039, 1039, 1039, 174, -267, 1039, 183, -267, - 1039, 185, 1039, 191, 2091, 17, -267, -267, -267, 175, - 1460, 192, 1494, 186, -267, -267, -267, 2, -9, 1528, - -267, -267, -267, 38, 53, 1738, 1039, 1039, 1039, 1039, - 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, - 2091, 193, 62, 194, 71, 197, 1562, 1039, -267, -267, - 1232, 1039, 1232, 1039, 1039, -27, 68, 188, 189, 1596, - 1338, 1382, 1426, 1039, -267, 1039, -267, 1039, -267, 72, - 228, 1630, -267, 2091, 195, 1664, 224, -267, -267, -267, - 199, 200, 1039, 201, 1039, 203, 1039, 75, 82, 86, - -267, 1232, 205, 690, 1232, 1039, -267, -267, 202, -267, - 215, -267, 216, -267, -267, -267, -267, -267, 222, -267, - 1698, 214, 219, 220, 1232, 1232, -267, -267, -267, -267, - -267 + 9, -271, -271, -48, -48, -34, -271, -271, 29, 9, + -271, -271, -271, -271, -271, -271, -44, -271, -271, -30, + -9, -85, -271, -271, -271, -271, -20, 684, -271, -271, + -271, -6, 21, -271, -271, -28, 39, -271, 15, -271, + -271, -271, -271, -271, -271, -271, 684, 1024, -20, 684, + 684, -38, 2, 43, -271, -271, -271, 1959, -271, -271, + -271, -271, -271, 42, 72, -271, -271, -271, -271, 86, + 186, -271, -271, 427, -271, -271, -271, 490, 615, 712, + 876, -271, -271, 25, 50, -271, -271, -271, -271, -271, + -271, -271, 44, 62, -20, 64, 82, 78, 68, 92, + 96, 103, 1284, 1024, -271, 2042, 118, 132, -271, -271, + -271, -271, -271, -271, -271, 684, 684, 684, 684, 684, + 684, 684, 684, 684, 684, 684, 684, 684, 684, 684, + 684, 684, 684, 684, 1150, -2, -271, -271, 141, 147, + 684, -20, -271, 792, -271, -271, 684, 684, -20, 684, + 684, -20, 684, -271, 684, 1728, 684, -271, 1924, 315, + 315, 2073, 2083, 1078, 1078, 165, 165, 165, 165, 2114, + 2155, 2124, -4, -4, -271, -271, -271, 1768, -271, -271, + -271, -20, 46, -271, 158, 921, 684, 149, -37, 162, + 1274, 163, 166, 167, 168, 12, 164, 172, 173, 1087, + 175, 176, 178, -271, 191, -10, -10, -271, -271, 844, + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271, 184, 187, 189, 192, + 200, -271, -271, 1197, -271, -271, -271, -271, 141, 1808, + 77, 201, 1848, 94, 215, 1888, 1019, 181, 2042, 684, + -271, 158, -271, 684, -271, -271, 998, 1994, -271, 199, + -271, 684, 241, 684, 11, -20, 684, 169, 208, 217, + -271, -271, -271, -271, 2029, -271, 684, 684, 684, -271, + -271, 953, 953, -271, -271, -271, -271, -271, -271, -271, + 224, 227, 228, 230, 188, -271, -271, 684, 684, 684, + 684, 684, 684, 684, 684, 684, 684, 684, 232, -271, + 684, 233, -271, 684, 237, 684, 243, 2042, 100, -271, + -271, -271, 234, 1450, 245, 1484, 240, -271, -271, -271, + 550, -14, 1518, -271, -271, -271, 104, 107, 1728, 684, + 684, 684, 684, 2042, 2042, 2042, 2042, 2042, 2042, 2042, + 2042, 2042, 2042, 2042, 251, 110, 252, 113, 275, 1552, + 684, -271, -271, 1274, 684, 1274, 684, 684, -20, 62, + 268, 269, 1586, 1328, 1372, 1416, 684, -271, 684, -271, + 684, -271, 124, 307, 1620, -271, 2042, 271, 1654, 305, + -271, -271, -271, 276, 281, 684, 283, 684, 286, 684, + 143, 146, 150, -271, 1274, 289, 11, 1274, 684, -271, + -271, 288, -271, 299, -271, 300, -271, -271, -271, -271, + -271, 301, -271, 1688, 294, 296, 298, 1274, 1274, -271, + -271, -271, -271, -271 }; const unsigned char parser::yydefact_[] = { - 3, 12, 13, 0, 0, 0, 208, 0, 2, 7, - 8, 9, 14, 15, 16, 0, 209, 210, 0, 0, - 0, 1, 4, 5, 6, 178, 0, 10, 11, 212, - 0, 0, 177, 207, 0, 0, 199, 0, 219, 218, - 201, 202, 203, 204, 205, 0, 180, 0, 0, 0, - 0, 0, 211, 215, 217, 0, 93, 94, 95, 132, - 133, 134, 135, 161, 162, 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, - 0, 0, 0, 0, 210, 0, 0, 210, 0, 0, - 0, 180, 200, 182, 0, 179, 183, 160, 159, 214, - 216, 206, 18, 0, 0, 0, 0, 0, 0, 0, + 3, 12, 13, 0, 0, 0, 209, 208, 0, 2, + 7, 8, 9, 14, 15, 16, 0, 211, 210, 0, + 0, 0, 1, 4, 5, 6, 178, 0, 10, 11, + 213, 0, 0, 177, 206, 0, 0, 198, 0, 220, + 219, 200, 201, 202, 203, 204, 0, 180, 0, 0, + 0, 0, 0, 208, 212, 216, 218, 0, 93, 94, + 95, 132, 133, 134, 135, 161, 162, 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, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 180, 199, 182, 0, 179, 183, 160, + 159, 215, 217, 205, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 188, 0, 0, 187, 163, 164, 210, 0, + 0, 0, 0, 0, 0, 0, 163, 164, 0, 0, 180, 0, 17, 0, 19, 176, 0, 180, 0, 0, - 180, 0, 0, 189, 0, 182, 0, 175, 0, 125, + 180, 0, 0, 188, 0, 182, 0, 175, 0, 125, 126, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 127, 128, 129, 130, 131, 0, 186, 0, - 0, 179, 184, 0, 0, 0, 0, 0, 0, 0, + 123, 124, 127, 128, 129, 130, 131, 0, 187, 207, + 186, 0, 0, 179, 184, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 190, 191, 192, - 193, 0, 194, 195, 196, 197, 198, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 181, 0, 185, 0, - 165, 180, 52, 48, 0, 0, 72, 0, 73, 0, - 0, 0, 58, 0, 0, 0, 0, 0, 85, 86, - 87, 89, 0, 90, 180, 180, 0, 190, 191, 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, 167, 180, 0, 169, - 180, 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, 180, 166, 74, - 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 180, 168, 180, 170, 180, 213, 0, - 75, 0, 77, 96, 0, 0, 0, 82, 91, 92, - 0, 0, 180, 0, 180, 0, 180, 0, 0, 0, - 171, 0, 0, 58, 0, 0, 64, 66, 179, 69, - 179, 71, 179, 172, 173, 174, 76, 78, 0, 80, - 0, 0, 0, 0, 0, 0, 65, 68, 70, 79, - 81 + 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, 189, + 190, 191, 192, 0, 193, 194, 195, 196, 197, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 181, 0, + 185, 0, 165, 180, 52, 48, 0, 0, 72, 0, + 73, 0, 0, 0, 58, 0, 0, 0, 0, 0, + 85, 86, 87, 89, 0, 90, 180, 180, 0, 189, + 190, 109, 111, 53, 49, 61, 62, 63, 59, 60, + 0, 0, 0, 0, 0, 110, 112, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 167, + 180, 0, 169, 180, 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, + 180, 166, 74, 0, 0, 0, 97, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 180, 168, 180, 170, + 180, 214, 0, 75, 0, 77, 96, 0, 0, 0, + 82, 91, 92, 0, 0, 180, 0, 180, 0, 180, + 0, 0, 0, 171, 0, 0, 58, 0, 0, 64, + 66, 179, 69, 179, 71, 179, 172, 173, 174, 76, + 78, 0, 80, 0, 0, 0, 0, 0, 0, 65, + 68, 70, 79, 81 }; const short parser::yypgoto_[] = { - -267, -267, -267, 275, 277, 280, -267, -267, -267, -155, - 85, -267, -267, -267, -89, -120, -267, -267, -267, -267, - -267, -267, -267, -267, -267, -267, -267, -267, -267, -267, - -267, -267, -267, -267, -267, -267, -267, -267, -267, -267, - 190, -267, -266, -259, -258, -267, -267, -267, -267, -267, - -86, -12, -66, -60, -267, -267, 13, -45, -267, -6, - 179, -267, -267, 249, -267, -267, -267, 282, 337, 362, - 372, -267, -267, 0, 6, -267, -13, -267, -267, 106, - -267, -267 + -271, -271, -271, 356, 357, 359, -271, -271, -271, -173, + 160, -271, -271, -271, -91, -45, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + 190, -271, -270, -267, -261, -271, -271, -271, -271, -271, + -88, -18, -70, -68, -271, -271, 14, -46, -271, -11, + 182, -271, -271, 270, -271, -271, -271, 279, 304, 329, + 375, -271, -271, -271, 0, 7, -271, -15, -271, -271, + 179, -271, -271 }; const short parser::yydefgoto_[] = { - 0, 7, 8, 9, 10, 11, 12, 13, 14, 205, - 206, 264, 207, 208, 209, 333, 210, 211, 212, 213, - 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, - 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, - 103, 394, 234, 235, 236, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, 31, 104, 181, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - 88, 89 + 0, 8, 9, 10, 11, 12, 13, 14, 15, 207, + 208, 266, 209, 210, 211, 336, 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, 397, 236, 237, 238, 58, 59, 60, 61, 62, + 63, 64, 65, 66, 67, 32, 106, 183, 68, 69, + 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 180, 83, 84, 85, 86, 87, 88, + 89, 90, 91 }; const short parser::yytable_[] = { - 15, 105, 144, 17, 17, 136, 334, 30, 15, 18, - 19, 137, 25, 335, 336, 1, 2, 3, 4, 5, - 93, 374, 96, 140, 20, 32, 21, 91, 263, 16, - 6, -210, 92, 270, 94, 97, 34, 35, 26, 37, - 95, 98, 34, 35, 275, 37, 27, 106, 260, 375, - 267, 29, 133, 156, 54, 134, 105, 237, 133, 28, - 268, 134, 16, 6, 16, 6, 302, 303, 316, 319, - 368, 138, 6, 156, 156, 156, 90, 139, 109, 110, - 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 377, 145, 135, 16, 6, 156, 237, 99, 135, - 16, 6, 237, 6, 141, 29, 378, -198, -198, 327, - -198, 156, 142, 111, -198, 384, 146, 287, 287, 140, - 156, 237, 143, -198, 386, 410, -198, -210, 423, 156, - 156, 238, 147, 156, 178, 424, 148, 239, 151, 425, - 156, 182, 150, 246, 156, 149, 156, 334, 249, 139, - 152, 252, 157, 180, 335, 336, 140, 129, 130, 131, - 248, 179, 261, 251, -198, -198, -198, 266, 269, 271, - 272, 238, 273, 274, 278, 136, 238, 239, 237, 259, - 276, 137, 239, 246, 279, 280, 287, 283, 246, 139, - 284, 288, 288, 285, 139, 238, 286, 239, 239, 293, - 317, 239, 320, 246, 246, 294, 295, 246, 296, 139, - 139, 297, 323, 139, 329, 390, 55, 392, 127, 128, - 129, 130, 131, 136, 136, 331, 340, 110, 341, 137, - 137, 361, 346, 347, 348, 100, 349, 369, 107, 108, - 363, 138, 365, 367, 371, 383, 385, 139, 373, 387, - 398, 399, 238, 411, 415, 431, 426, 413, 239, 429, - 288, 416, 417, 419, 246, 421, 239, 427, 432, 433, - 139, 136, 246, 338, 325, 434, 436, 137, 139, 439, - 440, 437, 438, 22, 237, 23, 237, 397, 24, 138, - 138, 155, 292, 428, 0, 139, 139, 343, 344, 277, - 0, 0, 0, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, - 175, 176, 240, 177, 0, 237, 0, 287, 237, 0, - 362, -190, -190, 364, -190, 0, 247, 138, -190, 250, - 0, 0, 253, 139, 254, 0, 256, -190, 237, 237, - -190, 0, 0, 0, 0, 0, 0, 418, 238, 420, - 238, 422, 240, 0, 239, 0, 239, 240, 0, 0, - 246, 0, 246, 0, 265, 396, 139, 0, 139, 0, - 389, 0, 240, 240, 0, 0, 240, 282, -190, -190, - -190, 0, 241, 0, 0, 0, 407, 0, 408, 238, - 409, 288, 238, 0, 0, 239, 0, 239, 239, 0, - 0, 246, 0, 246, 246, 0, 0, 139, 0, 139, - 139, 0, 238, 238, 0, 242, 0, 0, 239, 239, - 0, 0, 241, 0, 246, 246, 0, 241, 0, 0, - 139, 139, 0, 240, 0, 0, 0, 324, 0, 0, - 0, 240, 289, 290, 0, 0, 241, 0, 0, 330, - 0, 332, 0, 0, 339, 242, 0, 0, 0, 0, - 242, -191, -191, 0, -191, 0, 345, 0, -191, 0, - 243, 114, 115, 0, 0, 242, 242, -191, 0, 242, - -191, 0, 0, 0, 350, 351, 352, 353, 354, 355, - 356, 357, 358, 359, 360, 244, 0, 127, 128, 129, - 130, 131, 366, 241, 0, 245, 0, 0, 0, 0, - 243, 337, 0, 0, 0, 243, 0, 0, -191, -191, - -191, 0, 0, 0, 0, 0, 379, 380, 381, 382, - 243, 243, 0, 0, 243, 244, 242, 0, 0, 240, - 244, 240, 0, 0, 242, 245, 0, 0, 0, 0, - 245, 391, 0, 393, 395, 244, 244, 0, 0, 244, - 0, 0, 0, 0, 0, 245, 245, 0, 0, 245, - 0, 0, 0, 0, 0, 0, 0, 0, 34, 35, - 240, 37, 240, 240, 0, 0, 41, 42, 43, 44, - 0, 243, 0, 0, 202, 430, 0, 0, 0, 243, - 0, 0, 0, 240, 240, 0, 0, 0, 0, 241, - 0, 241, 0, 0, 0, 0, 244, 0, 0, 0, - 0, 0, -192, -192, 244, -192, 245, 0, 0, -192, - 0, 33, 0, 0, 245, 0, 16, 6, -192, 0, - 0, -192, 242, 0, 242, 0, 0, 0, 0, 0, - 241, 0, 337, 241, 0, 34, 35, 36, 37, 38, - 39, 40, 0, 41, 42, 43, 44, 45, 0, 0, - 0, 101, 102, 241, 241, 47, 0, 0, 0, -192, - -192, -192, 0, 242, 0, 242, 242, 0, 0, 0, - 0, 48, 49, -193, -193, 0, -193, 243, 0, 243, - -193, 0, 0, 0, 0, 0, 242, 242, 50, -193, - 0, 51, -193, 16, 6, 29, 52, 53, 54, 0, - 34, 35, 244, 37, 244, 0, 0, 0, 41, 42, - 43, 44, 245, 0, 245, 0, 202, 0, 243, 0, - 243, 243, 0, 0, 203, 204, 0, 0, 0, 0, - -193, -193, -193, 0, 0, 0, 0, 0, 0, 0, - 0, 243, 243, 244, 0, 244, 244, 0, 0, 0, - 0, 0, 0, 245, 0, 245, 245, 0, 16, 6, - 0, 0, 0, 0, 0, 0, 244, 244, 0, 0, - 183, 0, 0, 0, 0, 0, 245, 245, 184, 0, - 0, 185, 186, 187, 0, 188, 189, 190, 191, 0, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 34, - 35, 0, 37, 0, 0, 0, 0, 41, 42, 43, - 44, 0, 0, 143, 201, 202, 0, 0, 0, 0, - 0, 0, 183, 203, 204, 0, 0, 0, 0, 0, - 184, 0, 0, 185, 186, 187, 0, 188, 189, 190, - 191, 0, 192, 193, 194, 195, 196, 197, 198, 199, - 200, 34, 35, 0, 37, 0, 0, 16, 6, 41, - 42, 43, 44, 0, 0, 143, 291, 202, 0, 0, - 0, 0, 0, 0, 0, 203, 204, 262, 0, 0, - 0, 0, 0, 0, 184, 0, 0, 185, 186, 187, - 0, 188, 189, 190, 191, 0, 192, 193, 194, 195, - 196, 197, 198, 199, 200, 34, 35, 0, 37, 16, - 6, 0, 0, 41, 42, 43, 44, 0, 0, 143, - 0, 202, 0, 0, 0, 0, 0, 0, 0, 203, - 204, 326, 0, 0, 0, 0, 0, 0, 184, 0, - 0, 185, 186, 187, 0, 188, 189, 190, 191, 0, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 34, - 35, 33, 37, 16, 6, 0, 0, 41, 42, 43, - 44, 0, 0, 143, 0, 202, 0, 0, 0, 0, - 0, 0, 0, 203, 204, 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, 34, 35, 0, 37, 16, 6, 0, - 132, 48, 49, -194, -194, 33, -194, 0, 0, 133, - -194, 0, 134, 0, 0, 0, 0, 0, 50, -194, - 0, 51, -194, 16, 6, 29, 52, 53, 54, 34, - 35, 36, 37, 38, 39, 40, 0, 41, 42, 43, - 44, 45, 0, 0, 0, 46, 0, 0, 0, 47, - 135, 16, 6, 0, 0, 0, 0, 0, 0, 0, - -194, -194, -194, 0, 0, 48, 49, -195, -195, 33, - -195, 0, 0, 0, -195, 0, 0, 0, 0, 0, - 0, 0, 50, -195, 0, 51, -195, 16, 6, 29, - 52, 53, 54, 34, 35, 36, 37, 38, 39, 40, - 0, 41, 42, 43, 44, 45, 0, 0, 0, 101, - 0, 0, 0, 47, 0, 0, 0, 0, 298, 299, - 0, 300, 301, 0, -195, -195, -195, 0, 0, 48, - 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 34, 35, 0, 37, 0, 50, 0, 0, 51, - 0, 16, 6, 29, 52, 53, 54, 133, 0, 0, - 134, 0, 0, 0, 0, 302, 303, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 304, - 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 0, 0, 0, 0, 0, 0, 0, 0, 135, 16, - 6, 184, 0, 0, 185, 186, 187, 0, 188, 189, - 190, 191, 0, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 34, 35, 0, 37, 0, 0, 0, 0, - 41, 42, 43, 44, -196, -196, 143, -196, 202, 0, - 0, -196, -197, -197, 0, -197, 203, 204, 0, -197, - -196, 0, 0, -196, 0, 0, 0, 0, -197, 114, - 115, -197, 117, 118, 119, 120, 121, 122, 123, 0, + 16, 107, 144, 136, 337, 137, 31, 338, 26, 16, + 19, 20, 265, 339, 30, 269, 377, 272, 21, 6, + 1, 2, 3, 4, 5, 270, 33, 6, 95, 22, + 35, 36, 28, 38, 27, 96, 99, 6, 42, 43, + 44, 45, 97, 100, 378, 178, 204, 92, 108, 17, + 18, 35, 36, 29, 38, 239, 6, 107, 6, 42, + 43, 44, 45, 111, 112, -197, -197, 204, -197, 17, + 53, 101, -197, 138, 93, 205, 206, 140, 7, 94, + 139, -197, -189, -189, -197, -189, 6, 17, 53, -189, + 131, 132, 133, 330, 145, 98, 179, 239, -189, 262, + 113, -189, 239, -210, 156, 277, 142, 7, 17, 53, + 141, 30, -190, -190, 56, -190, 143, 289, 289, -190, + 146, 239, -197, -197, 149, 240, -191, -191, -190, -191, + 319, -190, 241, -191, 147, 156, 17, 53, 148, -189, + -189, 184, -191, 248, 150, -191, 337, 322, 251, 338, + 139, 254, 156, 371, 182, 339, 151, 380, 156, 152, + 381, 250, 156, 387, 253, 156, 389, 240, 156, -190, + -190, 156, 240, 136, 241, 137, 156, 413, 239, 241, + 278, 261, 156, -191, -191, 248, 289, 290, 290, 157, + 248, 240, 139, 140, 241, 241, 426, 139, 241, 427, + 393, 156, 395, 428, 156, 248, 248, 181, 156, 248, + 263, 268, 139, 139, 271, 273, 139, 57, 274, 275, + 276, 136, 136, 137, 137, 280, -192, -192, 286, -192, + 287, 116, 117, -192, 281, 282, 102, 285, 326, 109, + 110, 429, -192, 138, 432, -192, 295, 288, 240, 296, + 139, 297, 332, 320, 298, 241, 290, 129, 130, 131, + 132, 133, 299, 241, 442, 443, 248, 323, 334, 343, + 136, 112, 137, 139, 248, 341, 349, 328, 344, 350, + 351, 139, 352, -192, -192, 239, 179, 239, 400, 364, + 366, 138, 138, 155, 368, 370, 372, 374, 139, 139, + 346, 347, 376, 386, 388, 158, 159, 160, 161, 162, + 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, + 173, 174, 175, 176, 177, 242, 239, 390, 289, 239, + 401, 402, 414, 416, 365, 418, 249, 367, 419, 252, + 138, 434, 255, 420, 256, 422, 258, 139, 424, 239, + 239, 430, 435, 436, 437, 240, 439, 240, 440, 421, + 441, 423, 241, 425, 241, 23, 24, 242, 25, 294, + 0, 431, 242, 248, 279, 248, 267, 0, 399, 0, + 139, 0, 139, 0, 392, 0, 0, 242, 242, 284, + 0, 242, 0, 0, 0, 0, 240, 0, 290, 240, + 410, 0, 411, 241, 412, 241, 241, 129, 130, 131, + 132, 133, 0, 243, 248, 0, 248, 248, 0, 240, + 240, 139, 244, 139, 139, 0, 241, 241, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 248, 248, 0, + 0, 0, 0, 0, 139, 139, 0, 245, 242, 327, + 0, 0, 0, 0, 0, 243, 242, 0, 0, 0, + 243, 333, 0, 335, 244, 0, 342, 35, 36, 244, + 38, 0, 246, 0, 6, 291, 292, 0, 348, 243, + 0, 0, 0, 134, 244, 244, 135, 0, 244, 245, + 0, 0, 0, 0, 245, 0, 0, 353, 354, 355, + 356, 357, 358, 359, 360, 361, 362, 363, 0, 245, + 245, 0, 0, 245, 246, 369, 0, 0, 247, 246, + 0, 0, 0, 0, 17, 53, 0, 0, 0, 0, + -193, -193, 0, -193, 246, 246, 243, -193, 246, 382, + 383, 384, 385, 0, 340, 244, -193, 0, 0, -193, + 0, 0, 0, 244, 0, 242, 0, 242, 0, 0, + 247, 0, 0, 0, 394, 247, 396, 398, 0, 0, + 245, 0, 0, 0, 0, 0, 0, 0, 245, 0, + 247, 247, 0, 0, 247, 0, 0, -193, -193, 0, + 35, 36, 0, 38, 0, 246, 242, 6, 242, 242, + 0, 0, 0, 246, 0, 0, 134, 0, 433, 304, + 0, 0, 0, 0, 305, 306, 0, 0, 0, 242, + 242, 0, 0, 0, 0, 0, 0, 0, 307, 308, + 309, 310, 311, 312, 313, 314, 315, 316, 317, 0, + 0, 247, 0, 243, 0, 243, 0, 17, 53, 247, + 0, 0, 244, 0, 244, -194, -194, 0, -194, 0, + 0, 0, -194, 0, 0, 0, 0, 0, 0, 0, + 0, -194, 0, 0, -194, 0, 0, 245, 0, 245, + 0, 0, 0, 0, 243, 0, 340, 243, 0, 0, + 0, 0, 0, 244, 0, 244, 244, 0, 0, 0, + 34, 0, 246, 0, 246, 0, 0, 243, 243, 0, + 0, 0, -194, -194, 0, 0, 244, 244, 245, 0, + 245, 245, 0, 0, 35, 36, 37, 38, 39, 40, + 41, 6, 42, 43, 44, 45, 46, 0, 0, 0, + 47, 245, 245, 246, 48, 246, 246, 0, 247, 0, + 247, 0, -195, -195, 0, -195, 0, 0, 0, -195, + 49, 50, 0, 0, 0, 0, 246, 246, -195, 0, + 0, -195, 0, 0, 0, 0, 0, 51, 0, 0, + 52, 17, 53, 30, 54, 55, 56, 0, 0, 247, + 0, 247, 247, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 185, 0, 0, 0, 0, 0, -195, + -195, 186, 247, 247, 187, 188, 189, 0, 190, 191, + 192, 193, 0, 194, 195, 196, 197, 198, 199, 200, + 201, 202, 35, 36, 0, 38, 0, 0, 0, 6, + 42, 43, 44, 45, 0, 0, 143, 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, 35, 36, 0, 38, 0, 17, + 53, 6, 42, 43, 44, 45, 0, 0, 143, 293, + 204, 0, 0, 0, 0, 0, 0, 0, 205, 206, + 0, 0, 0, 0, 0, 0, -196, -196, 0, -196, + 0, 0, 0, -196, 0, 0, 0, 0, 0, 0, + 0, 0, -196, 264, 0, -196, 0, 0, 0, 0, + 186, 17, 53, 187, 188, 189, 0, 190, 191, 192, + 193, 0, 194, 195, 196, 197, 198, 199, 200, 201, + 202, 35, 36, 0, 38, 0, 0, 0, 6, 42, + 43, 44, 45, -196, -196, 143, 0, 204, 0, 0, + 0, 0, 0, 0, 0, 205, 206, 0, 0, 0, + 0, 0, 0, 35, 36, 0, 38, 0, 0, 0, + 6, 0, 0, 0, 0, 0, 0, 0, 0, 134, + 329, 0, 304, 0, 0, 0, 0, 186, 17, 53, + 187, 188, 189, 0, 190, 191, 192, 193, 0, 194, + 195, 196, 197, 198, 199, 200, 201, 202, 35, 36, + 34, 38, 0, 0, 0, 6, 42, 43, 44, 45, + 17, 53, 143, 0, 204, 0, 0, 0, 0, 0, + 0, 0, 205, 206, 35, 36, 37, 38, 39, 40, + 41, 6, 42, 43, 44, 45, 46, 325, 0, 0, + 103, 104, 115, 0, 48, 116, 117, 118, 119, 120, + 121, 122, 123, 124, 125, 17, 53, 0, 0, 0, + 49, 50, 0, 34, 0, 0, 0, 0, 126, 127, + 128, 129, 130, 131, 132, 133, 0, 51, 0, 0, + 52, 17, 53, 30, 54, 55, 56, 35, 36, 37, + 38, 39, 40, 41, 6, 42, 43, 44, 45, 46, + 0, 0, 0, 47, 116, 117, 0, 48, 0, 283, + 122, 123, 124, 125, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 49, 50, 0, 34, 0, 0, 0, + 129, 130, 131, 132, 133, 0, 0, 0, 0, 0, + 51, 0, 0, 52, 17, 53, 30, 54, 55, 56, + 35, 36, 37, 38, 39, 40, 41, 6, 42, 43, + 44, 45, 46, 0, 0, 0, 103, 0, 0, 0, + 48, 0, 0, 0, 300, 301, 0, 302, 303, 0, + 0, 0, 0, 0, 0, 0, 49, 50, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 35, 36, 0, + 38, 0, 0, 51, 6, 0, 52, 17, 53, 30, + 54, 55, 56, 134, 0, 0, 304, 0, 0, 0, + 0, 305, 306, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 307, 308, 309, 310, 311, + 312, 313, 314, 315, 316, 317, 0, 0, 0, 0, + 0, 0, 0, 186, 17, 53, 187, 188, 189, 0, + 190, 191, 192, 193, 0, 194, 195, 196, 197, 198, + 199, 200, 201, 202, 35, 36, 0, 38, 0, 0, + 0, 6, 42, 43, 44, 45, 0, 0, 143, 0, + 204, 0, 0, 0, 0, 0, 0, 153, 205, 206, + 0, 0, 154, 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, - 16, 6, 124, 125, 126, 127, 128, 129, 130, 131, - 0, -196, -196, -196, 0, 0, 0, 153, 0, -197, - -197, -197, 154, 0, 0, 0, 0, 113, 0, 0, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, + 0, 17, 53, 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, 0, 0, 126, 127, 128, + 129, 130, 131, 132, 133, 406, 0, 0, 0, 0, + 407, 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, 0, 0, 124, 125, 126, 127, 128, 129, 130, - 131, 401, 0, 0, 0, 0, 402, 0, 0, 0, - 0, 113, 0, 0, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 124, 125, 126, - 127, 128, 129, 130, 131, 403, 0, 0, 0, 0, - 404, 0, 0, 0, 0, 113, 0, 0, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 0, 0, + 0, 126, 127, 128, 129, 130, 131, 132, 133, 408, + 0, 0, 0, 0, 409, 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, 373, 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, 124, 125, 126, 127, 128, 129, 130, 131, 405, - 0, 0, 0, 0, 406, 0, 0, 0, 0, 113, - 0, 0, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 370, 0, 124, 125, 126, 127, 128, - 129, 130, 131, 113, 0, 0, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 372, 0, 124, - 125, 126, 127, 128, 129, 130, 131, 113, 0, 0, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, + 0, 379, 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, 391, 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, 403, + 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, 415, 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, 417, 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, 376, 0, 124, 125, 126, 127, 128, 129, 130, - 131, 113, 0, 0, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 388, 0, 124, 125, 126, - 127, 128, 129, 130, 131, 113, 0, 0, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 400, - 0, 124, 125, 126, 127, 128, 129, 130, 131, 113, - 0, 0, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 412, 0, 124, 125, 126, 127, 128, - 129, 130, 131, 113, 0, 0, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 414, 0, 124, - 125, 126, 127, 128, 129, 130, 131, 113, 0, 0, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, + 0, 438, 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, 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, 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, 324, 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, 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, 435, 0, 124, 125, 126, 127, 128, 129, 130, - 131, 113, 0, 0, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 124, 125, 126, - 127, 128, 129, 130, 131, 255, 0, 0, 0, 0, - 0, 113, 0, 0, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 124, 125, 126, - 127, 128, 129, 130, 131, 258, 0, 0, 0, 0, - 0, 113, 0, 0, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 124, 125, 126, - 127, 128, 129, 130, 131, 315, 0, 0, 0, 0, - 0, 113, 0, 0, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 124, 125, 126, - 127, 128, 129, 130, 131, 318, 0, 0, 0, 0, - 0, 113, 0, 0, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 124, 125, 126, - 127, 128, 129, 130, 131, 321, 0, 0, 0, 0, - 0, 113, 0, 0, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 124, 125, 126, - 127, 128, 129, 130, 131, 322, 0, 0, 0, 0, - 113, 0, 0, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 124, 125, 126, 127, - 128, 129, 130, 131, 257, 0, 113, 0, 0, 114, - 115, 116, 117, 118, 119, 120, 121, 122, 123, 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, 331, 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, 124, 125, 126, 127, 128, 129, 130, 131, - 112, 113, 0, 0, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 124, 125, 126, - 127, 128, 129, 130, 131, 328, 113, 0, 0, 114, - 115, 116, 117, 118, 119, 120, 121, 122, 123, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 124, 125, 126, 127, 128, 129, 130, 131, - 342, 113, 0, 0, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 113, 0, 0, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 0, 0, 0, 0, 0, - 124, 125, 126, 127, 128, 129, 130, 131, 114, 115, - 0, 0, 118, 119, 120, 121, 122, 123, 114, 115, - 0, 0, 118, 119, 120, 121, 122, 123, 0, 0, - 0, 124, 125, 126, 127, 128, 129, 130, 131, 0, - 0, 0, 125, 126, 127, 128, 129, 130, 131, 114, - 115, 0, 0, 118, 119, 120, 121, 122, 123, 114, - 115, 0, 0, 118, 119, 120, 121, 122, 123, 0, - 0, 0, 0, 125, 0, 127, 128, 129, 130, 131, - 0, 0, 0, 0, 0, 127, 128, 129, 130, 131, - 114, 115, 0, 0, 0, 0, 120, 121, 122, 123, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 127, 128, 129, 130, - 131 + 0, 0, 0, 126, 127, 128, 129, 130, 131, 132, + 133, 345, 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 }; const short parser::yycheck_[] = { - 0, 46, 91, 3, 4, 71, 272, 20, 8, 3, - 4, 71, 52, 272, 272, 11, 12, 13, 14, 15, - 56, 30, 56, 52, 52, 25, 0, 53, 183, 98, - 99, 60, 58, 188, 34, 35, 40, 41, 78, 43, - 34, 35, 40, 41, 93, 43, 62, 47, 53, 58, - 52, 100, 56, 58, 103, 59, 101, 143, 56, 62, - 62, 59, 98, 99, 98, 99, 64, 65, 53, 53, - 53, 71, 99, 58, 58, 58, 53, 71, 102, 103, - 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - 88, 53, 92, 97, 98, 99, 58, 183, 56, 97, - 98, 99, 188, 99, 60, 100, 53, 40, 41, 264, - 43, 58, 62, 99, 47, 53, 56, 203, 204, 52, - 58, 207, 54, 56, 53, 53, 59, 60, 53, 58, - 58, 143, 52, 58, 134, 53, 60, 143, 60, 53, - 58, 141, 52, 143, 58, 56, 58, 413, 148, 143, - 56, 151, 57, 140, 413, 413, 52, 94, 95, 96, - 147, 60, 52, 150, 97, 98, 99, 62, 52, 52, - 52, 183, 52, 52, 61, 241, 188, 183, 264, 179, - 193, 241, 188, 183, 62, 62, 272, 62, 188, 183, - 52, 203, 204, 52, 188, 207, 56, 203, 204, 62, - 52, 207, 52, 203, 204, 62, 62, 207, 62, 203, - 204, 62, 57, 207, 53, 370, 26, 372, 92, 93, - 94, 95, 96, 289, 290, 27, 61, 103, 61, 289, - 290, 57, 52, 52, 52, 45, 52, 62, 48, 49, - 57, 241, 57, 52, 52, 52, 52, 241, 62, 52, - 62, 62, 264, 25, 30, 53, 411, 62, 264, 414, - 272, 62, 62, 62, 264, 62, 272, 62, 53, 53, - 264, 337, 272, 273, 261, 53, 62, 337, 272, 434, - 435, 62, 62, 8, 370, 8, 372, 376, 8, 289, - 290, 101, 207, 413, -1, 289, 290, 284, 285, 193, - -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, + 0, 47, 93, 73, 274, 73, 21, 274, 52, 9, + 3, 4, 185, 274, 99, 52, 30, 190, 52, 47, + 11, 12, 13, 14, 15, 62, 26, 47, 56, 0, + 40, 41, 62, 43, 78, 35, 36, 47, 48, 49, + 50, 51, 35, 36, 58, 47, 56, 53, 48, 97, + 98, 40, 41, 62, 43, 143, 47, 103, 47, 48, + 49, 50, 51, 101, 102, 40, 41, 56, 43, 97, + 98, 56, 47, 73, 53, 64, 65, 52, 98, 58, + 73, 56, 40, 41, 59, 43, 47, 97, 98, 47, + 94, 95, 96, 266, 94, 56, 98, 185, 56, 53, + 98, 59, 190, 60, 58, 93, 62, 98, 97, 98, + 60, 99, 40, 41, 102, 43, 54, 205, 206, 47, + 56, 209, 97, 98, 56, 143, 40, 41, 56, 43, + 53, 59, 143, 47, 52, 58, 97, 98, 60, 97, + 98, 141, 56, 143, 52, 59, 416, 53, 148, 416, + 143, 151, 58, 53, 140, 416, 60, 53, 58, 56, + 53, 147, 58, 53, 150, 58, 53, 185, 58, 97, + 98, 58, 190, 243, 185, 243, 58, 53, 266, 190, + 195, 181, 58, 97, 98, 185, 274, 205, 206, 57, + 190, 209, 185, 52, 205, 206, 53, 190, 209, 53, + 373, 58, 375, 53, 58, 205, 206, 60, 58, 209, + 52, 62, 205, 206, 52, 52, 209, 27, 52, 52, + 52, 291, 292, 291, 292, 61, 40, 41, 52, 43, + 52, 66, 67, 47, 62, 62, 46, 62, 57, 49, + 50, 414, 56, 243, 417, 59, 62, 56, 266, 62, + 243, 62, 53, 52, 62, 266, 274, 92, 93, 94, + 95, 96, 62, 274, 437, 438, 266, 52, 27, 61, + 340, 102, 340, 266, 274, 275, 52, 263, 61, 52, + 52, 274, 52, 97, 98, 373, 98, 375, 379, 57, + 57, 291, 292, 103, 57, 52, 62, 52, 291, 292, + 286, 287, 62, 52, 52, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, - 130, 131, 143, 133, -1, 411, -1, 413, 414, -1, - 317, 40, 41, 320, 43, -1, 146, 337, 47, 149, - -1, -1, 152, 337, 154, -1, 156, 56, 434, 435, - 59, -1, -1, -1, -1, -1, -1, 402, 370, 404, - 372, 406, 183, -1, 370, -1, 372, 188, -1, -1, - 370, -1, 372, -1, 184, 375, 370, -1, 372, -1, - 367, -1, 203, 204, -1, -1, 207, 197, 97, 98, - 99, -1, 143, -1, -1, -1, 383, -1, 385, 411, - 387, 413, 414, -1, -1, 411, -1, 413, 414, -1, - -1, 411, -1, 413, 414, -1, -1, 411, -1, 413, - 414, -1, 434, 435, -1, 143, -1, -1, 434, 435, - -1, -1, 183, -1, 434, 435, -1, 188, -1, -1, - 434, 435, -1, 264, -1, -1, -1, 257, -1, -1, - -1, 272, 203, 204, -1, -1, 207, -1, -1, 269, - -1, 271, -1, -1, 274, 183, -1, -1, -1, -1, - 188, 40, 41, -1, 43, -1, 286, -1, 47, -1, - 143, 66, 67, -1, -1, 203, 204, 56, -1, 207, - 59, -1, -1, -1, 304, 305, 306, 307, 308, 309, - 310, 311, 312, 313, 314, 143, -1, 92, 93, 94, - 95, 96, 322, 264, -1, 143, -1, -1, -1, -1, - 183, 272, -1, -1, -1, 188, -1, -1, 97, 98, - 99, -1, -1, -1, -1, -1, 346, 347, 348, 349, - 203, 204, -1, -1, 207, 183, 264, -1, -1, 370, - 188, 372, -1, -1, 272, 183, -1, -1, -1, -1, - 188, 371, -1, 373, 374, 203, 204, -1, -1, 207, - -1, -1, -1, -1, -1, 203, 204, -1, -1, 207, - -1, -1, -1, -1, -1, -1, -1, -1, 40, 41, - 411, 43, 413, 414, -1, -1, 48, 49, 50, 51, - -1, 264, -1, -1, 56, 415, -1, -1, -1, 272, - -1, -1, -1, 434, 435, -1, -1, -1, -1, 370, - -1, 372, -1, -1, -1, -1, 264, -1, -1, -1, - -1, -1, 40, 41, 272, 43, 264, -1, -1, 47, - -1, 16, -1, -1, 272, -1, 98, 99, 56, -1, - -1, 59, 370, -1, 372, -1, -1, -1, -1, -1, - 411, -1, 413, 414, -1, 40, 41, 42, 43, 44, - 45, 46, -1, 48, 49, 50, 51, 52, -1, -1, - -1, 56, 57, 434, 435, 60, -1, -1, -1, 97, - 98, 99, -1, 411, -1, 413, 414, -1, -1, -1, - -1, 76, 77, 40, 41, -1, 43, 370, -1, 372, - 47, -1, -1, -1, -1, -1, 434, 435, 93, 56, - -1, 96, 59, 98, 99, 100, 101, 102, 103, -1, - 40, 41, 370, 43, 372, -1, -1, -1, 48, 49, - 50, 51, 370, -1, 372, -1, 56, -1, 411, -1, - 413, 414, -1, -1, 64, 65, -1, -1, -1, -1, - 97, 98, 99, -1, -1, -1, -1, -1, -1, -1, - -1, 434, 435, 411, -1, 413, 414, -1, -1, -1, - -1, -1, -1, 411, -1, 413, 414, -1, 98, 99, - -1, -1, -1, -1, -1, -1, 434, 435, -1, -1, - 11, -1, -1, -1, -1, -1, 434, 435, 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, -1, 43, -1, -1, 98, 99, 48, - 49, 50, 51, -1, -1, 54, 55, 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, -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, 16, 43, 98, 99, -1, -1, 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, -1, -1, - -1, 56, -1, -1, -1, 60, -1, 62, -1, -1, - -1, -1, -1, 40, 41, -1, 43, 98, 99, -1, - 47, 76, 77, 40, 41, 16, 43, -1, -1, 56, - 47, -1, 59, -1, -1, -1, -1, -1, 93, 56, - -1, 96, 59, 98, 99, 100, 101, 102, 103, 40, - 41, 42, 43, 44, 45, 46, -1, 48, 49, 50, - 51, 52, -1, -1, -1, 56, -1, -1, -1, 60, - 97, 98, 99, -1, -1, -1, -1, -1, -1, -1, - 97, 98, 99, -1, -1, 76, 77, 40, 41, 16, - 43, -1, -1, -1, 47, -1, -1, -1, -1, -1, - -1, -1, 93, 56, -1, 96, 59, 98, 99, 100, - 101, 102, 103, 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, 17, 18, - -1, 20, 21, -1, 97, 98, 99, -1, -1, 76, - 77, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 40, 41, -1, 43, -1, 93, -1, -1, 96, - -1, 98, 99, 100, 101, 102, 103, 56, -1, -1, - 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, - -1, -1, -1, -1, -1, -1, -1, -1, 97, 98, - 99, 19, -1, -1, 22, 23, 24, -1, 26, 27, + 130, 131, 132, 133, 134, 143, 414, 52, 416, 417, + 62, 62, 25, 62, 320, 30, 146, 323, 62, 149, + 340, 53, 152, 62, 154, 62, 156, 340, 62, 437, + 438, 62, 53, 53, 53, 373, 62, 375, 62, 405, + 62, 407, 373, 409, 375, 9, 9, 185, 9, 209, + -1, 416, 190, 373, 195, 375, 186, -1, 378, -1, + 373, -1, 375, -1, 370, -1, -1, 205, 206, 199, + -1, 209, -1, -1, -1, -1, 414, -1, 416, 417, + 386, -1, 388, 414, 390, 416, 417, 92, 93, 94, + 95, 96, -1, 143, 414, -1, 416, 417, -1, 437, + 438, 414, 143, 416, 417, -1, 437, 438, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 437, 438, -1, + -1, -1, -1, -1, 437, 438, -1, 143, 266, 259, + -1, -1, -1, -1, -1, 185, 274, -1, -1, -1, + 190, 271, -1, 273, 185, -1, 276, 40, 41, 190, + 43, -1, 143, -1, 47, 205, 206, -1, 288, 209, + -1, -1, -1, 56, 205, 206, 59, -1, 209, 185, + -1, -1, -1, -1, 190, -1, -1, 307, 308, 309, + 310, 311, 312, 313, 314, 315, 316, 317, -1, 205, + 206, -1, -1, 209, 185, 325, -1, -1, 143, 190, + -1, -1, -1, -1, 97, 98, -1, -1, -1, -1, + 40, 41, -1, 43, 205, 206, 266, 47, 209, 349, + 350, 351, 352, -1, 274, 266, 56, -1, -1, 59, + -1, -1, -1, 274, -1, 373, -1, 375, -1, -1, + 185, -1, -1, -1, 374, 190, 376, 377, -1, -1, + 266, -1, -1, -1, -1, -1, -1, -1, 274, -1, + 205, 206, -1, -1, 209, -1, -1, 97, 98, -1, + 40, 41, -1, 43, -1, 266, 414, 47, 416, 417, + -1, -1, -1, 274, -1, -1, 56, -1, 418, 59, + -1, -1, -1, -1, 64, 65, -1, -1, -1, 437, + 438, -1, -1, -1, -1, -1, -1, -1, 78, 79, + 80, 81, 82, 83, 84, 85, 86, 87, 88, -1, + -1, 266, -1, 373, -1, 375, -1, 97, 98, 274, + -1, -1, 373, -1, 375, 40, 41, -1, 43, -1, + -1, -1, 47, -1, -1, -1, -1, -1, -1, -1, + -1, 56, -1, -1, 59, -1, -1, 373, -1, 375, + -1, -1, -1, -1, 414, -1, 416, 417, -1, -1, + -1, -1, -1, 414, -1, 416, 417, -1, -1, -1, + 16, -1, 373, -1, 375, -1, -1, 437, 438, -1, + -1, -1, 97, 98, -1, -1, 437, 438, 414, -1, + 416, 417, -1, -1, 40, 41, 42, 43, 44, 45, + 46, 47, 48, 49, 50, 51, 52, -1, -1, -1, + 56, 437, 438, 414, 60, 416, 417, -1, 373, -1, + 375, -1, 40, 41, -1, 43, -1, -1, -1, 47, + 76, 77, -1, -1, -1, -1, 437, 438, 56, -1, + -1, 59, -1, -1, -1, -1, -1, 93, -1, -1, + 96, 97, 98, 99, 100, 101, 102, -1, -1, 414, + -1, 416, 417, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 11, -1, -1, -1, -1, -1, 97, + 98, 19, 437, 438, 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, 40, 41, 54, 43, 56, -1, - -1, 47, 40, 41, -1, 43, 64, 65, -1, 47, - 56, -1, -1, 59, -1, -1, -1, -1, 56, 66, - 67, 59, 69, 70, 71, 72, 73, 74, 75, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 98, 99, 89, 90, 91, 92, 93, 94, 95, 96, - -1, 97, 98, 99, -1, -1, -1, 53, -1, 97, - 98, 99, 58, -1, -1, -1, -1, 63, -1, -1, + 38, 39, 40, 41, -1, 43, -1, -1, -1, 47, + 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, -1, 43, -1, 97, + 98, 47, 48, 49, 50, 51, -1, -1, 54, 55, + 56, -1, -1, -1, -1, -1, -1, -1, 64, 65, + -1, -1, -1, -1, -1, -1, 40, 41, -1, 43, + -1, -1, -1, 47, -1, -1, -1, -1, -1, -1, + -1, -1, 56, 12, -1, 59, -1, -1, -1, -1, + 19, 97, 98, 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, 47, 48, + 49, 50, 51, 97, 98, 54, -1, 56, -1, -1, + -1, -1, -1, -1, -1, 64, 65, -1, -1, -1, + -1, -1, -1, 40, 41, -1, 43, -1, -1, -1, + 47, -1, -1, -1, -1, -1, -1, -1, -1, 56, + 12, -1, 59, -1, -1, -1, -1, 19, 97, 98, + 22, 23, 24, -1, 26, 27, 28, 29, -1, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, + 16, 43, -1, -1, -1, 47, 48, 49, 50, 51, + 97, 98, 54, -1, 56, -1, -1, -1, -1, -1, + -1, -1, 64, 65, 40, 41, 42, 43, 44, 45, + 46, 47, 48, 49, 50, 51, 52, 58, -1, -1, + 56, 57, 63, -1, 60, 66, 67, 68, 69, 70, + 71, 72, 73, 74, 75, 97, 98, -1, -1, -1, + 76, 77, -1, 16, -1, -1, -1, -1, 89, 90, + 91, 92, 93, 94, 95, 96, -1, 93, -1, -1, + 96, 97, 98, 99, 100, 101, 102, 40, 41, 42, + 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, + -1, -1, -1, 56, 66, 67, -1, 60, -1, 62, + 72, 73, 74, 75, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 76, 77, -1, 16, -1, -1, -1, + 92, 93, 94, 95, 96, -1, -1, -1, -1, -1, + 93, -1, -1, 96, 97, 98, 99, 100, 101, 102, + 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, + 50, 51, 52, -1, -1, -1, 56, -1, -1, -1, + 60, -1, -1, -1, 17, 18, -1, 20, 21, -1, + -1, -1, -1, -1, -1, -1, 76, 77, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 40, 41, -1, + 43, -1, -1, 93, 47, -1, 96, 97, 98, 99, + 100, 101, 102, 56, -1, -1, 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, -1, -1, -1, -1, + -1, -1, -1, 19, 97, 98, 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, 47, 48, 49, 50, 51, -1, -1, 54, -1, + 56, -1, -1, -1, -1, -1, -1, 53, 64, 65, + -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, + -1, 97, 98, 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, @@ -4343,88 +4344,84 @@ namespace xsk { namespace gsc { namespace h2 { -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, + 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, 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, -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, -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, -1, 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, -1, 90, 91, 92, 93, 94, 95, 96, 66, - 67, -1, -1, 70, 71, 72, 73, 74, 75, 66, + -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, -1, 90, -1, 92, 93, 94, 95, 96, - -1, -1, -1, -1, -1, 92, 93, 94, 95, 96, - 66, 67, -1, -1, -1, -1, 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 + -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 }; const unsigned char parser::yystos_[] = { - 0, 11, 12, 13, 14, 15, 99, 114, 115, 116, - 117, 118, 119, 120, 121, 186, 98, 186, 187, 187, - 52, 0, 116, 117, 118, 52, 78, 62, 62, 100, - 189, 168, 186, 16, 40, 41, 42, 43, 44, 45, - 46, 48, 49, 50, 51, 52, 56, 60, 76, 77, - 93, 96, 101, 102, 103, 153, 158, 159, 160, 161, - 162, 163, 164, 165, 166, 167, 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, 186, 187, 56, 186, 187, 56, - 153, 56, 57, 153, 169, 170, 186, 153, 153, 102, - 103, 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, 165, 166, 186, 187, - 52, 60, 62, 54, 127, 186, 56, 52, 60, 56, + 0, 11, 12, 13, 14, 15, 47, 98, 114, 115, + 116, 117, 118, 119, 120, 121, 187, 97, 98, 188, + 188, 52, 0, 116, 117, 118, 52, 78, 62, 62, + 99, 190, 168, 187, 16, 40, 41, 42, 43, 44, + 45, 46, 48, 49, 50, 51, 52, 56, 60, 76, + 77, 93, 96, 98, 100, 101, 102, 153, 158, 159, + 160, 161, 162, 163, 164, 165, 166, 167, 171, 172, + 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, + 183, 184, 185, 187, 188, 189, 190, 191, 192, 193, + 194, 195, 53, 53, 58, 56, 187, 188, 56, 187, + 188, 56, 153, 56, 57, 153, 169, 170, 187, 153, + 153, 101, 102, 98, 62, 63, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 75, 89, 90, 91, 92, + 93, 94, 95, 96, 56, 59, 165, 166, 187, 188, + 52, 60, 62, 54, 127, 187, 56, 52, 60, 56, 52, 60, 56, 53, 58, 153, 58, 57, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, - 153, 153, 153, 153, 153, 153, 153, 153, 186, 60, - 169, 170, 186, 11, 19, 22, 23, 24, 26, 27, - 28, 29, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 55, 56, 64, 65, 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, 152, 155, 156, 157, 163, 164, 172, - 173, 176, 180, 181, 182, 183, 186, 153, 169, 186, - 153, 169, 186, 153, 153, 57, 153, 61, 57, 186, - 53, 52, 12, 122, 124, 153, 62, 52, 62, 52, - 122, 52, 52, 52, 52, 93, 189, 192, 61, 62, - 62, 62, 153, 62, 52, 52, 56, 163, 164, 176, - 176, 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, 153, 169, 12, 122, 62, 53, - 153, 27, 153, 128, 155, 156, 157, 176, 186, 153, - 61, 61, 62, 169, 169, 153, 52, 52, 52, 52, - 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, - 153, 57, 169, 57, 169, 57, 153, 52, 53, 62, - 53, 52, 53, 62, 30, 58, 53, 53, 53, 153, - 153, 153, 153, 52, 53, 52, 53, 52, 53, 169, - 122, 153, 122, 153, 154, 153, 186, 127, 62, 62, - 53, 53, 58, 53, 58, 53, 58, 169, 169, 169, - 53, 25, 53, 62, 53, 30, 62, 62, 170, 62, - 170, 62, 170, 53, 53, 53, 122, 62, 128, 122, - 153, 53, 53, 53, 53, 53, 62, 62, 62, 122, - 122 + 153, 153, 153, 153, 153, 153, 153, 153, 47, 98, + 186, 60, 169, 170, 187, 11, 19, 22, 23, 24, + 26, 27, 28, 29, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 55, 56, 64, 65, 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, 152, 155, 156, 157, 163, + 164, 172, 173, 176, 180, 181, 182, 183, 187, 153, + 169, 187, 153, 169, 187, 153, 153, 57, 153, 61, + 57, 187, 53, 52, 12, 122, 124, 153, 62, 52, + 62, 52, 122, 52, 52, 52, 52, 93, 190, 193, + 61, 62, 62, 62, 153, 62, 52, 52, 56, 163, + 164, 176, 176, 55, 123, 62, 62, 62, 62, 62, + 17, 18, 20, 21, 59, 64, 65, 78, 79, 80, + 81, 82, 83, 84, 85, 86, 87, 88, 57, 53, + 52, 57, 53, 52, 57, 58, 57, 153, 169, 12, + 122, 62, 53, 153, 27, 153, 128, 155, 156, 157, + 176, 187, 153, 61, 61, 62, 169, 169, 153, 52, + 52, 52, 52, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 57, 169, 57, 169, 57, 153, + 52, 53, 62, 53, 52, 53, 62, 30, 58, 53, + 53, 53, 153, 153, 153, 153, 52, 53, 52, 53, + 52, 53, 169, 122, 153, 122, 153, 154, 153, 187, + 127, 62, 62, 53, 53, 58, 53, 58, 53, 58, + 169, 169, 169, 53, 25, 53, 62, 53, 30, 62, + 62, 170, 62, 170, 62, 170, 53, 53, 53, 122, + 62, 128, 122, 153, 53, 53, 53, 53, 53, 62, + 62, 62, 122, 122 }; const unsigned char @@ -4448,10 +4445,11 @@ namespace xsk { namespace gsc { namespace h2 { 160, 160, 160, 160, 160, 160, 160, 160, 160, 161, 162, 163, 163, 164, 164, 165, 165, 165, 165, 165, 165, 166, 166, 166, 166, 167, 168, 168, 168, 169, - 169, 170, 170, 171, 171, 172, 173, 173, 174, 175, - 176, 176, 176, 176, 176, 176, 176, 176, 176, 177, - 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, - 187, 188, 189, 190, 191, 191, 192, 192, 193, 194 + 169, 170, 170, 171, 171, 172, 173, 174, 175, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 177, 178, + 179, 180, 181, 182, 183, 184, 185, 186, 187, 187, + 188, 188, 189, 190, 191, 192, 192, 193, 193, 194, + 195 }; const signed char @@ -4475,10 +4473,11 @@ namespace xsk { namespace gsc { namespace h2 { 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, 7, 2, 1, 2, 1, 1, 1 + 0, 3, 1, 2, 3, 4, 3, 3, 3, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, + 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, + 1, 1, 1, 1, 7, 2, 1, 2, 1, 1, + 1 }; @@ -4488,28 +4487,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, 334, 335, 339, 341, 346, - 348, 353, 354, 358, 359, 363, 365, 367, 370, 374, - 376, 381, 383, 385, 390, 395, 397, 402, 407, 409, - 414, 416, 421, 426, 428, 433, 438, 443, 448, 453, - 458, 460, 465, 470, 472, 477, 482, 487, 492, 494, - 499, 504, 509, 514, 515, 516, 520, 521, 525, 527, - 529, 531, 533, 535, 537, 539, 541, 543, 545, 550, - 552, 557, 559, 564, 569, 571, 573, 575, 577, 579, - 581, 583, 585, 587, 589, 591, 593, 595, 597, 599, - 601, 603, 608, 609, 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, 638, - 643, 648, 649, 652, 653, 657, 659, 661, 663, 665, - 667, 672, 674, 676, 678, 683, 688, 690, 693, 697, - 700, 704, 706, 711, 713, 718, 723, 725, 730, 735, - 740, 741, 742, 743, 744, 745, 746, 747, 748, 752, - 757, 762, 767, 772, 777, 782, 787, 792, 797, 802, - 804, 809, 814, 819, 824, 826, 831, 833, 838, 843 + 0, 255, 255, 256, 260, 262, 264, 266, 268, 270, + 275, 279, 284, 285, 286, 287, 288, 292, 297, 302, + 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, 342, 347, + 349, 354, 355, 359, 360, 364, 366, 368, 371, 375, + 377, 382, 384, 386, 391, 396, 398, 403, 408, 410, + 415, 417, 422, 427, 429, 434, 439, 444, 449, 454, + 459, 461, 466, 471, 473, 478, 483, 488, 493, 495, + 500, 505, 510, 515, 516, 517, 521, 522, 526, 528, + 530, 532, 534, 536, 538, 540, 542, 544, 546, 551, + 553, 558, 560, 565, 570, 572, 574, 576, 578, 580, + 582, 584, 586, 588, 590, 592, 594, 596, 598, 600, + 602, 604, 609, 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, 639, + 644, 649, 650, 653, 654, 658, 660, 662, 664, 666, + 668, 673, 675, 677, 679, 684, 689, 691, 694, 698, + 701, 705, 707, 712, 714, 719, 724, 729, 734, 739, + 740, 741, 742, 743, 744, 745, 746, 747, 751, 756, + 761, 766, 771, 776, 781, 786, 791, 796, 801, 803, + 808, 810, 815, 820, 825, 830, 832, 837, 839, 844, + 849 }; void @@ -4544,7 +4544,7 @@ namespace xsk { namespace gsc { namespace h2 { } } } // xsk::gsc::h2 #line 4546 "parser.cpp" -#line 847 "parser.ypp" +#line 853 "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 c0c7d79e..3aa334be 100644 --- a/src/h2/xsk/parser.hpp +++ b/src/h2/xsk/parser.hpp @@ -474,6 +474,7 @@ namespace xsk { namespace gsc { namespace h2 { // expr_game char dummy19[sizeof (ast::expr_game::ptr)]; + // expr_identifier_nosize // expr_identifier char dummy20[sizeof (ast::expr_identifier::ptr)]; @@ -618,7 +619,6 @@ namespace xsk { namespace gsc { namespace h2 { // stmt_while char dummy66[sizeof (ast::stmt_while::ptr)]; - // "field" // "path" // "identifier" // "string literal" @@ -721,7 +721,7 @@ namespace xsk { namespace gsc { namespace h2 { TRUE = 44, // "true" FALSE = 45, // "false" UNDEFINED = 46, // "undefined" - SIZE = 47, // ".size" + SIZE = 47, // "size" GAME = 48, // "game" SELF = 49, // "self" ANIM = 50, // "anim" @@ -771,13 +771,13 @@ namespace xsk { namespace gsc { namespace h2 { MUL = 94, // "*" DIV = 95, // "/" MOD = 96, // "%" - FIELD = 97, // "field" - PATH = 98, // "path" - IDENTIFIER = 99, // "identifier" - STRING = 100, // "string literal" - ISTRING = 101, // "localized string" - FLOAT = 102, // "float" - INTEGER = 103, // "integer" + PATH = 97, // "path" + IDENTIFIER = 98, // "identifier" + STRING = 99, // "string literal" + ISTRING = 100, // "localized string" + FLOAT = 101, // "float" + INTEGER = 102, // "integer" + SIZEOF = 103, // SIZEOF ADD_ARRAY = 104, // ADD_ARRAY THEN = 105, // THEN TERN = 106, // TERN @@ -852,7 +852,7 @@ namespace xsk { namespace gsc { namespace h2 { S_TRUE = 44, // "true" S_FALSE = 45, // "false" S_UNDEFINED = 46, // "undefined" - S_SIZE = 47, // ".size" + S_SIZE = 47, // "size" S_GAME = 48, // "game" S_SELF = 49, // "self" S_ANIM = 50, // "anim" @@ -902,13 +902,13 @@ namespace xsk { namespace gsc { namespace h2 { S_MUL = 94, // "*" S_DIV = 95, // "/" S_MOD = 96, // "%" - S_FIELD = 97, // "field" - S_PATH = 98, // "path" - S_IDENTIFIER = 99, // "identifier" - S_STRING = 100, // "string literal" - S_ISTRING = 101, // "localized string" - S_FLOAT = 102, // "float" - S_INTEGER = 103, // "integer" + S_PATH = 97, // "path" + S_IDENTIFIER = 98, // "identifier" + S_STRING = 99, // "string literal" + S_ISTRING = 100, // "localized string" + S_FLOAT = 101, // "float" + S_INTEGER = 102, // "integer" + S_SIZEOF = 103, // SIZEOF S_ADD_ARRAY = 104, // ADD_ARRAY S_THEN = 105, // THEN S_TERN = 106, // TERN @@ -991,15 +991,16 @@ namespace xsk { namespace gsc { namespace h2 { S_expr_level = 183, // expr_level S_expr_animation = 184, // expr_animation S_expr_animtree = 185, // expr_animtree - S_expr_identifier = 186, // expr_identifier - S_expr_path = 187, // expr_path - S_expr_istring = 188, // expr_istring - S_expr_string = 189, // expr_string - 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_expr_identifier_nosize = 186, // expr_identifier_nosize + 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_vector = 191, // expr_vector + S_expr_float = 192, // expr_float + S_expr_integer = 193, // expr_integer + S_expr_false = 194, // expr_false + S_expr_true = 195 // expr_true }; }; @@ -1122,6 +1123,7 @@ namespace xsk { namespace gsc { namespace h2 { value.move< ast::expr_game::ptr > (std::move (that.value)); break; + case symbol_kind::S_expr_identifier_nosize: // expr_identifier_nosize case symbol_kind::S_expr_identifier: // expr_identifier value.move< ast::expr_identifier::ptr > (std::move (that.value)); break; @@ -1313,7 +1315,6 @@ namespace xsk { namespace gsc { namespace h2 { value.move< ast::stmt_while::ptr > (std::move (that.value)); break; - case symbol_kind::S_FIELD: // "field" case symbol_kind::S_PATH: // "path" case symbol_kind::S_IDENTIFIER: // "identifier" case symbol_kind::S_STRING: // "string literal" @@ -2392,6 +2393,7 @@ switch (yykind) value.template destroy< ast::expr_game::ptr > (); break; + case symbol_kind::S_expr_identifier_nosize: // expr_identifier_nosize case symbol_kind::S_expr_identifier: // expr_identifier value.template destroy< ast::expr_identifier::ptr > (); break; @@ -2583,7 +2585,6 @@ switch (yykind) value.template destroy< ast::stmt_while::ptr > (); break; - case symbol_kind::S_FIELD: // "field" case symbol_kind::S_PATH: // "path" case symbol_kind::S_IDENTIFIER: // "identifier" case symbol_kind::S_STRING: // "string literal" @@ -2689,7 +2690,7 @@ switch (yykind) { H2_ASSERT (tok == token::H2EOF || (token::H2error <= tok && tok <= token::MOD) - || (token::ADD_ARRAY <= tok && tok <= token::POSTDEC)); + || (token::SIZEOF <= tok && tok <= token::POSTDEC)); } #if 201103L <= YY_CPLUSPLUS symbol_type (int tok, std::string v, location_type l) @@ -2699,7 +2700,7 @@ switch (yykind) : super_type(token_type (tok), v, l) #endif { - H2_ASSERT ((token::FIELD <= tok && tok <= token::INTEGER)); + H2_ASSERT ((token::PATH <= tok && tok <= token::INTEGER)); } }; @@ -4204,21 +4205,6 @@ switch (yykind) return symbol_type (token::MOD, l); } #endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_FIELD (std::string v, location_type l) - { - return symbol_type (token::FIELD, std::move (v), std::move (l)); - } -#else - static - symbol_type - make_FIELD (const std::string& v, const location_type& l) - { - return symbol_type (token::FIELD, v, l); - } -#endif #if 201103L <= YY_CPLUSPLUS static symbol_type @@ -4309,6 +4295,21 @@ switch (yykind) return symbol_type (token::INTEGER, v, l); } #endif +#if 201103L <= YY_CPLUSPLUS + static + symbol_type + make_SIZEOF (location_type l) + { + return symbol_type (token::SIZEOF, std::move (l)); + } +#else + static + symbol_type + make_SIZEOF (const location_type& l) + { + return symbol_type (token::SIZEOF, l); + } +#endif #if 201103L <= YY_CPLUSPLUS static symbol_type @@ -4788,9 +4789,9 @@ switch (yykind) /// Constants. enum { - yylast_ = 2300, ///< Last index in yytable_. - yynnts_ = 82, ///< Number of nonterminal symbols. - yyfinal_ = 21 ///< Termination state number. + yylast_ = 2251, ///< Last index in yytable_. + yynnts_ = 83, ///< Number of nonterminal symbols. + yyfinal_ = 22 ///< Termination state number. }; @@ -4902,6 +4903,7 @@ switch (yykind) value.copy< ast::expr_game::ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_expr_identifier_nosize: // expr_identifier_nosize case symbol_kind::S_expr_identifier: // expr_identifier value.copy< ast::expr_identifier::ptr > (YY_MOVE (that.value)); break; @@ -5093,7 +5095,6 @@ switch (yykind) value.copy< ast::stmt_while::ptr > (YY_MOVE (that.value)); break; - case symbol_kind::S_FIELD: // "field" case symbol_kind::S_PATH: // "path" case symbol_kind::S_IDENTIFIER: // "identifier" case symbol_kind::S_STRING: // "string literal" @@ -5218,6 +5219,7 @@ switch (yykind) value.move< ast::expr_game::ptr > (YY_MOVE (s.value)); break; + case symbol_kind::S_expr_identifier_nosize: // expr_identifier_nosize case symbol_kind::S_expr_identifier: // expr_identifier value.move< ast::expr_identifier::ptr > (YY_MOVE (s.value)); break; @@ -5409,7 +5411,6 @@ switch (yykind) value.move< ast::stmt_while::ptr > (YY_MOVE (s.value)); break; - case symbol_kind::S_FIELD: // "field" case symbol_kind::S_PATH: // "path" case symbol_kind::S_IDENTIFIER: // "identifier" case symbol_kind::S_STRING: // "string literal" @@ -5482,7 +5483,7 @@ switch (yykind) #line 13 "parser.ypp" } } } // xsk::gsc::h2 -#line 5486 "parser.hpp" +#line 5487 "parser.hpp" diff --git a/src/iw5/xsk/lexer.cpp b/src/iw5/xsk/lexer.cpp index 5a55c5e9..3131cb7f 100644 --- a/src/iw5/xsk/lexer.cpp +++ b/src/iw5/xsk/lexer.cpp @@ -59,6 +59,7 @@ const std::unordered_map keywo { "true", parser::token::TRUE }, { "false", parser::token::FALSE }, { "undefined", parser::token::UNDEFINED }, + { "size", parser::token::SIZE }, { "game", parser::token::GAME }, { "self", parser::token::SELF }, { "anim", parser::token::ANIM }, @@ -84,8 +85,8 @@ bool buffer::push(char c) return true; } -reader::reader() : state(reader::end), buffer_pos(0), bytes_remaining(0), - last_byte(0), current_byte(0) { } +reader::reader() : state(reader::end), buffer_pos(0), + bytes_remaining(0), last_byte(0), current_byte(0) {} void reader::init(const char* data, size_t size) { @@ -173,7 +174,6 @@ auto lexer::lex() -> parser::symbol_type { buffer_.length = 0; state_ = state::start; - loc_.step(); while (true) { @@ -181,6 +181,7 @@ auto lexer::lex() -> parser::symbol_type auto& last = reader_.last_byte; auto& curr = reader_.current_byte; auto path = false; + loc_.step(); if (state == reader::end) { @@ -213,7 +214,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 != '*' && curr != '/') return parser::make_DIV(loc_); advance(); @@ -245,14 +246,35 @@ auto lexer::lex() -> parser::symbol_type } else if (last == '#' && curr == '/') { - reader_.advance(); + advance(); break; } - reader_.advance(); + advance(); } } } + else if (last == '@') + { + while (true) + { + if (state == reader::end) + throw comp_error(loc_, "unmatched script doc comment start ('/@')"); + + if (curr == '\n') + { + loc_.lines(); + loc_.step(); + } + else if (last == '@' && curr == '/') + { + advance(); + break; + } + + advance(); + } + } else if (last == '*') { while (true) @@ -267,11 +289,11 @@ auto lexer::lex() -> parser::symbol_type } else if (last == '*' && curr == '/') { - reader_.advance(); + advance(); break; } - reader_.advance(); + advance(); } } else if (last == '/') @@ -281,30 +303,10 @@ auto lexer::lex() -> parser::symbol_type if (state == reader::end) break; - if (last == '\\' && (curr == '\r' || curr == '\n')) - { - reader_.advance(); - - if (state == reader::end) - break; - - if (last == '\r') - { - if (curr != '\n') - throw comp_error(loc_, "invalid token ('\')"); - - reader_.advance(); - } - - loc_.lines(); - loc_.step(); - continue; - } - if (curr == '\n') break; - reader_.advance(); + advance(); } } continue; @@ -314,8 +316,8 @@ auto lexer::lex() -> parser::symbol_type if (!indev_) throw comp_error(loc_, "unmatched devblock end ('#/')"); - indev_ = false; advance(); + indev_ = false; return parser::make_DEVEND(loc_); } @@ -336,7 +338,7 @@ auto lexer::lex() -> parser::symbol_type state_ = state::preprocessor; goto lex_name; case '*': - if (curr != '/' && curr != '=') + if (curr != '=' && curr != '/') return parser::make_MUL(loc_); advance(); @@ -349,13 +351,9 @@ auto lexer::lex() -> parser::symbol_type state_ = state::string; goto lex_string; case '.': - advance(); - - if (state == reader::end) - throw comp_error(loc_, "unterminated field ('.')"); - - state_ = state::field; - goto lex_name_or_number; + if (curr < '0' || curr > '9') + return parser::make_DOT(loc_); + goto lex_number; case '(': return parser::make_LPAREN(loc_); case ')': @@ -479,7 +477,6 @@ auto lexer::lex() -> parser::symbol_type advance(); return parser::make_ASSIGN_RSHIFT(loc_); default: -lex_name_or_number: if (last >= '0' && last <= '9') goto lex_number; else if (last == '_' || last >= 'A' && last <= 'Z' || last >= 'a' && last <= 'z') @@ -561,23 +558,8 @@ lex_name: advance(); } - if (state_ == state::field) + if (state_ == state::preprocessor) { - if (path) - throw comp_error(loc_, "invalid field token '\\'"); - - if (std::string_view(buffer_.data, buffer_.length) == "size") - { - return parser::make_SIZE(loc_); - } - - return parser::make_FIELD(std::string(buffer_.data, buffer_.length), loc_); - } - else if (state_ == state::preprocessor) - { - if (path) - throw comp_error(loc_, "invalid preprocessor directive"); - auto token = parser::token::IW5UNDEF; if (buffer_.length < 16) @@ -593,7 +575,8 @@ lex_name: } } - preprocessor(token); + preprocessor_run(token); + state_ = state::start; continue; } @@ -619,14 +602,11 @@ lex_name: } lex_number: - if (state_ == state::field) - buffer_.push('.'); - - if (state_ == state::field || last == '.' || last != '0' || (last == '0' && (curr != 'o' && curr != 'b' && curr != 'x'))) + if (last == '.' || last != '0' || (last == '0' && (curr != 'o' && curr != 'b' && curr != 'x'))) { buffer_.push(last); - auto dot = 0; + auto dot = last == '.' ? 1 : 0; auto flt = 0; while (true) @@ -662,10 +642,10 @@ lex_number: if (last == '\'') throw comp_error(loc_, "invalid number literal"); - if (state_ == state::field && dot || dot > 1 || flt > 1 || flt && buffer_.data[buffer_.length - 1] != 'f') + if (dot > 1 || flt > 1 || flt && buffer_.data[buffer_.length - 1] != 'f') throw comp_error(loc_, "invalid number literal"); - if (state_ == state::field || dot || flt) + if (dot || flt) return parser::make_FLOAT(std::string(buffer_.data, buffer_.length), loc_); return parser::make_INTEGER(std::string(buffer_.data, buffer_.length), loc_); @@ -680,7 +660,7 @@ lex_number: break; if (curr == '\'' && (last == '\'' || last == 'o') || (curr == 'o' && last == '\'')) - throw comp_error(loc_, "invalid octal literal"); + throw comp_error(loc_, "invalid octal literal"); if (curr == '\'') { @@ -770,18 +750,22 @@ lex_number: return parser::make_INTEGER(xsk::utils::string::hex_to_dec(buffer_.data), loc_); } - // cant get here! + + throw error("UNEXPECTED LEXER INTERNAL ERROR!"); } } void lexer::advance() { reader_.advance(); + loc_.end.column++; - // dont wrap comment marks '/\/' '/\*' outside strings - if (state_ == state::start && reader_.last_byte == '/') - return; + if (reader_.current_byte == '\\') [[unlikely]] + preprocessor_wrap(); +} +void lexer::preprocessor_wrap() +{ while (reader_.current_byte == '\\') { if (reader_.bytes_remaining == 1) @@ -823,7 +807,7 @@ void lexer::advance() } } -void lexer::preprocessor(parser::token::token_kind_type token) +void lexer::preprocessor_run(parser::token::token_kind_type token) { if (!clean_) throw comp_error(loc_, "invalid token ('#')"); diff --git a/src/iw5/xsk/lexer.hpp b/src/iw5/xsk/lexer.hpp index 16a47d33..4470c73f 100644 --- a/src/iw5/xsk/lexer.hpp +++ b/src/iw5/xsk/lexer.hpp @@ -44,7 +44,7 @@ struct reader class lexer { - enum class state : std::uint8_t { start, string, localize, field, preprocessor }; + enum class state : std::uint8_t { start, string, localize, preprocessor }; reader reader_; buffer buffer_; @@ -66,7 +66,8 @@ public: private: void advance(); - void preprocessor(parser::token::token_kind_type token); + void preprocessor_wrap(); + void preprocessor_run(parser::token::token_kind_type token); }; } // namespace xsk::gsc::iw5 diff --git a/src/iw5/xsk/parser.cpp b/src/iw5/xsk/parser.cpp index b6cfd4fa..edd17e94 100644 --- a/src/iw5/xsk/parser.cpp +++ b/src/iw5/xsk/parser.cpp @@ -301,6 +301,7 @@ namespace xsk { namespace gsc { namespace iw5 { value.YY_MOVE_OR_COPY< ast::expr_game::ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_expr_identifier_nosize: // expr_identifier_nosize case symbol_kind::S_expr_identifier: // expr_identifier value.YY_MOVE_OR_COPY< ast::expr_identifier::ptr > (YY_MOVE (that.value)); break; @@ -488,7 +489,6 @@ namespace xsk { namespace gsc { namespace iw5 { value.YY_MOVE_OR_COPY< ast::stmt_while::ptr > (YY_MOVE (that.value)); break; - case symbol_kind::S_FIELD: // "field" case symbol_kind::S_PATH: // "path" case symbol_kind::S_IDENTIFIER: // "identifier" case symbol_kind::S_STRING: // "string literal" @@ -599,6 +599,7 @@ namespace xsk { namespace gsc { namespace iw5 { value.move< ast::expr_game::ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_expr_identifier_nosize: // expr_identifier_nosize case symbol_kind::S_expr_identifier: // expr_identifier value.move< ast::expr_identifier::ptr > (YY_MOVE (that.value)); break; @@ -786,7 +787,6 @@ namespace xsk { namespace gsc { namespace iw5 { value.move< ast::stmt_while::ptr > (YY_MOVE (that.value)); break; - case symbol_kind::S_FIELD: // "field" case symbol_kind::S_PATH: // "path" case symbol_kind::S_IDENTIFIER: // "identifier" case symbol_kind::S_STRING: // "string literal" @@ -897,6 +897,7 @@ namespace xsk { namespace gsc { namespace iw5 { value.copy< ast::expr_game::ptr > (that.value); break; + case symbol_kind::S_expr_identifier_nosize: // expr_identifier_nosize case symbol_kind::S_expr_identifier: // expr_identifier value.copy< ast::expr_identifier::ptr > (that.value); break; @@ -1084,7 +1085,6 @@ namespace xsk { namespace gsc { namespace iw5 { value.copy< ast::stmt_while::ptr > (that.value); break; - case symbol_kind::S_FIELD: // "field" case symbol_kind::S_PATH: // "path" case symbol_kind::S_IDENTIFIER: // "identifier" case symbol_kind::S_STRING: // "string literal" @@ -1194,6 +1194,7 @@ namespace xsk { namespace gsc { namespace iw5 { value.move< ast::expr_game::ptr > (that.value); break; + case symbol_kind::S_expr_identifier_nosize: // expr_identifier_nosize case symbol_kind::S_expr_identifier: // expr_identifier value.move< ast::expr_identifier::ptr > (that.value); break; @@ -1381,7 +1382,6 @@ namespace xsk { namespace gsc { namespace iw5 { value.move< ast::stmt_while::ptr > (that.value); break; - case symbol_kind::S_FIELD: // "field" case symbol_kind::S_PATH: // "path" case symbol_kind::S_IDENTIFIER: // "identifier" case symbol_kind::S_STRING: // "string literal" @@ -1746,6 +1746,7 @@ namespace xsk { namespace gsc { namespace iw5 { yylhs.value.emplace< ast::expr_game::ptr > (); break; + case symbol_kind::S_expr_identifier_nosize: // expr_identifier_nosize case symbol_kind::S_expr_identifier: // expr_identifier yylhs.value.emplace< ast::expr_identifier::ptr > (); break; @@ -1933,7 +1934,6 @@ namespace xsk { namespace gsc { namespace iw5 { yylhs.value.emplace< ast::stmt_while::ptr > (); break; - case symbol_kind::S_FIELD: // "field" case symbol_kind::S_PATH: // "path" case symbol_kind::S_IDENTIFIER: // "identifier" case symbol_kind::S_STRING: // "string literal" @@ -1964,1297 +1964,1303 @@ namespace xsk { namespace gsc { namespace iw5 { switch (yyn) { case 2: // root: program -#line 252 "parser.ypp" +#line 253 "parser.ypp" { ast = std::move(yystack_[0].value.as < ast::program::ptr > ()); } #line 1970 "parser.cpp" break; case 3: // root: %empty -#line 253 "parser.ypp" +#line 254 "parser.ypp" { ast = std::make_unique(yylhs.location); } #line 1976 "parser.cpp" break; case 4: // program: program inline -#line 258 "parser.ypp" +#line 259 "parser.ypp" { yylhs.value.as < ast::program::ptr > () = std::move(yystack_[1].value.as < ast::program::ptr > ()); } #line 1982 "parser.cpp" break; case 5: // program: program include -#line 260 "parser.ypp" +#line 261 "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" break; case 6: // program: program declaration -#line 262 "parser.ypp" +#line 263 "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" break; case 7: // program: inline -#line 264 "parser.ypp" +#line 265 "parser.ypp" { yylhs.value.as < ast::program::ptr > () = std::make_unique(yylhs.location); } #line 2000 "parser.cpp" break; case 8: // program: include -#line 266 "parser.ypp" +#line 267 "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" break; case 9: // program: declaration -#line 268 "parser.ypp" +#line 269 "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" break; case 10: // inline: "#inline" expr_path ";" -#line 272 "parser.ypp" +#line 273 "parser.ypp" { lexer.push_header(yystack_[1].value.as < ast::expr_path::ptr > ()->value); } #line 2018 "parser.cpp" break; case 11: // include: "#include" expr_path ";" -#line 277 "parser.ypp" +#line 278 "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" break; case 12: // declaration: "/#" -#line 281 "parser.ypp" +#line 282 "parser.ypp" { yylhs.value.as < ast::decl > ().as_dev_begin = std::make_unique(yylhs.location); } #line 2030 "parser.cpp" break; case 13: // declaration: "#/" -#line 282 "parser.ypp" +#line 283 "parser.ypp" { yylhs.value.as < ast::decl > ().as_dev_end = std::make_unique(yylhs.location); } #line 2036 "parser.cpp" break; case 14: // declaration: decl_usingtree -#line 283 "parser.ypp" +#line 284 "parser.ypp" { yylhs.value.as < ast::decl > ().as_usingtree = std::move(yystack_[0].value.as < ast::decl_usingtree::ptr > ()); } #line 2042 "parser.cpp" break; case 15: // declaration: decl_constant -#line 284 "parser.ypp" +#line 285 "parser.ypp" { yylhs.value.as < ast::decl > ().as_constant = std::move(yystack_[0].value.as < ast::decl_constant::ptr > ()); } #line 2048 "parser.cpp" break; case 16: // declaration: decl_thread -#line 285 "parser.ypp" +#line 286 "parser.ypp" { yylhs.value.as < ast::decl > ().as_thread = std::move(yystack_[0].value.as < ast::decl_thread::ptr > ()); } #line 2054 "parser.cpp" break; case 17: // decl_usingtree: "#using_animtree" "(" expr_string ")" ";" -#line 290 "parser.ypp" +#line 291 "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" break; case 18: // decl_constant: expr_identifier "=" expr ";" -#line 295 "parser.ypp" +#line 296 "parser.ypp" { yylhs.value.as < ast::decl_constant::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr > ())); } #line 2066 "parser.cpp" break; case 19: // decl_thread: expr_identifier "(" expr_parameters ")" stmt_block -#line 300 "parser.ypp" +#line 301 "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" break; case 20: // stmt: stmt_block -#line 304 "parser.ypp" +#line 305 "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_call -#line 305 "parser.ypp" +#line 306 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_call = std::move(yystack_[0].value.as < ast::stmt_call::ptr > ()); } #line 2084 "parser.cpp" break; case 22: // stmt: stmt_assign -#line 306 "parser.ypp" +#line 307 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_assign = std::move(yystack_[0].value.as < ast::stmt_assign::ptr > ()); } #line 2090 "parser.cpp" break; case 23: // stmt: stmt_endon -#line 307 "parser.ypp" +#line 308 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_endon = std::move(yystack_[0].value.as < ast::stmt_endon::ptr > ()); } #line 2096 "parser.cpp" break; case 24: // stmt: stmt_notify -#line 308 "parser.ypp" +#line 309 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_notify = std::move(yystack_[0].value.as < ast::stmt_notify::ptr > ()); } #line 2102 "parser.cpp" break; case 25: // stmt: stmt_wait -#line 309 "parser.ypp" +#line 310 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_wait = std::move(yystack_[0].value.as < ast::stmt_wait::ptr > ()); } #line 2108 "parser.cpp" break; case 26: // stmt: stmt_waittill -#line 310 "parser.ypp" +#line 311 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_waittill = std::move(yystack_[0].value.as < ast::stmt_waittill::ptr > ()); } #line 2114 "parser.cpp" break; case 27: // stmt: stmt_waittillmatch -#line 311 "parser.ypp" +#line 312 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_waittillmatch = std::move(yystack_[0].value.as < ast::stmt_waittillmatch::ptr > ()); } #line 2120 "parser.cpp" break; case 28: // stmt: stmt_waittillframeend -#line 312 "parser.ypp" +#line 313 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_waittillframeend = std::move(yystack_[0].value.as < ast::stmt_waittillframeend::ptr > ()); } #line 2126 "parser.cpp" break; case 29: // stmt: stmt_if -#line 313 "parser.ypp" +#line 314 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_if = std::move(yystack_[0].value.as < ast::stmt_if::ptr > ()); } #line 2132 "parser.cpp" break; case 30: // stmt: stmt_ifelse -#line 314 "parser.ypp" +#line 315 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_ifelse = std::move(yystack_[0].value.as < ast::stmt_ifelse::ptr > ()); } #line 2138 "parser.cpp" break; case 31: // stmt: stmt_while -#line 315 "parser.ypp" +#line 316 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_while = std::move(yystack_[0].value.as < ast::stmt_while::ptr > ()); } #line 2144 "parser.cpp" break; case 32: // stmt: stmt_dowhile -#line 316 "parser.ypp" +#line 317 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_dowhile = std::move(yystack_[0].value.as < ast::stmt_dowhile::ptr > ()); } #line 2150 "parser.cpp" break; case 33: // stmt: stmt_for -#line 317 "parser.ypp" +#line 318 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_for = std::move(yystack_[0].value.as < ast::stmt_for::ptr > ()); } #line 2156 "parser.cpp" break; case 34: // stmt: stmt_foreach -#line 318 "parser.ypp" +#line 319 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_foreach = std::move(yystack_[0].value.as < ast::stmt_foreach::ptr > ()); } #line 2162 "parser.cpp" break; case 35: // stmt: stmt_switch -#line 319 "parser.ypp" +#line 320 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_switch = std::move(yystack_[0].value.as < ast::stmt_switch::ptr > ()); } #line 2168 "parser.cpp" break; case 36: // stmt: stmt_case -#line 320 "parser.ypp" +#line 321 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_case = std::move(yystack_[0].value.as < ast::stmt_case::ptr > ()); } #line 2174 "parser.cpp" break; case 37: // stmt: stmt_default -#line 321 "parser.ypp" +#line 322 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_default = std::move(yystack_[0].value.as < ast::stmt_default::ptr > ()); } #line 2180 "parser.cpp" break; case 38: // stmt: stmt_break -#line 322 "parser.ypp" +#line 323 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_break = std::move(yystack_[0].value.as < ast::stmt_break::ptr > ()); } #line 2186 "parser.cpp" break; case 39: // stmt: stmt_continue -#line 323 "parser.ypp" +#line 324 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_continue = std::move(yystack_[0].value.as < ast::stmt_continue::ptr > ()); } #line 2192 "parser.cpp" break; case 40: // stmt: stmt_return -#line 324 "parser.ypp" +#line 325 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_return = std::move(yystack_[0].value.as < ast::stmt_return::ptr > ()); } #line 2198 "parser.cpp" break; case 41: // stmt: stmt_breakpoint -#line 325 "parser.ypp" +#line 326 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_breakpoint = std::move(yystack_[0].value.as < ast::stmt_breakpoint::ptr > ()); } #line 2204 "parser.cpp" break; case 42: // stmt: stmt_prof_begin -#line 326 "parser.ypp" +#line 327 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_prof_begin = std::move(yystack_[0].value.as < ast::stmt_prof_begin::ptr > ()); } #line 2210 "parser.cpp" break; case 43: // stmt: stmt_prof_end -#line 327 "parser.ypp" +#line 328 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_prof_end = std::move(yystack_[0].value.as < ast::stmt_prof_end::ptr > ()); } #line 2216 "parser.cpp" break; case 44: // stmt_or_dev: stmt -#line 331 "parser.ypp" +#line 332 "parser.ypp" { yylhs.value.as < ast::stmt > () = std::move(yystack_[0].value.as < ast::stmt > ()); } #line 2222 "parser.cpp" break; case 45: // stmt_or_dev: stmt_dev -#line 332 "parser.ypp" +#line 333 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_dev = std::move(yystack_[0].value.as < ast::stmt_dev::ptr > ()); } #line 2228 "parser.cpp" break; case 46: // stmt_list: stmt_list stmt -#line 337 "parser.ypp" +#line 338 "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 2234 "parser.cpp" break; case 47: // stmt_list: stmt -#line 339 "parser.ypp" +#line 340 "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 2240 "parser.cpp" break; case 48: // stmt_or_dev_list: stmt_or_dev_list stmt_or_dev -#line 344 "parser.ypp" +#line 345 "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 2246 "parser.cpp" break; case 49: // stmt_or_dev_list: stmt_or_dev -#line 346 "parser.ypp" +#line 347 "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 2252 "parser.cpp" break; case 50: // stmt_dev: "/#" stmt_list "#/" -#line 350 "parser.ypp" +#line 351 "parser.ypp" { yylhs.value.as < ast::stmt_dev::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::stmt_list::ptr > ())); } #line 2258 "parser.cpp" break; case 51: // stmt_dev: "/#" "#/" -#line 351 "parser.ypp" +#line 352 "parser.ypp" { yylhs.value.as < ast::stmt_dev::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } #line 2264 "parser.cpp" break; case 52: // stmt_block: "{" stmt_or_dev_list "}" -#line 355 "parser.ypp" +#line 356 "parser.ypp" { yylhs.value.as < ast::stmt_list::ptr > () = std::move(yystack_[1].value.as < ast::stmt_list::ptr > ()); } #line 2270 "parser.cpp" break; case 53: // stmt_block: "{" "}" -#line 356 "parser.ypp" +#line 357 "parser.ypp" { yylhs.value.as < ast::stmt_list::ptr > () = std::make_unique(yylhs.location); } #line 2276 "parser.cpp" break; case 54: // stmt_expr: expr_assign -#line 361 "parser.ypp" +#line 362 "parser.ypp" { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } #line 2282 "parser.cpp" break; case 55: // stmt_expr: expr_increment -#line 363 "parser.ypp" +#line 364 "parser.ypp" { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } #line 2288 "parser.cpp" break; case 56: // stmt_expr: expr_decrement -#line 365 "parser.ypp" +#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 2294 "parser.cpp" break; case 57: // stmt_expr: %empty -#line 367 "parser.ypp" +#line 368 "parser.ypp" { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } #line 2300 "parser.cpp" break; case 58: // stmt_call: expr_call ";" -#line 372 "parser.ypp" +#line 373 "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 2306 "parser.cpp" break; case 59: // stmt_call: expr_method ";" -#line 374 "parser.ypp" +#line 375 "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 2312 "parser.cpp" break; case 60: // stmt_assign: expr_assign ";" -#line 379 "parser.ypp" +#line 380 "parser.ypp" { yylhs.value.as < ast::stmt_assign::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } #line 2318 "parser.cpp" break; case 61: // stmt_assign: expr_increment ";" -#line 381 "parser.ypp" +#line 382 "parser.ypp" { yylhs.value.as < ast::stmt_assign::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } #line 2324 "parser.cpp" break; case 62: // stmt_assign: expr_decrement ";" -#line 383 "parser.ypp" +#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 2330 "parser.cpp" break; case 63: // stmt_endon: expr_object "endon" "(" expr ")" ";" -#line 388 "parser.ypp" +#line 389 "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 2336 "parser.cpp" break; case 64: // stmt_notify: expr_object "notify" "(" expr "," expr_arguments_no_empty ")" ";" -#line 393 "parser.ypp" +#line 394 "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 2342 "parser.cpp" break; case 65: // stmt_notify: expr_object "notify" "(" expr ")" ";" -#line 395 "parser.ypp" +#line 396 "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 2348 "parser.cpp" break; case 66: // stmt_wait: "wait" expr ";" -#line 400 "parser.ypp" +#line 401 "parser.ypp" { yylhs.value.as < ast::stmt_wait::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } #line 2354 "parser.cpp" break; case 67: // stmt_waittill: expr_object "waittill" "(" expr "," expr_arguments_no_empty ")" ";" -#line 405 "parser.ypp" +#line 406 "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 2360 "parser.cpp" break; case 68: // stmt_waittill: expr_object "waittill" "(" expr ")" ";" -#line 407 "parser.ypp" +#line 408 "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 2366 "parser.cpp" break; case 69: // stmt_waittillmatch: expr_object "waittillmatch" "(" expr "," expr_arguments_no_empty ")" ";" -#line 412 "parser.ypp" +#line 413 "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 2372 "parser.cpp" break; case 70: // stmt_waittillmatch: expr_object "waittillmatch" "(" expr ")" ";" -#line 414 "parser.ypp" +#line 415 "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 2378 "parser.cpp" break; case 71: // stmt_waittillframeend: "waittillframeend" ";" -#line 419 "parser.ypp" +#line 420 "parser.ypp" { yylhs.value.as < ast::stmt_waittillframeend::ptr > () = std::make_unique(yylhs.location); } #line 2384 "parser.cpp" break; case 72: // stmt_if: "if" "(" expr ")" stmt -#line 424 "parser.ypp" +#line 425 "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 2390 "parser.cpp" break; case 73: // stmt_ifelse: "if" "(" expr ")" stmt "else" stmt -#line 429 "parser.ypp" +#line 430 "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 2396 "parser.cpp" break; case 74: // stmt_while: "while" "(" expr ")" stmt -#line 434 "parser.ypp" +#line 435 "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 2402 "parser.cpp" break; case 75: // stmt_dowhile: "do" stmt "while" "(" expr ")" ";" -#line 439 "parser.ypp" +#line 440 "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 2408 "parser.cpp" break; case 76: // stmt_for: "for" "(" stmt_expr ";" expr_or_empty ";" stmt_expr ")" stmt -#line 444 "parser.ypp" +#line 445 "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 2414 "parser.cpp" break; case 77: // stmt_foreach: "foreach" "(" expr_identifier "in" expr ")" stmt -#line 449 "parser.ypp" +#line 450 "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 2420 "parser.cpp" break; case 78: // stmt_foreach: "foreach" "(" expr_identifier "," expr_identifier "in" expr ")" stmt -#line 451 "parser.ypp" +#line 452 "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 2426 "parser.cpp" break; case 79: // stmt_switch: "switch" "(" expr ")" stmt_block -#line 456 "parser.ypp" +#line 457 "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 2432 "parser.cpp" break; case 80: // stmt_case: "case" expr_integer ":" -#line 461 "parser.ypp" +#line 462 "parser.ypp" { yylhs.value.as < ast::stmt_case::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[1].value.as < ast::expr_integer::ptr > ())), std::make_unique(yylhs.location)); } #line 2438 "parser.cpp" break; case 81: // stmt_case: "case" expr_string ":" -#line 463 "parser.ypp" +#line 464 "parser.ypp" { yylhs.value.as < ast::stmt_case::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[1].value.as < ast::expr_string::ptr > ())), std::make_unique(yylhs.location)); } #line 2444 "parser.cpp" break; case 82: // stmt_default: "default" ":" -#line 468 "parser.ypp" +#line 469 "parser.ypp" { yylhs.value.as < ast::stmt_default::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } #line 2450 "parser.cpp" break; case 83: // stmt_break: "break" ";" -#line 473 "parser.ypp" +#line 474 "parser.ypp" { yylhs.value.as < ast::stmt_break::ptr > () = std::make_unique(yylhs.location); } #line 2456 "parser.cpp" break; case 84: // stmt_continue: "continue" ";" -#line 478 "parser.ypp" +#line 479 "parser.ypp" { yylhs.value.as < ast::stmt_continue::ptr > () = std::make_unique(yylhs.location); } #line 2462 "parser.cpp" break; case 85: // stmt_return: "return" expr ";" -#line 483 "parser.ypp" +#line 484 "parser.ypp" { yylhs.value.as < ast::stmt_return::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } #line 2468 "parser.cpp" break; case 86: // stmt_return: "return" ";" -#line 485 "parser.ypp" +#line 486 "parser.ypp" { yylhs.value.as < ast::stmt_return::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } #line 2474 "parser.cpp" break; case 87: // stmt_breakpoint: "breakpoint" ";" -#line 490 "parser.ypp" +#line 491 "parser.ypp" { yylhs.value.as < ast::stmt_breakpoint::ptr > () = std::make_unique(yylhs.location); } #line 2480 "parser.cpp" break; case 88: // stmt_prof_begin: "prof_begin" "(" expr_arguments ")" ";" -#line 495 "parser.ypp" +#line 496 "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 2486 "parser.cpp" break; case 89: // stmt_prof_end: "prof_end" "(" expr_arguments ")" ";" -#line 500 "parser.ypp" +#line 501 "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 2492 "parser.cpp" break; case 90: // expr: expr_ternary -#line 504 "parser.ypp" +#line 505 "parser.ypp" { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } #line 2498 "parser.cpp" break; case 91: // expr: expr_binary -#line 505 "parser.ypp" +#line 506 "parser.ypp" { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } #line 2504 "parser.cpp" break; case 92: // expr: expr_primitive -#line 506 "parser.ypp" +#line 507 "parser.ypp" { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } #line 2510 "parser.cpp" break; case 93: // expr_or_empty: expr -#line 510 "parser.ypp" +#line 511 "parser.ypp" { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } #line 2516 "parser.cpp" break; case 94: // expr_or_empty: %empty -#line 511 "parser.ypp" +#line 512 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location); } #line 2522 "parser.cpp" break; case 95: // expr_assign: expr_object "=" expr -#line 516 "parser.ypp" +#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 2528 "parser.cpp" break; case 96: // expr_assign: expr_object "|=" expr -#line 518 "parser.ypp" +#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 2534 "parser.cpp" break; case 97: // expr_assign: expr_object "&=" expr -#line 520 "parser.ypp" +#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 2540 "parser.cpp" break; case 98: // expr_assign: expr_object "^=" expr -#line 522 "parser.ypp" +#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 2546 "parser.cpp" break; case 99: // expr_assign: expr_object "<<=" expr -#line 524 "parser.ypp" +#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 2552 "parser.cpp" break; case 100: // expr_assign: expr_object ">>=" expr -#line 526 "parser.ypp" +#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 2558 "parser.cpp" break; case 101: // expr_assign: expr_object "+=" expr -#line 528 "parser.ypp" +#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 2564 "parser.cpp" break; case 102: // expr_assign: expr_object "-=" expr -#line 530 "parser.ypp" +#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 2570 "parser.cpp" break; case 103: // expr_assign: expr_object "*=" expr -#line 532 "parser.ypp" +#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 2576 "parser.cpp" break; case 104: // expr_assign: expr_object "/=" expr -#line 534 "parser.ypp" +#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 2582 "parser.cpp" break; case 105: // expr_assign: expr_object "%=" expr -#line 536 "parser.ypp" +#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 2588 "parser.cpp" break; case 106: // expr_increment: "++" expr_object -#line 541 "parser.ypp" +#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 2594 "parser.cpp" break; case 107: // expr_increment: expr_object "++" -#line 543 "parser.ypp" +#line 544 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ()), false); } #line 2600 "parser.cpp" break; case 108: // expr_decrement: "--" expr_object -#line 548 "parser.ypp" +#line 549 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ()), true); } #line 2606 "parser.cpp" break; case 109: // expr_decrement: expr_object "--" -#line 550 "parser.ypp" +#line 551 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ()), false); } #line 2612 "parser.cpp" break; case 110: // expr_ternary: expr "?" expr ":" expr -#line 555 "parser.ypp" +#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 2618 "parser.cpp" break; case 111: // expr_binary: expr "||" expr -#line 560 "parser.ypp" +#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 2624 "parser.cpp" break; case 112: // expr_binary: expr "&&" expr -#line 562 "parser.ypp" +#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 2630 "parser.cpp" break; case 113: // expr_binary: expr "==" expr -#line 564 "parser.ypp" +#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 2636 "parser.cpp" break; case 114: // expr_binary: expr "!=" expr -#line 566 "parser.ypp" +#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 2642 "parser.cpp" break; case 115: // expr_binary: expr "<=" expr -#line 568 "parser.ypp" +#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 2648 "parser.cpp" break; case 116: // expr_binary: expr ">=" expr -#line 570 "parser.ypp" +#line 571 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } #line 2654 "parser.cpp" break; case 117: // expr_binary: expr "<" expr -#line 572 "parser.ypp" +#line 573 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } #line 2660 "parser.cpp" break; case 118: // expr_binary: expr ">" expr -#line 574 "parser.ypp" +#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 2666 "parser.cpp" break; case 119: // expr_binary: expr "|" expr -#line 576 "parser.ypp" +#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 2672 "parser.cpp" break; case 120: // expr_binary: expr "&" expr -#line 578 "parser.ypp" +#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 2678 "parser.cpp" break; case 121: // expr_binary: expr "^" expr -#line 580 "parser.ypp" +#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 2684 "parser.cpp" break; case 122: // expr_binary: expr "<<" expr -#line 582 "parser.ypp" +#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 2690 "parser.cpp" break; case 123: // expr_binary: expr ">>" expr -#line 584 "parser.ypp" +#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 2696 "parser.cpp" break; case 124: // expr_binary: expr "+" expr -#line 586 "parser.ypp" +#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 2702 "parser.cpp" break; case 125: // expr_binary: expr "-" expr -#line 588 "parser.ypp" +#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 2708 "parser.cpp" break; case 126: // expr_binary: expr "*" expr -#line 590 "parser.ypp" +#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 2714 "parser.cpp" break; case 127: // expr_binary: expr "/" expr -#line 592 "parser.ypp" +#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 2720 "parser.cpp" break; case 128: // expr_binary: expr "%" expr -#line 594 "parser.ypp" +#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 2726 "parser.cpp" break; case 129: // expr_primitive: expr_complement -#line 598 "parser.ypp" +#line 599 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_complement::ptr > ()); } #line 2732 "parser.cpp" break; case 130: // expr_primitive: expr_not -#line 599 "parser.ypp" +#line 600 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_not::ptr > ()); } #line 2738 "parser.cpp" break; case 131: // expr_primitive: expr_call -#line 600 "parser.ypp" +#line 601 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_call::ptr > ()); } #line 2744 "parser.cpp" break; case 132: // expr_primitive: expr_method -#line 601 "parser.ypp" +#line 602 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_method::ptr > ()); } #line 2750 "parser.cpp" break; case 133: // expr_primitive: expr_add_array -#line 602 "parser.ypp" +#line 603 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_add_array::ptr > ()); } #line 2756 "parser.cpp" break; case 134: // expr_primitive: expr_reference -#line 603 "parser.ypp" +#line 604 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_reference::ptr > ()); } #line 2762 "parser.cpp" break; case 135: // expr_primitive: expr_array -#line 604 "parser.ypp" +#line 605 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_array::ptr > ()); } #line 2768 "parser.cpp" break; case 136: // expr_primitive: expr_field -#line 605 "parser.ypp" +#line 606 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_field::ptr > ()); } #line 2774 "parser.cpp" break; case 137: // expr_primitive: expr_size -#line 606 "parser.ypp" +#line 607 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_size::ptr > ()); } #line 2780 "parser.cpp" break; case 138: // expr_primitive: expr_paren -#line 607 "parser.ypp" +#line 608 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_paren::ptr > ()); } #line 2786 "parser.cpp" break; case 139: // expr_primitive: expr_thisthread -#line 608 "parser.ypp" +#line 609 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_thisthread::ptr > ()); } #line 2792 "parser.cpp" break; case 140: // expr_primitive: expr_empty_array -#line 609 "parser.ypp" +#line 610 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_empty_array::ptr > ()); } #line 2798 "parser.cpp" break; case 141: // expr_primitive: expr_undefined -#line 610 "parser.ypp" +#line 611 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_undefined::ptr > ()); } #line 2804 "parser.cpp" break; case 142: // expr_primitive: expr_game -#line 611 "parser.ypp" +#line 612 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_game::ptr > ()); } #line 2810 "parser.cpp" break; case 143: // expr_primitive: expr_self -#line 612 "parser.ypp" +#line 613 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_self::ptr > ()); } #line 2816 "parser.cpp" break; case 144: // expr_primitive: expr_anim -#line 613 "parser.ypp" +#line 614 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_anim::ptr > ()); } #line 2822 "parser.cpp" break; case 145: // expr_primitive: expr_level -#line 614 "parser.ypp" +#line 615 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_level::ptr > ()); } #line 2828 "parser.cpp" break; case 146: // expr_primitive: expr_animation -#line 615 "parser.ypp" +#line 616 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_animation::ptr > ()); } #line 2834 "parser.cpp" break; case 147: // expr_primitive: expr_animtree -#line 616 "parser.ypp" +#line 617 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_animtree::ptr > ()); } #line 2840 "parser.cpp" break; case 148: // expr_primitive: expr_identifier -#line 617 "parser.ypp" +#line 618 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ()); } #line 2846 "parser.cpp" break; case 149: // expr_primitive: expr_istring -#line 618 "parser.ypp" +#line 619 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_istring::ptr > ()); } #line 2852 "parser.cpp" break; case 150: // expr_primitive: expr_string -#line 619 "parser.ypp" +#line 620 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_string::ptr > ()); } #line 2858 "parser.cpp" break; case 151: // expr_primitive: expr_vector -#line 620 "parser.ypp" +#line 621 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_vector::ptr > ()); } #line 2864 "parser.cpp" break; case 152: // expr_primitive: expr_float -#line 621 "parser.ypp" +#line 622 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_float::ptr > ()); } #line 2870 "parser.cpp" break; case 153: // expr_primitive: expr_integer -#line 622 "parser.ypp" +#line 623 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_integer::ptr > ()); } #line 2876 "parser.cpp" break; case 154: // expr_primitive: expr_false -#line 623 "parser.ypp" +#line 624 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_false::ptr > ()); } #line 2882 "parser.cpp" break; case 155: // expr_primitive: expr_true -#line 624 "parser.ypp" +#line 625 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_true::ptr > ()); } #line 2888 "parser.cpp" break; case 156: // expr_complement: "~" expr -#line 629 "parser.ypp" +#line 630 "parser.ypp" { yylhs.value.as < ast::expr_complement::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } #line 2894 "parser.cpp" break; case 157: // expr_not: "!" expr -#line 634 "parser.ypp" +#line 635 "parser.ypp" { yylhs.value.as < ast::expr_not::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } #line 2900 "parser.cpp" break; case 158: // expr_call: expr_function -#line 638 "parser.ypp" +#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 2906 "parser.cpp" break; case 159: // expr_call: expr_pointer -#line 639 "parser.ypp" +#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 2912 "parser.cpp" break; case 160: // expr_method: expr_object expr_function -#line 642 "parser.ypp" +#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 2918 "parser.cpp" break; case 161: // expr_method: expr_object expr_pointer -#line 643 "parser.ypp" +#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 2924 "parser.cpp" break; case 162: // expr_function: expr_identifier "(" expr_arguments ")" -#line 648 "parser.ypp" +#line 649 "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 2930 "parser.cpp" break; case 163: // expr_function: expr_path "::" expr_identifier "(" expr_arguments ")" -#line 650 "parser.ypp" +#line 651 "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 2936 "parser.cpp" break; case 164: // expr_function: "thread" expr_identifier "(" expr_arguments ")" -#line 652 "parser.ypp" +#line 653 "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 2942 "parser.cpp" break; case 165: // expr_function: "thread" expr_path "::" expr_identifier "(" expr_arguments ")" -#line 654 "parser.ypp" +#line 655 "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 2948 "parser.cpp" break; case 166: // expr_function: "childthread" expr_identifier "(" expr_arguments ")" -#line 656 "parser.ypp" +#line 657 "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 2954 "parser.cpp" break; case 167: // expr_function: "childthread" expr_path "::" expr_identifier "(" expr_arguments ")" -#line 658 "parser.ypp" +#line 659 "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 2960 "parser.cpp" break; case 168: // expr_pointer: "[" "[" expr "]" "]" "(" expr_arguments ")" -#line 663 "parser.ypp" +#line 664 "parser.ypp" { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::normal); } #line 2966 "parser.cpp" break; case 169: // expr_pointer: "thread" "[" "[" expr "]" "]" "(" expr_arguments ")" -#line 665 "parser.ypp" +#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::thread); } #line 2972 "parser.cpp" break; case 170: // expr_pointer: "childthread" "[" "[" expr "]" "]" "(" expr_arguments ")" -#line 667 "parser.ypp" +#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::childthread); } #line 2978 "parser.cpp" break; case 171: // expr_pointer: "call" "[" "[" expr "]" "]" "(" expr_arguments ")" -#line 669 "parser.ypp" +#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::builtin); } #line 2984 "parser.cpp" break; case 172: // expr_add_array: "[" expr_arguments_no_empty "]" -#line 674 "parser.ypp" +#line 675 "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 2990 "parser.cpp" break; case 173: // expr_parameters: expr_parameters "," expr_identifier -#line 679 "parser.ypp" +#line 680 "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 2996 "parser.cpp" break; case 174: // expr_parameters: expr_identifier -#line 681 "parser.ypp" +#line 682 "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 3002 "parser.cpp" break; case 175: // expr_parameters: %empty -#line 683 "parser.ypp" +#line 684 "parser.ypp" { yylhs.value.as < ast::expr_parameters::ptr > () = std::make_unique(yylhs.location); } #line 3008 "parser.cpp" break; case 176: // expr_arguments: expr_arguments_no_empty -#line 688 "parser.ypp" +#line 689 "parser.ypp" { yylhs.value.as < ast::expr_arguments::ptr > () = std::move(yystack_[0].value.as < ast::expr_arguments::ptr > ()); } #line 3014 "parser.cpp" break; case 177: // expr_arguments: %empty -#line 690 "parser.ypp" +#line 691 "parser.ypp" { yylhs.value.as < ast::expr_arguments::ptr > () = std::make_unique(yylhs.location); } #line 3020 "parser.cpp" break; case 178: // expr_arguments_no_empty: expr_arguments "," expr -#line 695 "parser.ypp" +#line 696 "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 3026 "parser.cpp" break; case 179: // expr_arguments_no_empty: expr -#line 697 "parser.ypp" +#line 698 "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 3032 "parser.cpp" break; case 180: // expr_reference: "::" expr_identifier -#line 702 "parser.ypp" +#line 703 "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 3038 "parser.cpp" break; case 181: // expr_reference: expr_path "::" expr_identifier -#line 704 "parser.ypp" +#line 705 "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 3044 "parser.cpp" break; case 182: // expr_array: expr_object "[" expr "]" -#line 709 "parser.ypp" +#line 710 "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 3050 "parser.cpp" break; - case 183: // expr_field: expr_object "." expr_identifier -#line 714 "parser.ypp" + case 183: // expr_field: expr_object "." expr_identifier_nosize +#line 715 "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 3056 "parser.cpp" break; - case 184: // expr_field: expr_object "field" -#line 716 "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 > ())); } + case 184: // expr_size: expr_object "." "size" +#line 720 "parser.ypp" + { yylhs.value.as < ast::expr_size::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ())); } #line 3062 "parser.cpp" break; - case 185: // 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 > ())); } + case 185: // expr_paren: "(" expr ")" +#line 725 "parser.ypp" + { yylhs.value.as < ast::expr_paren::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } #line 3068 "parser.cpp" break; - case 186: // 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 > ())); } + case 186: // expr_object: expr_call +#line 729 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_call::ptr > ()); } #line 3074 "parser.cpp" break; - case 187: // expr_object: expr_call + case 187: // expr_object: expr_method #line 730 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_call::ptr > ()); } + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_method::ptr > ()); } #line 3080 "parser.cpp" break; - case 188: // expr_object: expr_method + case 188: // expr_object: expr_array #line 731 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_method::ptr > ()); } + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_array::ptr > ()); } #line 3086 "parser.cpp" break; - case 189: // expr_object: expr_array + case 189: // expr_object: expr_field #line 732 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_array::ptr > ()); } + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_field::ptr > ()); } #line 3092 "parser.cpp" break; - case 190: // expr_object: expr_field + case 190: // expr_object: expr_game #line 733 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_field::ptr > ()); } + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_game::ptr > ()); } #line 3098 "parser.cpp" break; - case 191: // expr_object: expr_game + case 191: // expr_object: expr_self #line 734 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_game::ptr > ()); } + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_self::ptr > ()); } #line 3104 "parser.cpp" break; - case 192: // expr_object: expr_self + case 192: // expr_object: expr_anim #line 735 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_self::ptr > ()); } + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_anim::ptr > ()); } #line 3110 "parser.cpp" break; - case 193: // expr_object: expr_anim + case 193: // expr_object: expr_level #line 736 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_anim::ptr > ()); } + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_level::ptr > ()); } #line 3116 "parser.cpp" break; - case 194: // expr_object: expr_level + case 194: // expr_object: expr_identifier #line 737 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_level::ptr > ()); } + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ()); } #line 3122 "parser.cpp" break; - case 195: // 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 > ()); } + case 195: // expr_thisthread: "thisthread" +#line 742 "parser.ypp" + { yylhs.value.as < ast::expr_thisthread::ptr > () = std::make_unique(yylhs.location); } #line 3128 "parser.cpp" break; - case 196: // expr_thisthread: "thisthread" -#line 743 "parser.ypp" - { yylhs.value.as < ast::expr_thisthread::ptr > () = std::make_unique(yylhs.location); } + case 196: // expr_empty_array: "[" "]" +#line 747 "parser.ypp" + { yylhs.value.as < ast::expr_empty_array::ptr > () = std::make_unique(yylhs.location); } #line 3134 "parser.cpp" break; - case 197: // expr_empty_array: "[" "]" -#line 748 "parser.ypp" - { yylhs.value.as < ast::expr_empty_array::ptr > () = std::make_unique(yylhs.location); } + case 197: // expr_undefined: "undefined" +#line 752 "parser.ypp" + { yylhs.value.as < ast::expr_undefined::ptr > () = std::make_unique(yylhs.location); } #line 3140 "parser.cpp" break; - case 198: // expr_undefined: "undefined" -#line 753 "parser.ypp" - { yylhs.value.as < ast::expr_undefined::ptr > () = std::make_unique(yylhs.location); } + case 198: // expr_game: "game" +#line 757 "parser.ypp" + { yylhs.value.as < ast::expr_game::ptr > () = std::make_unique(yylhs.location); } #line 3146 "parser.cpp" break; - case 199: // expr_game: "game" -#line 758 "parser.ypp" - { yylhs.value.as < ast::expr_game::ptr > () = std::make_unique(yylhs.location); } + case 199: // expr_self: "self" +#line 762 "parser.ypp" + { yylhs.value.as < ast::expr_self::ptr > () = std::make_unique(yylhs.location); } #line 3152 "parser.cpp" break; - case 200: // expr_self: "self" -#line 763 "parser.ypp" - { yylhs.value.as < ast::expr_self::ptr > () = std::make_unique(yylhs.location); } + case 200: // expr_anim: "anim" +#line 767 "parser.ypp" + { yylhs.value.as < ast::expr_anim::ptr > () = std::make_unique(yylhs.location); } #line 3158 "parser.cpp" break; - case 201: // expr_anim: "anim" -#line 768 "parser.ypp" - { yylhs.value.as < ast::expr_anim::ptr > () = std::make_unique(yylhs.location); } + case 201: // expr_level: "level" +#line 772 "parser.ypp" + { yylhs.value.as < ast::expr_level::ptr > () = std::make_unique(yylhs.location); } #line 3164 "parser.cpp" break; - case 202: // expr_level: "level" -#line 773 "parser.ypp" - { yylhs.value.as < ast::expr_level::ptr > () = std::make_unique(yylhs.location); } + case 202: // expr_animation: "%" "identifier" +#line 777 "parser.ypp" + { yylhs.value.as < ast::expr_animation::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 3170 "parser.cpp" break; - case 203: // expr_animation: "%" "identifier" -#line 778 "parser.ypp" - { yylhs.value.as < ast::expr_animation::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 203: // expr_animtree: "#animtree" +#line 782 "parser.ypp" + { yylhs.value.as < ast::expr_animtree::ptr > () = std::make_unique(yylhs.location); } #line 3176 "parser.cpp" break; - case 204: // expr_animtree: "#animtree" -#line 783 "parser.ypp" - { yylhs.value.as < ast::expr_animtree::ptr > () = std::make_unique(yylhs.location); } + case 204: // expr_identifier_nosize: "identifier" +#line 787 "parser.ypp" + { yylhs.value.as < ast::expr_identifier::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 3182 "parser.cpp" break; case 205: // expr_identifier: "identifier" -#line 788 "parser.ypp" +#line 792 "parser.ypp" { yylhs.value.as < ast::expr_identifier::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 3188 "parser.cpp" break; - case 206: // expr_path: "path" -#line 793 "parser.ypp" - { yylhs.value.as < ast::expr_path::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 206: // expr_identifier: "size" +#line 794 "parser.ypp" + { yylhs.value.as < ast::expr_identifier::ptr > () = std::make_unique(yylhs.location, "size"); } #line 3194 "parser.cpp" break; - case 207: // expr_path: expr_identifier -#line 795 "parser.ypp" - { yylhs.value.as < ast::expr_path::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < ast::expr_identifier::ptr > ()->value); } + case 207: // expr_path: "identifier" +#line 799 "parser.ypp" + { yylhs.value.as < ast::expr_path::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 3200 "parser.cpp" break; - case 208: // expr_istring: "localized string" -#line 800 "parser.ypp" - { yylhs.value.as < ast::expr_istring::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 208: // expr_path: "path" +#line 801 "parser.ypp" + { yylhs.value.as < ast::expr_path::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 3206 "parser.cpp" break; - case 209: // expr_string: "string literal" -#line 805 "parser.ypp" - { yylhs.value.as < ast::expr_string::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 209: // expr_istring: "localized string" +#line 806 "parser.ypp" + { yylhs.value.as < ast::expr_istring::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 3212 "parser.cpp" break; - case 210: // expr_vector: "(" expr "," expr "," expr ")" -#line 810 "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 > ())); } + case 210: // expr_string: "string literal" +#line 811 "parser.ypp" + { yylhs.value.as < ast::expr_string::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 3218 "parser.cpp" break; - case 211: // expr_float: "-" "float" -#line 815 "parser.ypp" - { yylhs.value.as < ast::expr_float::ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } + case 211: // expr_vector: "(" expr "," expr "," expr ")" +#line 816 "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 3224 "parser.cpp" break; - case 212: // expr_float: "float" -#line 817 "parser.ypp" - { yylhs.value.as < ast::expr_float::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 212: // expr_float: "-" "float" +#line 821 "parser.ypp" + { yylhs.value.as < ast::expr_float::ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } #line 3230 "parser.cpp" break; - case 213: // expr_integer: "-" "integer" -#line 822 "parser.ypp" - { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } + 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 3236 "parser.cpp" break; - case 214: // expr_integer: "integer" -#line 824 "parser.ypp" - { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 214: // expr_integer: "-" "integer" +#line 828 "parser.ypp" + { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } #line 3242 "parser.cpp" break; - case 215: // expr_false: "false" -#line 829 "parser.ypp" - { yylhs.value.as < ast::expr_false::ptr > () = std::make_unique(yylhs.location); } + 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 3248 "parser.cpp" break; - case 216: // expr_true: "true" -#line 834 "parser.ypp" - { yylhs.value.as < ast::expr_true::ptr > () = std::make_unique(yylhs.location); } + case 216: // expr_false: "false" +#line 835 "parser.ypp" + { yylhs.value.as < ast::expr_false::ptr > () = std::make_unique(yylhs.location); } #line 3254 "parser.cpp" break; + case 217: // expr_true: "true" +#line 840 "parser.ypp" + { yylhs.value.as < ast::expr_true::ptr > () = std::make_unique(yylhs.location); } +#line 3260 "parser.cpp" + break; -#line 3258 "parser.cpp" + +#line 3264 "parser.cpp" default: break; @@ -3445,12 +3451,12 @@ namespace xsk { namespace gsc { namespace iw5 { "while", "for", "foreach", "in", "switch", "case", "default", "break", "continue", "return", "breakpoint", "prof_begin", "prof_end", "thread", "childthread", "thisthread", "call", "true", "false", "undefined", - ".size", "game", "self", "anim", "level", "(", ")", "{", "}", "[", "]", + "size", "game", "self", "anim", "level", "(", ")", "{", "}", "[", "]", ",", ".", "::", ":", ";", "?", "++", "--", "<<", ">>", "||", "&&", "==", "!=", "<=", ">=", "<", ">", "!", "~", "=", "+=", "-=", "*=", "/=", "%=", "|=", "&=", "^=", ">>=", "<<=", "|", "&", "^", "+", "-", "*", "/", "%", - "field", "path", "identifier", "string literal", "localized string", - "float", "integer", "ADD_ARRAY", "THEN", "TERN", "NEG", "ANIMREF", + "path", "identifier", "string literal", "localized string", "float", + "integer", "SIZEOF", "ADD_ARRAY", "THEN", "TERN", "NEG", "ANIMREF", "PREINC", "PREDEC", "POSTINC", "POSTDEC", "$accept", "root", "program", "inline", "include", "declaration", "decl_usingtree", "decl_constant", "decl_thread", "stmt", "stmt_or_dev", "stmt_list", "stmt_or_dev_list", @@ -3468,9 +3474,9 @@ namespace xsk { namespace gsc { namespace iw5 { "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_vector", "expr_float", "expr_integer", "expr_false", - "expr_true", YY_NULLPTR + "expr_animtree", "expr_identifier_nosize", "expr_identifier", + "expr_path", "expr_istring", "expr_string", "expr_vector", "expr_float", + "expr_integer", "expr_false", "expr_true", YY_NULLPTR }; return yy_sname[yysymbol]; } @@ -3735,649 +3741,655 @@ namespace xsk { namespace gsc { namespace iw5 { } - const short parser::yypact_ninf_ = -263; + const short parser::yypact_ninf_ = -266; const short parser::yytable_ninf_ = -208; const short parser::yypact_[] = { - 4, -263, -263, 2, 2, -23, -263, 11, 4, -263, - -263, -263, -263, -263, -263, 6, -263, -263, -41, -20, - -27, -263, -263, -263, -263, -16, 1035, -263, -263, -263, - 33, 21, -263, -263, -34, -31, -263, 34, -263, -263, - -263, -263, -263, -263, -263, 1035, 907, -16, 1035, 1035, - -32, -7, -263, -263, -263, 1983, -263, -263, -263, -263, - -263, 122, 155, -263, -263, -263, -263, 540, 562, -263, - -263, 624, -263, -263, -263, 660, 995, 1003, 1063, -263, - -263, 35, 38, -263, -263, -263, -263, -263, -263, -263, - 40, 63, -16, 53, 59, 70, 81, 69, 79, 92, - 1269, 907, -263, 2066, 83, 94, -263, -263, -263, -263, - -263, -263, -263, 1035, 1035, 1035, 1035, 1035, 1035, 1035, - 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, - 1035, 1035, -263, 1099, -16, -263, -263, -263, 75, 97, - 1035, -16, -263, 742, -263, -263, 1035, 1035, -16, 1035, - 1035, -16, 1035, -263, 1035, 1713, 1035, -263, 1948, 163, - 163, 2097, 2107, 2179, 2179, -43, -43, -43, -43, 2138, - 557, 2148, -35, -35, -263, -263, -263, 1753, -263, -16, - 27, -263, 109, 834, 1035, 96, 116, 1227, 119, 121, - 125, 135, -66, 113, 128, 129, 971, 130, 142, 147, - -263, 145, 56, 56, -263, -263, 788, -263, -263, -263, - -263, -263, -263, -263, -263, -263, -263, -263, -263, -263, - -263, -263, -263, -263, -263, -263, -263, -263, -263, -263, - -263, -263, 143, 144, 146, 148, 160, -263, -263, 1147, - -263, -263, -263, -263, 17, 1793, 55, 157, 1833, 57, - 165, 1873, 1912, 161, 2066, 1035, -263, 109, -263, 1035, - -263, -263, 880, 2018, -263, 1035, 196, 1035, -10, -16, - 1035, 124, 164, 167, -263, -263, -263, -263, 2053, -263, - 1035, 1035, 1035, -263, -263, 931, 931, -263, -263, -263, - -263, -263, -263, -263, 179, 180, 181, 184, -263, -263, - 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, - 1035, 182, -263, 1035, 185, -263, 1035, 186, 1035, 192, - 2066, 61, -263, -263, -263, 1435, 198, 1469, 199, -263, - -263, -263, 1231, -2, 1503, -263, -263, -263, 65, 67, - 1713, 1035, 1035, 1035, 1035, 2066, 2066, 2066, 2066, 2066, - 2066, 2066, 2066, 2066, 2066, 2066, 208, 71, 210, 78, - 212, 1537, 1035, -263, 1227, 1035, 1227, 1035, 1035, -16, - 63, 204, 209, 1571, 1313, 1357, 1401, 1035, -263, 1035, - -263, 1035, -263, 85, 223, 1605, -263, 2066, 211, 1639, - 244, -263, -263, -263, 213, 215, 1035, 217, 1035, 218, - 1035, 87, 106, 114, -263, 1227, 219, -10, 1227, 1035, - -263, -263, 229, -263, 230, -263, 231, -263, -263, -263, - -263, -263, 238, -263, 1673, 232, 235, 236, 1227, 1227, - -263, -263, -263, -263, -263 + 6, -266, -266, -13, -13, -23, -266, -266, 39, 6, + -266, -266, -266, -266, -266, -266, -40, -266, -266, 11, + 20, -11, -266, -266, -266, -266, -38, 1079, -266, -266, + -266, 43, -3, -266, -266, -22, 31, -266, 46, -266, + -266, -266, -266, -266, -266, -266, 1079, 644, -38, 1079, + 1079, 60, -6, 45, -266, -266, -266, 2012, -266, -266, + -266, -266, -266, 476, 583, -266, -266, -266, -266, 836, + 841, -266, -266, 1039, -266, -266, -266, 1047, 1106, 1277, + 1285, -266, -266, 67, 49, -266, -266, -266, -266, -266, + -266, -266, 41, 64, -38, 65, 68, 83, 71, 72, + 91, 98, 1298, 644, -266, 2095, 76, 101, -266, -266, + -266, -266, -266, -266, -266, 1079, 1079, 1079, 1079, 1079, + 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, + 1079, 1079, 1079, 1079, 1142, -19, -266, -266, 108, 103, + 1079, -38, -266, 805, -266, -266, 1079, 1079, -38, 1079, + 1079, -38, 1079, -266, 1079, 1742, 1079, -266, 1977, 133, + 133, 2126, 2136, 212, 212, 74, 74, 74, 74, 2167, + 2208, 2177, -63, -63, -266, -266, -266, 1782, -266, -266, + -266, -38, -2, -266, 119, 934, 1079, 110, 127, 1265, + 128, 131, 132, 135, -58, 136, 126, 130, 1016, 134, + 141, 142, -266, 146, 50, 50, -266, -266, 881, -266, + -266, -266, -266, -266, -266, -266, -266, -266, -266, -266, + -266, -266, -266, -266, -266, -266, -266, -266, -266, -266, + -266, -266, -266, -266, 145, 148, 149, 150, 151, -266, + -266, 1189, -266, -266, -266, -266, 108, 1822, -1, 156, + 1862, 1, 164, 1902, 1941, 160, 2095, 1079, -266, 119, + -266, 1079, -266, -266, 987, 2047, -266, 1079, 171, 1079, + 397, -38, 1079, 129, 174, 176, -266, -266, -266, -266, + 2082, -266, 1079, 1079, 1079, -266, -266, 1299, 1299, -266, + -266, -266, -266, -266, -266, -266, 169, 180, 186, 187, + 105, -266, -266, 1079, 1079, 1079, 1079, 1079, 1079, 1079, + 1079, 1079, 1079, 1079, 184, -266, 1079, 188, -266, 1079, + 191, 1079, 192, 2095, 19, -266, -266, -266, 1464, 197, + 1498, 190, -266, -266, -266, -17, -15, 1532, -266, -266, + -266, 36, 58, 1742, 1079, 1079, 1079, 1079, 2095, 2095, + 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 198, + 59, 203, 77, 204, 1566, 1079, -266, 1265, 1079, 1265, + 1079, 1079, -38, 64, 199, 200, 1600, 1342, 1386, 1430, + 1079, -266, 1079, -266, 1079, -266, 78, 234, 1634, -266, + 2095, 201, 1668, 238, -266, -266, -266, 202, 207, 1079, + 211, 1079, 213, 1079, 79, 80, 92, -266, 1265, 214, + 397, 1265, 1079, -266, -266, 224, -266, 228, -266, 229, + -266, -266, -266, -266, -266, 237, -266, 1702, 230, 231, + 233, 1265, 1265, -266, -266, -266, -266, -266 }; const unsigned char parser::yydefact_[] = { - 3, 12, 13, 0, 0, 0, 205, 0, 2, 7, - 8, 9, 14, 15, 16, 0, 206, 207, 0, 0, - 0, 1, 4, 5, 6, 175, 0, 10, 11, 209, - 0, 0, 174, 204, 0, 0, 196, 0, 216, 215, - 198, 199, 200, 201, 202, 0, 177, 0, 0, 0, - 0, 0, 208, 212, 214, 0, 90, 91, 92, 129, - 130, 131, 132, 158, 159, 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, - 0, 0, 0, 0, 207, 0, 0, 207, 0, 0, - 0, 177, 197, 179, 0, 176, 180, 157, 156, 211, - 213, 203, 18, 0, 0, 0, 0, 0, 0, 0, + 3, 12, 13, 0, 0, 0, 206, 205, 0, 2, + 7, 8, 9, 14, 15, 16, 0, 208, 207, 0, + 0, 0, 1, 4, 5, 6, 175, 0, 10, 11, + 210, 0, 0, 174, 203, 0, 0, 195, 0, 217, + 216, 197, 198, 199, 200, 201, 0, 177, 0, 0, + 0, 0, 0, 205, 209, 213, 215, 0, 90, 91, + 92, 129, 130, 131, 132, 158, 159, 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, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 177, 196, 179, 0, 176, 180, 157, + 156, 212, 214, 202, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 185, 0, 0, 184, 160, 161, 207, 0, + 0, 0, 0, 0, 0, 0, 160, 161, 0, 0, 177, 0, 17, 0, 19, 173, 0, 177, 0, 0, - 177, 0, 0, 186, 0, 179, 0, 172, 0, 122, + 177, 0, 0, 185, 0, 179, 0, 172, 0, 122, 123, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 124, 125, 126, 127, 128, 0, 183, 0, - 0, 176, 181, 0, 0, 0, 0, 0, 0, 0, + 120, 121, 124, 125, 126, 127, 128, 0, 184, 204, + 183, 0, 0, 176, 181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 187, 188, 189, 190, 0, - 191, 192, 193, 194, 195, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 178, 0, 182, 0, 162, 177, - 51, 47, 0, 0, 71, 0, 0, 0, 57, 0, - 0, 0, 0, 0, 82, 83, 84, 86, 0, 87, - 177, 177, 0, 187, 188, 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, 164, 177, 0, 166, 177, 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, 177, 163, 0, 0, 0, 94, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 177, 165, 177, - 167, 177, 210, 0, 72, 0, 74, 93, 0, 0, - 0, 79, 88, 89, 0, 0, 177, 0, 177, 0, - 177, 0, 0, 0, 168, 0, 0, 57, 0, 0, - 63, 65, 176, 68, 176, 70, 176, 169, 170, 171, - 73, 75, 0, 77, 0, 0, 0, 0, 0, 0, - 64, 67, 69, 76, 78 + 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, 186, 187, 188, + 189, 0, 190, 191, 192, 193, 194, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 178, 0, 182, 0, + 162, 177, 51, 47, 0, 0, 71, 0, 0, 0, + 57, 0, 0, 0, 0, 0, 82, 83, 84, 86, + 0, 87, 177, 177, 0, 186, 187, 106, 108, 52, + 48, 60, 61, 62, 58, 59, 0, 0, 0, 0, + 0, 107, 109, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 164, 177, 0, 166, 177, + 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, 177, 163, 0, 0, 0, + 94, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 177, 165, 177, 167, 177, 211, 0, 72, 0, 74, + 93, 0, 0, 0, 79, 88, 89, 0, 0, 177, + 0, 177, 0, 177, 0, 0, 0, 168, 0, 0, + 57, 0, 0, 63, 65, 176, 68, 176, 70, 176, + 169, 170, 171, 73, 75, 0, 77, 0, 0, 0, + 0, 0, 0, 64, 67, 69, 76, 78 }; const short parser::yypgoto_[] = { - -263, -263, -263, 283, 290, 292, -263, -263, -263, 205, - 117, -263, -263, -263, -86, -87, -263, -263, -263, -263, - -263, -263, -263, -263, -263, -263, -263, -263, -263, -263, - -263, -263, -263, -263, -263, -263, -263, -263, -263, 188, - -263, -262, -261, -258, -263, -263, -263, -263, -263, -141, - -28, -57, -40, -263, -263, 262, -45, -263, -18, 156, - -263, -263, 239, -263, -263, -263, 248, 276, 321, 331, - -263, -263, 0, 9, -263, -11, -263, -263, 132, -263, - -263 + -266, -266, -266, 286, 289, 291, -266, -266, -266, -179, + 93, -266, -266, -266, -91, -108, -266, -266, -266, -266, + -266, -266, -266, -266, -266, -266, -266, -266, -266, -266, + -266, -266, -266, -266, -266, -266, -266, -266, -266, 196, + -266, -265, -255, -254, -266, -266, -266, -266, -266, -31, + -5, -69, -66, -266, -266, -26, -46, -266, 208, 266, + -266, -266, 306, -266, -266, -266, 340, 380, 389, 394, + -266, -266, -266, 0, 9, -266, -18, -266, -266, 114, + -266, -266 }; const short parser::yydefgoto_[] = { - 0, 7, 8, 9, 10, 11, 12, 13, 14, 204, - 205, 262, 206, 207, 208, 328, 209, 210, 211, 212, - 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, - 223, 224, 225, 226, 227, 228, 229, 230, 231, 103, - 388, 232, 233, 234, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 31, 104, 181, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89 + 0, 8, 9, 10, 11, 12, 13, 14, 15, 206, + 207, 264, 208, 209, 210, 331, 211, 212, 213, 214, + 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 227, 228, 229, 230, 231, 232, 233, 105, + 391, 234, 235, 236, 58, 59, 60, 61, 62, 63, + 64, 65, 66, 67, 32, 106, 183, 68, 69, 70, + 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 180, 83, 84, 85, 86, 87, 88, 89, + 90, 91 }; const short parser::yytable_[] = { - 15, 105, 235, 17, 17, 144, 329, 330, 15, 30, - 331, 21, 18, 19, 136, 1, 2, 3, 4, 5, - 27, 93, 114, 115, 96, 32, 271, 368, 20, 34, - 35, 137, 37, 29, 94, 97, 54, 41, 42, 43, - 44, 28, 235, 95, 98, 201, 235, 106, 127, 128, - 129, 130, 131, 202, 203, 369, 105, 25, 129, 130, - 131, 283, 283, 16, 6, 235, 16, 6, 140, 109, - 110, 138, 29, 91, -195, -195, -207, -195, 92, 258, - 139, -195, 6, 26, 156, 90, 140, 16, 6, 99, - -195, 111, 145, -195, -207, 34, 35, 141, 37, 16, - 6, 142, 6, 41, 42, 43, 44, 312, 146, 315, - 147, 201, 156, 363, 156, 236, 143, 371, 156, 372, - 150, 235, 156, 378, 156, 237, 140, 283, 156, 148, - 380, -195, -195, -195, 178, 156, 149, 404, 151, 417, - 156, 182, 156, 244, 156, 329, 330, 152, 247, 331, - 157, 250, 139, 16, 6, 236, 179, 264, 418, 236, - 259, -187, -187, 156, -187, 237, 419, 265, -187, 237, - 267, 156, 268, 274, 284, 284, 269, -187, 236, 257, - -187, 272, 136, 244, 237, 237, 270, 244, 237, 275, - 276, 279, 139, 280, -188, -188, 139, -188, 281, 137, - 282, -188, 244, 244, 289, 290, 244, 291, 313, 292, - -188, 139, 139, -188, 55, 139, 316, 319, -187, -187, - -187, 293, 326, 235, 335, 235, 110, 336, 136, 136, - 341, 342, 343, 100, 236, 344, 107, 108, 356, 138, - 284, 358, 360, 362, 237, 137, 137, 405, 139, 365, - 237, -188, -188, -188, 127, 128, 129, 130, 131, 377, - 367, 379, 244, 381, 235, 392, 283, 235, 244, 333, - 393, 139, 407, 409, 410, 136, 411, 139, 413, 415, - 421, 425, 426, 427, 391, 138, 138, 235, 235, 155, - 428, 22, 137, 430, 139, 139, 431, 432, 23, 238, - 24, 158, 159, 160, 161, 162, 163, 164, 165, 166, + 16, 107, 144, 31, 136, 332, 263, 137, 6, 16, + 268, 26, 19, 20, 371, 333, 334, 1, 2, 3, + 4, 5, 35, 36, 6, 38, 33, 178, 21, 6, + 131, 132, 133, 95, 273, 96, 99, 27, 134, 22, + 30, 300, 372, 56, 97, 100, 301, 302, 108, 93, + 260, 315, 6, 318, 94, 156, 156, 107, 156, 7, + 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, + 313, 366, 28, 138, 17, 53, 156, 6, 179, 17, + 53, 29, 139, 17, 18, 326, 98, 30, 374, 35, + 36, 113, 38, 156, 145, 92, 6, 42, 43, 44, + 45, 101, 142, 7, -207, 203, -194, -194, 141, -194, + 375, 381, 237, -194, 182, 156, 156, 143, 140, 147, + 146, 248, -194, 150, 251, -194, 149, 17, 53, 383, + 407, 420, 421, 156, 156, 156, 156, 156, 238, 116, + 117, 184, 148, 246, 422, 332, 17, 53, 249, 156, + 151, 252, 139, 152, 237, 333, 334, 157, 237, 140, + 111, 112, 181, -194, -194, 129, 130, 131, 132, 133, + 261, 266, 136, 285, 285, 137, 274, 237, 267, 269, + 238, 259, 270, 271, 238, 246, 272, 277, 387, 246, + 389, 278, 282, 283, 139, 281, 276, 329, 139, 286, + 286, 284, 179, 238, 246, 246, 291, 316, 246, 292, + 293, 294, 295, 139, 139, 319, 322, 139, 136, 136, + 344, 137, 137, 57, 129, 130, 131, 132, 133, 423, + 112, 345, 426, 237, 338, 324, 339, 346, 347, 285, + 359, 138, 102, 365, 361, 109, 110, 363, 368, 380, + 139, 370, 436, 437, 382, 384, 341, 342, 408, 238, + 395, 396, 410, 413, 246, 286, 136, 412, 414, 137, + 246, 336, 416, 139, 418, 424, 428, 116, 117, 139, + 429, 430, 394, 122, 123, 124, 125, 138, 138, 431, + 360, 433, 434, 362, 435, 23, 139, 139, 24, 155, + 25, 290, 425, 129, 130, 131, 132, 133, 275, 0, + 0, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 422, 177, 0, 288, 273, 0, 0, 0, 0, 0, - 0, 0, 138, 0, 245, 0, 236, 248, 236, 238, - 251, 139, 252, 238, 254, 0, 237, 0, 237, 0, - 0, 412, 0, 414, 0, 416, 0, 0, 238, 238, - 0, 0, 238, 0, 244, 0, 244, 0, 0, 390, - 0, 0, 263, 139, 0, 139, 0, 236, 0, 284, - 236, 0, 239, 0, 278, 0, 0, 237, 261, 237, - 237, 240, 266, 0, 0, 0, 0, 0, 0, 0, - 236, 236, 180, 0, 0, 244, 0, 244, 244, 246, - 237, 237, 249, 0, 139, 0, 139, 139, 238, 241, - 0, 0, 239, 0, 238, 0, 239, 0, 244, 244, - 0, 240, 0, 0, 0, 240, 0, 139, 139, 0, - 0, 285, 286, 320, 0, 239, 0, 0, 0, 0, - 240, 240, 0, 325, 240, 327, 0, 0, 334, 241, - 0, 0, 0, 241, 242, 0, 0, 323, 0, 0, - 340, 0, 0, 0, 243, 0, 0, 0, 241, 241, - 0, 0, 241, 0, 0, 0, 0, 0, 345, 346, - 347, 348, 349, 350, 351, 352, 353, 354, 355, 0, - 0, 239, 0, 0, 242, 0, 361, 332, 242, 0, - 240, 0, 0, 0, 243, 0, 240, 0, 243, 0, - 238, 321, 238, 242, 242, 0, 0, 242, 0, 373, - 374, 375, 376, 243, 243, 0, 0, 243, 241, 0, - 0, 0, 338, 339, 241, 0, 0, 0, 0, 0, - 0, 0, 0, 385, 0, 387, 389, 0, 0, 0, - 0, 238, 0, 238, 238, 0, 0, 0, 0, 384, - 0, 386, 0, 0, 0, 357, 0, 0, 359, -189, - -189, 0, -189, 242, 238, 238, -189, 0, 0, 242, - 0, 0, 0, 243, 0, -189, 0, 424, -189, 243, - 0, -190, -190, 239, -190, 239, 0, 0, -190, 0, - 420, 0, 240, 423, 240, 0, 0, -190, 0, 0, - -190, 0, 114, 115, 383, 0, 118, 119, 120, 121, - 122, 123, 0, 433, 434, 0, -189, -189, -189, 401, - 241, 402, 241, 403, 239, 0, 332, 239, 127, 128, - 129, 130, 131, 240, 0, 240, 240, 0, -190, -190, - -190, 0, 0, 34, 35, 0, 37, 239, 239, 0, - 132, 0, 0, 0, 0, 0, 240, 240, 0, 133, - 0, 241, 134, 241, 241, 242, 0, 242, 0, 0, - 0, 0, 0, 0, 0, 243, 0, 243, 0, -191, - -191, 0, -191, 0, 241, 241, -191, 0, 0, 0, - 0, 0, 0, 0, 0, -191, 0, 0, -191, 0, - 135, 16, 6, 0, 0, 0, 242, 0, 242, 242, - 0, 0, 0, 0, 0, 0, 243, 0, 243, 243, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 242, - 242, 0, 0, 183, 0, 0, -191, -191, -191, 243, - 243, 184, 0, 0, 185, 186, 0, 187, 188, 189, - 190, 0, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 34, 35, 0, 37, 0, 0, 0, 0, 41, - 42, 43, 44, 0, 0, 143, 200, 201, 0, 183, - 0, 0, 0, 0, 0, 202, 203, 184, 0, 0, - 185, 186, 0, 187, 188, 189, 190, 0, 191, 192, - 193, 194, 195, 196, 197, 198, 199, 34, 35, 0, - 37, 0, 0, 0, 0, 41, 42, 43, 44, 16, - 6, 143, 287, 201, 0, 0, 260, 0, 0, 0, - 0, 202, 203, 184, 0, 0, 185, 186, 0, 187, - 188, 189, 190, 0, 191, 192, 193, 194, 195, 196, - 197, 198, 199, 34, 35, 0, 37, 0, 0, 0, - 0, 41, 42, 43, 44, 16, 6, 143, 0, 201, - 0, 0, 322, 0, 0, 0, 0, 202, 203, 184, - 0, 0, 185, 186, 0, 187, 188, 189, 190, 0, - 191, 192, 193, 194, 195, 196, 197, 198, 199, 34, - 35, 0, 37, 33, 0, 0, 0, 41, 42, 43, - 44, 16, 6, 143, 0, 201, 0, 0, 0, 0, - 0, 0, 0, 202, 203, 0, 34, 35, 36, 37, - 38, 39, 40, 0, 41, 42, 43, 44, 45, 0, - 0, 0, 101, 102, 0, 0, 47, 0, 0, 0, - 34, 35, 0, 37, 0, 0, 0, 16, 6, 0, - 0, 0, 48, 49, 0, 0, 133, 33, 0, 134, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, - 0, 0, 51, 0, 16, 6, 29, 52, 53, 54, - 34, 35, 36, 37, 38, 39, 40, 0, 41, 42, - 43, 44, 45, 0, 0, 0, 46, 135, 16, 6, - 47, 0, 277, 0, -192, -192, 0, -192, 0, 0, - 0, -192, -193, -193, 0, -193, 48, 49, 0, -193, - -192, 33, 0, -192, 0, 0, 0, 0, -193, 0, - 0, -193, 0, 50, 0, 0, 51, 0, 16, 6, - 29, 52, 53, 54, 34, 35, 36, 37, 38, 39, - 40, 0, 41, 42, 43, 44, 45, 0, 0, 0, - 46, -192, -192, -192, 47, 0, 0, 0, 0, -193, - -193, -193, -194, -194, 0, -194, 0, 0, 0, -194, - 48, 49, 0, 0, 0, 33, 0, 0, -194, 0, - 0, -194, 0, 0, 0, 0, 0, 50, 0, 0, - 51, 0, 16, 6, 29, 52, 53, 54, 34, 35, - 36, 37, 38, 39, 40, 0, 41, 42, 43, 44, - 45, 0, 0, 0, 101, 0, 0, 0, 47, -194, - -194, -194, 0, 0, 294, 295, 0, 296, 297, 0, - 0, 0, 0, 0, 48, 49, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 34, 35, 0, 37, - 0, 50, 0, 0, 51, 0, 16, 6, 29, 52, - 53, 54, 133, 0, 0, 134, 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, 0, 0, 0, 0, - 0, 0, 0, 135, 16, 6, 184, 0, 0, 185, - 186, 0, 187, 188, 189, 190, 0, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 34, 35, 0, 37, - 34, 35, 0, 37, 41, 42, 43, 44, 0, 0, - 143, 0, 201, 0, 0, 0, 133, 0, 0, 134, - 202, 203, 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, - 0, 153, 0, 0, 16, 6, 154, 135, 16, 6, - 0, 113, 0, 0, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 124, 125, 126, - 127, 128, 129, 130, 131, 395, 0, 0, 0, 0, - 396, 0, 0, 0, 0, 113, 0, 0, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 0, 0, + 177, 0, 0, 0, 0, 138, 237, 0, 237, 386, + 0, 0, 247, 0, 139, 250, 0, 0, 253, 0, + 254, 239, 256, 415, 404, 417, 405, 419, 406, 0, + 0, 0, 238, 0, 238, 0, 0, 246, 0, 246, + 0, 0, 393, 0, 0, 0, 139, 237, 139, 285, + 237, 0, 265, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 239, 280, 0, 0, 239, 0, 0, + 237, 237, 0, 238, 0, 286, 238, 0, 246, 240, + 246, 246, 239, 239, 0, 0, 239, 139, 0, 139, + 139, 0, 0, 0, 0, 0, 238, 238, 0, 0, + 0, 246, 246, 0, 0, 0, 35, 36, 0, 38, + 139, 139, 0, 6, 42, 43, 44, 45, 0, 241, + 0, 240, 203, 323, 0, 240, 0, 0, 0, 0, + 204, 205, 0, 328, 0, 330, 0, 0, 337, 0, + 240, 240, 239, 0, 240, 0, 0, 0, 239, 0, + 343, 0, 0, 242, 0, 0, 0, 0, 0, 0, + 0, 241, 0, 17, 53, 241, 0, 0, 0, 348, + 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, + 287, 288, 0, 0, 241, -186, -186, 364, -186, 0, + 0, 0, -186, 243, 0, 242, 0, 0, 0, 242, + 240, -186, 244, 0, -186, 0, 240, 245, 0, 0, + 376, 377, 378, 379, 242, 242, 0, 0, 242, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 124, 125, 126, 127, 128, 129, 130, 131, 397, - 0, 0, 0, 0, 398, 0, 0, 0, 0, 113, - 0, 0, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 124, 125, 126, 127, 128, - 129, 130, 131, 399, 0, 0, 0, 0, 400, 0, - 0, 0, 0, 113, 0, 0, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 364, 0, 124, - 125, 126, 127, 128, 129, 130, 131, 113, 0, 0, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, + 0, 0, 0, 0, 388, 243, 390, 392, 0, 243, + 241, 0, -186, -186, 244, 239, 335, 239, 244, 245, + 0, 0, 0, 245, 243, 243, 0, 0, 243, 0, + 0, 0, 0, 244, 244, 0, 0, 244, 245, 245, + 0, 0, 245, 0, 242, 0, 0, 0, 427, 0, + 242, 0, 0, 0, 0, 0, 239, 0, 239, 239, + 0, 0, -187, -187, 0, -187, 0, 0, 0, -187, + 0, 0, 0, 240, 0, 240, 0, 0, -187, 239, + 239, -187, 0, 0, 243, 0, 0, 0, 0, 0, + 243, 0, 0, 244, 0, 0, 0, 0, 245, 244, + 34, 0, 0, 0, 245, 0, 0, 0, 0, 0, + 0, 0, 0, 241, 240, 241, 240, 240, 0, -187, + -187, 0, 0, 35, 36, 37, 38, 39, 40, 41, + 6, 42, 43, 44, 45, 46, 0, 240, 240, 103, + 104, 0, 0, 48, 0, 0, 0, 242, 0, 242, + 0, 0, 0, 0, 241, 0, 335, 241, 0, 49, + 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 51, 241, 241, 52, + 17, 53, 30, 54, 55, 56, 0, 243, 242, 243, + 242, 242, 0, 0, 0, 0, 244, 0, 244, 0, + 0, 245, 0, 245, 0, 0, 0, 0, 0, 0, + 0, 242, 242, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 243, 0, + 243, 243, 0, 0, 0, 0, 0, 244, 0, 244, + 244, 0, 245, 0, 245, 245, 0, 0, 0, 0, + 0, 243, 243, 0, 0, 0, 185, 0, 0, 0, + 244, 244, 0, 0, 186, 245, 245, 187, 188, 0, + 189, 190, 191, 192, 0, 193, 194, 195, 196, 197, + 198, 199, 200, 201, 35, 36, 0, 38, 0, 0, + 0, 6, 42, 43, 44, 45, 0, 0, 143, 202, + 203, 0, 0, 0, 0, 0, 0, 0, 204, 205, + 0, 0, 0, 0, 0, -188, -188, 0, -188, 0, + -189, -189, -188, -189, 0, 0, 0, -189, 0, 0, + 0, -188, 185, 0, -188, 0, -189, 0, 0, -189, + 186, 17, 53, 187, 188, 0, 189, 190, 191, 192, + 0, 193, 194, 195, 196, 197, 198, 199, 200, 201, + 35, 36, 0, 38, 0, 0, 0, 6, 42, 43, + 44, 45, -188, -188, 143, 289, 203, -189, -189, 0, + 0, 0, 0, 0, 204, 205, 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, 35, 36, 0, 38, 17, 53, 0, + 6, 42, 43, 44, 45, 0, 0, 143, 0, 203, + 0, 0, 0, 0, 0, 0, 0, 204, 205, 325, + 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, 35, 36, 0, 38, + 17, 53, 34, 6, 42, 43, 44, 45, 0, 0, + 143, 0, 203, 0, 0, 0, 0, 0, 0, 0, + 204, 205, 0, 0, 0, 35, 36, 37, 38, 39, + 40, 41, 6, 42, 43, 44, 45, 46, 0, 0, + 0, 47, 0, 0, 0, 48, 0, 279, 35, 36, + 0, 38, 0, 17, 53, 6, -190, -190, 0, -190, + 0, 49, 50, -190, 134, 34, 0, 135, 0, 0, + 0, 0, -190, 0, 0, -190, 0, 0, 51, 0, + 0, 52, 17, 53, 30, 54, 55, 56, 35, 36, + 37, 38, 39, 40, 41, 6, 42, 43, 44, 45, + 46, 0, 0, 0, 47, 17, 53, 0, 48, 0, + 0, 0, 0, -190, -190, -191, -191, 0, -191, 0, + 0, 0, -191, 0, 49, 50, 0, 0, 34, 0, + 0, -191, 0, 0, -191, 0, 0, 0, 0, 0, + 0, 51, 0, 0, 52, 17, 53, 30, 54, 55, + 56, 35, 36, 37, 38, 39, 40, 41, 6, 42, + 43, 44, 45, 46, 0, 0, 0, 103, 0, 0, + 0, 48, -191, -191, 0, 0, 296, 297, 0, 298, + 299, 0, 0, 0, 0, 0, 0, 49, 50, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 35, 36, + 0, 38, 0, 0, 51, 6, 0, 52, 17, 53, + 30, 54, 55, 56, 134, 0, 0, 300, 0, 0, + 0, 0, 301, 302, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, 313, 0, 0, 0, + 0, 0, 0, 0, 186, 17, 53, 187, 188, 0, + 189, 190, 191, 192, 0, 193, 194, 195, 196, 197, + 198, 199, 200, 201, 35, 36, 0, 38, 0, 0, + 0, 6, 42, 43, 44, 45, -192, -192, 143, -192, + 203, 0, 0, -192, -193, -193, 0, -193, 204, 205, + 0, -193, -192, 0, 0, -192, 0, 0, 35, 36, + -193, 38, 0, -193, 0, 6, 0, 0, 0, 0, + 153, 0, 0, 0, 134, 154, 0, 300, 0, 0, + 115, 17, 53, 116, 117, 118, 119, 120, 121, 122, + 123, 124, 125, -192, -192, 0, 0, 0, 0, 0, + 0, -193, -193, 0, 0, 0, 126, 127, 128, 129, + 130, 131, 132, 133, 398, 17, 53, 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, 0, 0, - 0, 366, 0, 124, 125, 126, 127, 128, 129, 130, - 131, 113, 0, 0, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 370, 0, 124, 125, 126, - 127, 128, 129, 130, 131, 113, 0, 0, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 382, - 0, 124, 125, 126, 127, 128, 129, 130, 131, 113, - 0, 0, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 394, 0, 124, 125, 126, 127, 128, - 129, 130, 131, 113, 0, 0, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 406, 0, 124, - 125, 126, 127, 128, 129, 130, 131, 113, 0, 0, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, + 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, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 367, 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, 408, 0, 124, 125, 126, 127, 128, 129, 130, - 131, 113, 0, 0, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 429, 0, 124, 125, 126, - 127, 128, 129, 130, 131, 113, 0, 0, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 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, 373, 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, 385, 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, 397, 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, 409, 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, 124, 125, 126, 127, 128, 129, 130, 131, 253, - 0, 0, 0, 0, 0, 113, 0, 0, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 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, 432, 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, 124, 125, 126, 127, 128, 129, 130, 131, 256, - 0, 0, 0, 0, 0, 113, 0, 0, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 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, - 0, 124, 125, 126, 127, 128, 129, 130, 131, 311, - 0, 0, 0, 0, 0, 113, 0, 0, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 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, - 0, 124, 125, 126, 127, 128, 129, 130, 131, 314, - 0, 0, 0, 0, 0, 113, 0, 0, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 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, - 0, 124, 125, 126, 127, 128, 129, 130, 131, 317, - 0, 0, 0, 0, 0, 113, 0, 0, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 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, - 0, 124, 125, 126, 127, 128, 129, 130, 131, 318, - 0, 0, 0, 0, 113, 0, 0, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 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, - 124, 125, 126, 127, 128, 129, 130, 131, 255, 0, - 113, 0, 0, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 124, 125, 126, 127, - 128, 129, 130, 131, 112, 113, 0, 0, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 0, 0, + 126, 127, 128, 129, 130, 131, 132, 133, 321, 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, - 0, 124, 125, 126, 127, 128, 129, 130, 131, 324, - 113, 0, 0, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 124, 125, 126, 127, - 128, 129, 130, 131, 337, 113, 0, 0, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 113, 0, - 0, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 0, - 0, 0, 0, 0, 124, 125, 126, 127, 128, 129, - 130, 131, 114, 115, 0, 117, 118, 119, 120, 121, - 122, 123, 114, 115, 0, 0, 118, 119, 120, 121, - 122, 123, 0, 0, 0, 124, 125, 126, 127, 128, - 129, 130, 131, 0, 0, 124, 125, 126, 127, 128, - 129, 130, 131, 114, 115, 0, 0, 118, 119, 120, - 121, 122, 123, 114, 115, 0, 0, 118, 119, 120, - 121, 122, 123, 0, 0, 0, 0, 125, 126, 127, - 128, 129, 130, 131, 0, 0, 0, 125, 0, 127, - 128, 129, 130, 131, 114, 115, 0, 0, 0, 0, - 120, 121, 122, 123, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 127, 128, 129, 130, 131 + 126, 127, 128, 129, 130, 131, 132, 133, 327, 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, 340, 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 }; const short parser::yycheck_[] = { - 0, 46, 143, 3, 4, 91, 268, 268, 8, 20, - 268, 0, 3, 4, 71, 11, 12, 13, 14, 15, - 61, 55, 65, 66, 55, 25, 92, 29, 51, 39, - 40, 71, 42, 99, 34, 35, 102, 47, 48, 49, - 50, 61, 183, 34, 35, 55, 187, 47, 91, 92, - 93, 94, 95, 63, 64, 57, 101, 51, 93, 94, - 95, 202, 203, 97, 98, 206, 97, 98, 51, 101, - 102, 71, 99, 52, 39, 40, 59, 42, 57, 52, - 71, 46, 98, 77, 57, 52, 51, 97, 98, 55, - 55, 98, 92, 58, 59, 39, 40, 59, 42, 97, - 98, 61, 98, 47, 48, 49, 50, 52, 55, 52, - 51, 55, 57, 52, 57, 143, 53, 52, 57, 52, - 51, 262, 57, 52, 57, 143, 51, 268, 57, 59, - 52, 96, 97, 98, 134, 57, 55, 52, 59, 52, - 57, 141, 57, 143, 57, 407, 407, 55, 148, 407, - 56, 151, 143, 97, 98, 183, 59, 61, 52, 187, - 51, 39, 40, 57, 42, 183, 52, 51, 46, 187, - 51, 57, 51, 60, 202, 203, 51, 55, 206, 179, - 58, 192, 239, 183, 202, 203, 51, 187, 206, 61, - 61, 61, 183, 51, 39, 40, 187, 42, 51, 239, - 55, 46, 202, 203, 61, 61, 206, 61, 51, 61, - 55, 202, 203, 58, 26, 206, 51, 56, 96, 97, - 98, 61, 26, 364, 60, 366, 102, 60, 285, 286, - 51, 51, 51, 45, 262, 51, 48, 49, 56, 239, - 268, 56, 56, 51, 262, 285, 286, 24, 239, 51, - 268, 96, 97, 98, 91, 92, 93, 94, 95, 51, - 61, 51, 262, 51, 405, 61, 407, 408, 268, 269, - 61, 262, 61, 29, 61, 332, 61, 268, 61, 61, - 61, 52, 52, 52, 370, 285, 286, 428, 429, 101, - 52, 8, 332, 61, 285, 286, 61, 61, 8, 143, - 8, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 407, 133, -1, 206, 192, -1, -1, -1, -1, -1, - -1, -1, 332, -1, 146, -1, 364, 149, 366, 183, - 152, 332, 154, 187, 156, -1, 364, -1, 366, -1, - -1, 396, -1, 398, -1, 400, -1, -1, 202, 203, - -1, -1, 206, -1, 364, -1, 366, -1, -1, 369, - -1, -1, 184, 364, -1, 366, -1, 405, -1, 407, - 408, -1, 143, -1, 196, -1, -1, 405, 183, 407, - 408, 143, 187, -1, -1, -1, -1, -1, -1, -1, - 428, 429, 140, -1, -1, 405, -1, 407, 408, 147, - 428, 429, 150, -1, 405, -1, 407, 408, 262, 143, - -1, -1, 183, -1, 268, -1, 187, -1, 428, 429, - -1, 183, -1, -1, -1, 187, -1, 428, 429, -1, - -1, 202, 203, 255, -1, 206, -1, -1, -1, -1, - 202, 203, -1, 265, 206, 267, -1, -1, 270, 183, - -1, -1, -1, 187, 143, -1, -1, 262, -1, -1, - 282, -1, -1, -1, 143, -1, -1, -1, 202, 203, - -1, -1, 206, -1, -1, -1, -1, -1, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, -1, - -1, 262, -1, -1, 183, -1, 318, 268, 187, -1, - 262, -1, -1, -1, 183, -1, 268, -1, 187, -1, - 364, 259, 366, 202, 203, -1, -1, 206, -1, 341, - 342, 343, 344, 202, 203, -1, -1, 206, 262, -1, - -1, -1, 280, 281, 268, -1, -1, -1, -1, -1, - -1, -1, -1, 365, -1, 367, 368, -1, -1, -1, - -1, 405, -1, 407, 408, -1, -1, -1, -1, 364, - -1, 366, -1, -1, -1, 313, -1, -1, 316, 39, - 40, -1, 42, 262, 428, 429, 46, -1, -1, 268, - -1, -1, -1, 262, -1, 55, -1, 409, 58, 268, - -1, 39, 40, 364, 42, 366, -1, -1, 46, -1, - 405, -1, 364, 408, 366, -1, -1, 55, -1, -1, - 58, -1, 65, 66, 362, -1, 69, 70, 71, 72, - 73, 74, -1, 428, 429, -1, 96, 97, 98, 377, - 364, 379, 366, 381, 405, -1, 407, 408, 91, 92, - 93, 94, 95, 405, -1, 407, 408, -1, 96, 97, - 98, -1, -1, 39, 40, -1, 42, 428, 429, -1, - 46, -1, -1, -1, -1, -1, 428, 429, -1, 55, - -1, 405, 58, 407, 408, 364, -1, 366, -1, -1, - -1, -1, -1, -1, -1, 364, -1, 366, -1, 39, - 40, -1, 42, -1, 428, 429, 46, -1, -1, -1, - -1, -1, -1, -1, -1, 55, -1, -1, 58, -1, - 96, 97, 98, -1, -1, -1, 405, -1, 407, 408, - -1, -1, -1, -1, -1, -1, 405, -1, 407, 408, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 428, - 429, -1, -1, 11, -1, -1, 96, 97, 98, 428, - 429, 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, -1, -1, 53, 54, 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, -1, 12, -1, -1, -1, - -1, 63, 64, 19, -1, -1, 22, 23, -1, 25, + 0, 47, 93, 21, 73, 270, 185, 73, 46, 9, + 189, 51, 3, 4, 29, 270, 270, 11, 12, 13, + 14, 15, 39, 40, 46, 42, 26, 46, 51, 46, + 93, 94, 95, 55, 92, 35, 36, 77, 55, 0, + 98, 58, 57, 101, 35, 36, 63, 64, 48, 52, + 52, 52, 46, 52, 57, 57, 57, 103, 57, 97, + 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, + 87, 52, 61, 73, 96, 97, 57, 46, 97, 96, + 97, 61, 73, 96, 97, 264, 55, 98, 52, 39, + 40, 97, 42, 57, 94, 52, 46, 47, 48, 49, + 50, 55, 61, 97, 59, 55, 39, 40, 59, 42, + 52, 52, 143, 46, 140, 57, 57, 53, 51, 51, + 55, 147, 55, 51, 150, 58, 55, 96, 97, 52, + 52, 52, 52, 57, 57, 57, 57, 57, 143, 65, + 66, 141, 59, 143, 52, 410, 96, 97, 148, 57, + 59, 151, 143, 55, 185, 410, 410, 56, 189, 51, + 100, 101, 59, 96, 97, 91, 92, 93, 94, 95, + 51, 61, 241, 204, 205, 241, 194, 208, 51, 51, + 185, 181, 51, 51, 189, 185, 51, 61, 367, 189, + 369, 61, 51, 51, 185, 61, 60, 26, 189, 204, + 205, 55, 97, 208, 204, 205, 61, 51, 208, 61, + 61, 61, 61, 204, 205, 51, 56, 208, 287, 288, + 51, 287, 288, 27, 91, 92, 93, 94, 95, 408, + 101, 51, 411, 264, 60, 261, 60, 51, 51, 270, + 56, 241, 46, 51, 56, 49, 50, 56, 51, 51, + 241, 61, 431, 432, 51, 51, 282, 283, 24, 264, + 61, 61, 61, 61, 264, 270, 335, 29, 61, 335, + 270, 271, 61, 264, 61, 61, 52, 65, 66, 270, + 52, 52, 373, 71, 72, 73, 74, 287, 288, 52, + 316, 61, 61, 319, 61, 9, 287, 288, 9, 103, + 9, 208, 410, 91, 92, 93, 94, 95, 194, -1, + -1, 115, 116, 117, 118, 119, 120, 121, 122, 123, + 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, + 134, -1, -1, -1, -1, 335, 367, -1, 369, 365, + -1, -1, 146, -1, 335, 149, -1, -1, 152, -1, + 154, 143, 156, 399, 380, 401, 382, 403, 384, -1, + -1, -1, 367, -1, 369, -1, -1, 367, -1, 369, + -1, -1, 372, -1, -1, -1, 367, 408, 369, 410, + 411, -1, 186, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 185, 198, -1, -1, 189, -1, -1, + 431, 432, -1, 408, -1, 410, 411, -1, 408, 143, + 410, 411, 204, 205, -1, -1, 208, 408, -1, 410, + 411, -1, -1, -1, -1, -1, 431, 432, -1, -1, + -1, 431, 432, -1, -1, -1, 39, 40, -1, 42, + 431, 432, -1, 46, 47, 48, 49, 50, -1, 143, + -1, 185, 55, 257, -1, 189, -1, -1, -1, -1, + 63, 64, -1, 267, -1, 269, -1, -1, 272, -1, + 204, 205, 264, -1, 208, -1, -1, -1, 270, -1, + 284, -1, -1, 143, -1, -1, -1, -1, -1, -1, + -1, 185, -1, 96, 97, 189, -1, -1, -1, 303, + 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, + 204, 205, -1, -1, 208, 39, 40, 321, 42, -1, + -1, -1, 46, 143, -1, 185, -1, -1, -1, 189, + 264, 55, 143, -1, 58, -1, 270, 143, -1, -1, + 344, 345, 346, 347, 204, 205, -1, -1, 208, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 368, 185, 370, 371, -1, 189, + 264, -1, 96, 97, 185, 367, 270, 369, 189, 185, + -1, -1, -1, 189, 204, 205, -1, -1, 208, -1, + -1, -1, -1, 204, 205, -1, -1, 208, 204, 205, + -1, -1, 208, -1, 264, -1, -1, -1, 412, -1, + 270, -1, -1, -1, -1, -1, 408, -1, 410, 411, + -1, -1, 39, 40, -1, 42, -1, -1, -1, 46, + -1, -1, -1, 367, -1, 369, -1, -1, 55, 431, + 432, 58, -1, -1, 264, -1, -1, -1, -1, -1, + 270, -1, -1, 264, -1, -1, -1, -1, 264, 270, + 16, -1, -1, -1, 270, -1, -1, -1, -1, -1, + -1, -1, -1, 367, 408, 369, 410, 411, -1, 96, + 97, -1, -1, 39, 40, 41, 42, 43, 44, 45, + 46, 47, 48, 49, 50, 51, -1, 431, 432, 55, + 56, -1, -1, 59, -1, -1, -1, 367, -1, 369, + -1, -1, -1, -1, 408, -1, 410, 411, -1, 75, + 76, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 92, 431, 432, 95, + 96, 97, 98, 99, 100, 101, -1, 367, 408, 369, + 410, 411, -1, -1, -1, -1, 367, -1, 369, -1, + -1, 367, -1, 369, -1, -1, -1, -1, -1, -1, + -1, 431, 432, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 408, -1, + 410, 411, -1, -1, -1, -1, -1, 408, -1, 410, + 411, -1, 408, -1, 410, 411, -1, -1, -1, -1, + -1, 431, 432, -1, -1, -1, 11, -1, -1, -1, + 431, 432, -1, -1, 19, 431, 432, 22, 23, -1, + 25, 26, 27, 28, -1, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, -1, 42, -1, -1, + -1, 46, 47, 48, 49, 50, -1, -1, 53, 54, + 55, -1, -1, -1, -1, -1, -1, -1, 63, 64, + -1, -1, -1, -1, -1, 39, 40, -1, 42, -1, + 39, 40, 46, 42, -1, -1, -1, 46, -1, -1, + -1, 55, 11, -1, 58, -1, 55, -1, -1, 58, + 19, 96, 97, 22, 23, -1, 25, 26, 27, 28, + -1, 30, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, -1, 42, -1, -1, -1, 46, 47, 48, + 49, 50, 96, 97, 53, 54, 55, 96, 97, -1, + -1, -1, -1, -1, 63, 64, 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, -1, -1, -1, - -1, 47, 48, 49, 50, 97, 98, 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, 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, -1, -1, -1, - 39, 40, -1, 42, -1, -1, -1, 97, 98, -1, - -1, -1, 75, 76, -1, -1, 55, 16, -1, 58, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 92, - -1, -1, 95, -1, 97, 98, 99, 100, 101, 102, - 39, 40, 41, 42, 43, 44, 45, -1, 47, 48, - 49, 50, 51, -1, -1, -1, 55, 96, 97, 98, - 59, -1, 61, -1, 39, 40, -1, 42, -1, -1, - -1, 46, 39, 40, -1, 42, 75, 76, -1, 46, - 55, 16, -1, 58, -1, -1, -1, -1, 55, -1, - -1, 58, -1, 92, -1, -1, 95, -1, 97, 98, - 99, 100, 101, 102, 39, 40, 41, 42, 43, 44, - 45, -1, 47, 48, 49, 50, 51, -1, -1, -1, - 55, 96, 97, 98, 59, -1, -1, -1, -1, 96, - 97, 98, 39, 40, -1, 42, -1, -1, -1, 46, - 75, 76, -1, -1, -1, 16, -1, -1, 55, -1, - -1, 58, -1, -1, -1, -1, -1, 92, -1, -1, - 95, -1, 97, 98, 99, 100, 101, 102, 39, 40, - 41, 42, 43, 44, 45, -1, 47, 48, 49, 50, - 51, -1, -1, -1, 55, -1, -1, -1, 59, 96, - 97, 98, -1, -1, 17, 18, -1, 20, 21, -1, - -1, -1, -1, -1, 75, 76, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 39, 40, -1, 42, - -1, 92, -1, -1, 95, -1, 97, 98, 99, 100, - 101, 102, 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, -1, -1, -1, -1, - -1, -1, -1, 96, 97, 98, 19, -1, -1, 22, + 36, 37, 38, 39, 40, -1, 42, 96, 97, -1, + 46, 47, 48, 49, 50, -1, -1, 53, -1, 55, + -1, -1, -1, -1, -1, -1, -1, 63, 64, 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, - 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, -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, 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, 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, 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, + 96, 97, 16, 46, 47, 48, 49, 50, -1, -1, + 53, -1, 55, -1, -1, -1, -1, -1, -1, -1, + 63, 64, -1, -1, -1, 39, 40, 41, 42, 43, + 44, 45, 46, 47, 48, 49, 50, 51, -1, -1, + -1, 55, -1, -1, -1, 59, -1, 61, 39, 40, + -1, 42, -1, 96, 97, 46, 39, 40, -1, 42, + -1, 75, 76, 46, 55, 16, -1, 58, -1, -1, + -1, -1, 55, -1, -1, 58, -1, -1, 92, -1, + -1, 95, 96, 97, 98, 99, 100, 101, 39, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, + 51, -1, -1, -1, 55, 96, 97, -1, 59, -1, + -1, -1, -1, 96, 97, 39, 40, -1, 42, -1, + -1, -1, 46, -1, 75, 76, -1, -1, 16, -1, + -1, 55, -1, -1, 58, -1, -1, -1, -1, -1, + -1, 92, -1, -1, 95, 96, 97, 98, 99, 100, + 101, 39, 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, -1, -1, -1, 55, -1, -1, + -1, 59, 96, 97, -1, -1, 17, 18, -1, 20, + 21, -1, -1, -1, -1, -1, -1, 75, 76, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 39, 40, + -1, 42, -1, -1, 92, 46, -1, 95, 96, 97, + 98, 99, 100, 101, 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, -1, -1, + -1, -1, -1, -1, 19, 96, 97, 22, 23, -1, + 25, 26, 27, 28, -1, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, -1, 42, -1, -1, + -1, 46, 47, 48, 49, 50, 39, 40, 53, 42, + 55, -1, -1, 46, 39, 40, -1, 42, 63, 64, + -1, 46, 55, -1, -1, 58, -1, -1, 39, 40, + 55, 42, -1, 58, -1, 46, -1, -1, -1, -1, + 52, -1, -1, -1, 55, 57, -1, 58, -1, -1, + 62, 96, 97, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 96, 97, -1, -1, -1, -1, -1, + -1, 96, 97, -1, -1, -1, 88, 89, 90, 91, + 92, 93, 94, 95, 52, 96, 97, -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, 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, + 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, 88, 89, 90, 91, 92, 93, 94, 95, -1, + 74, -1, -1, -1, -1, -1, -1, -1, -1, -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, 88, 89, 90, 91, 92, - 93, 94, 95, 65, 66, -1, -1, 69, 70, 71, - 72, 73, 74, 65, 66, -1, -1, 69, 70, 71, - 72, 73, 74, -1, -1, -1, -1, 89, 90, 91, - 92, 93, 94, 95, -1, -1, -1, 89, -1, 91, - 92, 93, 94, 95, 65, 66, -1, -1, -1, -1, - 71, 72, 73, 74, -1, -1, -1, -1, -1, -1, + 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, 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, - 91, 92, 93, 94, 95 + 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, 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, 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, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 88, 89, 90, 91, 92, + 93, 94, 95, 61, 62, -1, -1, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, 62, -1, -1, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 88, 89, 90, 91, 92, 93, 94, 95, -1, -1, + -1, -1, -1, 88, 89, 90, 91, 92, 93, 94, + 95, 65, 66, -1, 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, 88, 89, 90, 91, 92, 93, + 94, 95, 65, 66, -1, -1, 69, 70, 71, 72, + 73, 74, 65, 66, -1, -1, 69, 70, 71, 72, + 73, 74, -1, -1, -1, -1, 89, 90, 91, 92, + 93, 94, 95, -1, -1, -1, 89, -1, 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, -1, -1, 91, + 92, 93, 94, 95 }; const unsigned char parser::yystos_[] = { - 0, 11, 12, 13, 14, 15, 98, 113, 114, 115, - 116, 117, 118, 119, 120, 184, 97, 184, 185, 185, - 51, 0, 115, 116, 117, 51, 77, 61, 61, 99, - 187, 166, 184, 16, 39, 40, 41, 42, 43, 44, - 45, 47, 48, 49, 50, 51, 55, 59, 75, 76, - 92, 95, 100, 101, 102, 151, 156, 157, 158, 159, - 160, 161, 162, 163, 164, 165, 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, 184, 185, 55, 184, 185, 55, - 151, 55, 56, 151, 167, 168, 184, 151, 151, 101, - 102, 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, 163, 164, 184, 185, - 51, 59, 61, 53, 126, 184, 55, 51, 59, 55, + 0, 11, 12, 13, 14, 15, 46, 97, 113, 114, + 115, 116, 117, 118, 119, 120, 185, 96, 97, 186, + 186, 51, 0, 115, 116, 117, 51, 77, 61, 61, + 98, 188, 166, 185, 16, 39, 40, 41, 42, 43, + 44, 45, 47, 48, 49, 50, 51, 55, 59, 75, + 76, 92, 95, 97, 99, 100, 101, 151, 156, 157, + 158, 159, 160, 161, 162, 163, 164, 165, 169, 170, + 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, + 181, 182, 183, 185, 186, 187, 188, 189, 190, 191, + 192, 193, 52, 52, 57, 55, 185, 186, 55, 185, + 186, 55, 151, 55, 56, 151, 167, 168, 185, 151, + 151, 100, 101, 97, 61, 62, 65, 66, 67, 68, + 69, 70, 71, 72, 73, 74, 88, 89, 90, 91, + 92, 93, 94, 95, 55, 58, 163, 164, 185, 186, + 51, 59, 61, 53, 126, 185, 55, 51, 59, 55, 51, 59, 55, 52, 57, 151, 57, 56, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, - 151, 151, 151, 151, 151, 151, 151, 151, 184, 59, - 167, 168, 184, 11, 19, 22, 23, 25, 26, 27, - 28, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 54, 55, 63, 64, 121, 122, 124, 125, 126, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 153, 154, 155, 161, 162, 170, 171, 174, - 178, 179, 180, 181, 184, 151, 167, 184, 151, 167, - 184, 151, 151, 56, 151, 60, 56, 184, 52, 51, - 12, 121, 123, 151, 61, 51, 121, 51, 51, 51, - 51, 92, 187, 190, 60, 61, 61, 61, 151, 61, - 51, 51, 55, 161, 162, 174, 174, 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, - 151, 167, 12, 121, 61, 151, 26, 151, 127, 153, - 154, 155, 174, 184, 151, 60, 60, 61, 167, 167, - 151, 51, 51, 51, 51, 151, 151, 151, 151, 151, - 151, 151, 151, 151, 151, 151, 56, 167, 56, 167, - 56, 151, 51, 52, 52, 51, 52, 61, 29, 57, - 52, 52, 52, 151, 151, 151, 151, 51, 52, 51, - 52, 51, 52, 167, 121, 151, 121, 151, 152, 151, - 184, 126, 61, 61, 52, 52, 57, 52, 57, 52, - 57, 167, 167, 167, 52, 24, 52, 61, 52, 29, - 61, 61, 168, 61, 168, 61, 168, 52, 52, 52, - 121, 61, 127, 121, 151, 52, 52, 52, 52, 52, - 61, 61, 61, 121, 121 + 151, 151, 151, 151, 151, 151, 151, 151, 46, 97, + 184, 59, 167, 168, 185, 11, 19, 22, 23, 25, + 26, 27, 28, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 54, 55, 63, 64, 121, 122, 124, 125, + 126, 128, 129, 130, 131, 132, 133, 134, 135, 136, + 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, + 147, 148, 149, 150, 153, 154, 155, 161, 162, 170, + 171, 174, 178, 179, 180, 181, 185, 151, 167, 185, + 151, 167, 185, 151, 151, 56, 151, 60, 56, 185, + 52, 51, 12, 121, 123, 151, 61, 51, 121, 51, + 51, 51, 51, 92, 188, 191, 60, 61, 61, 61, + 151, 61, 51, 51, 55, 161, 162, 174, 174, 54, + 122, 61, 61, 61, 61, 61, 17, 18, 20, 21, + 58, 63, 64, 77, 78, 79, 80, 81, 82, 83, + 84, 85, 86, 87, 56, 52, 51, 56, 52, 51, + 56, 57, 56, 151, 167, 12, 121, 61, 151, 26, + 151, 127, 153, 154, 155, 174, 185, 151, 60, 60, + 61, 167, 167, 151, 51, 51, 51, 51, 151, 151, + 151, 151, 151, 151, 151, 151, 151, 151, 151, 56, + 167, 56, 167, 56, 151, 51, 52, 52, 51, 52, + 61, 29, 57, 52, 52, 52, 151, 151, 151, 151, + 51, 52, 51, 52, 51, 52, 167, 121, 151, 121, + 151, 152, 151, 185, 126, 61, 61, 52, 52, 57, + 52, 57, 52, 57, 167, 167, 167, 52, 24, 52, + 61, 52, 29, 61, 61, 168, 61, 168, 61, 168, + 52, 52, 52, 121, 61, 127, 121, 151, 52, 52, + 52, 52, 52, 61, 61, 61, 121, 121 }; const unsigned char @@ -4401,10 +4413,10 @@ namespace xsk { namespace gsc { namespace iw5 { 158, 158, 158, 158, 158, 158, 159, 160, 161, 161, 162, 162, 163, 163, 163, 163, 163, 163, 164, 164, 164, 164, 165, 166, 166, 166, 167, 167, 168, 168, - 169, 169, 170, 171, 171, 172, 173, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 185, 186, 187, - 188, 189, 189, 190, 190, 191, 192 + 169, 169, 170, 171, 172, 173, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 175, 176, 177, 178, 179, + 180, 181, 182, 183, 184, 185, 185, 186, 186, 187, + 188, 189, 190, 190, 191, 191, 192, 193 }; const signed char @@ -4428,10 +4440,10 @@ namespace xsk { namespace gsc { namespace iw5 { 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, - 7, 2, 1, 2, 1, 1, 1 + 2, 3, 4, 3, 3, 3, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, + 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, + 1, 7, 2, 1, 2, 1, 1, 1 }; @@ -4441,28 +4453,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, 331, 332, 336, 338, 343, 345, - 350, 351, 355, 356, 360, 362, 364, 367, 371, 373, - 378, 380, 382, 387, 392, 394, 399, 404, 406, 411, - 413, 418, 423, 428, 433, 438, 443, 448, 450, 455, - 460, 462, 467, 472, 477, 482, 484, 489, 494, 499, - 504, 505, 506, 510, 511, 515, 517, 519, 521, 523, - 525, 527, 529, 531, 533, 535, 540, 542, 547, 549, - 554, 559, 561, 563, 565, 567, 569, 571, 573, 575, - 577, 579, 581, 583, 585, 587, 589, 591, 593, 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, 816, 821, 823, 828, 833 + 0, 253, 253, 254, 258, 260, 262, 264, 266, 268, + 273, 277, 282, 283, 284, 285, 286, 290, 295, 300, + 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, + 325, 326, 327, 328, 332, 333, 337, 339, 344, 346, + 351, 352, 356, 357, 361, 363, 365, 368, 372, 374, + 379, 381, 383, 388, 393, 395, 400, 405, 407, 412, + 414, 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, 629, 634, 639, 640, + 643, 644, 648, 650, 652, 654, 656, 658, 663, 665, + 667, 669, 674, 679, 681, 684, 688, 691, 695, 697, + 702, 704, 709, 714, 719, 724, 729, 730, 731, 732, + 733, 734, 735, 736, 737, 741, 746, 751, 756, 761, + 766, 771, 776, 781, 786, 791, 793, 798, 800, 805, + 810, 815, 820, 822, 827, 829, 834, 839 }; void @@ -4495,9 +4507,9 @@ namespace xsk { namespace gsc { namespace iw5 { #line 13 "parser.ypp" } } } // xsk::gsc::iw5 -#line 4499 "parser.cpp" +#line 4511 "parser.cpp" -#line 837 "parser.ypp" +#line 843 "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 d9f7b08b..f1f680a7 100644 --- a/src/iw5/xsk/parser.hpp +++ b/src/iw5/xsk/parser.hpp @@ -474,6 +474,7 @@ namespace xsk { namespace gsc { namespace iw5 { // expr_game char dummy19[sizeof (ast::expr_game::ptr)]; + // expr_identifier_nosize // expr_identifier char dummy20[sizeof (ast::expr_identifier::ptr)]; @@ -615,7 +616,6 @@ namespace xsk { namespace gsc { namespace iw5 { // stmt_while char dummy65[sizeof (ast::stmt_while::ptr)]; - // "field" // "path" // "identifier" // "string literal" @@ -717,7 +717,7 @@ namespace xsk { namespace gsc { namespace iw5 { TRUE = 43, // "true" FALSE = 44, // "false" UNDEFINED = 45, // "undefined" - SIZE = 46, // ".size" + SIZE = 46, // "size" GAME = 47, // "game" SELF = 48, // "self" ANIM = 49, // "anim" @@ -767,13 +767,13 @@ namespace xsk { namespace gsc { namespace iw5 { MUL = 93, // "*" DIV = 94, // "/" MOD = 95, // "%" - FIELD = 96, // "field" - PATH = 97, // "path" - IDENTIFIER = 98, // "identifier" - STRING = 99, // "string literal" - ISTRING = 100, // "localized string" - FLOAT = 101, // "float" - INTEGER = 102, // "integer" + PATH = 96, // "path" + IDENTIFIER = 97, // "identifier" + STRING = 98, // "string literal" + ISTRING = 99, // "localized string" + FLOAT = 100, // "float" + INTEGER = 101, // "integer" + SIZEOF = 102, // SIZEOF ADD_ARRAY = 103, // ADD_ARRAY THEN = 104, // THEN TERN = 105, // TERN @@ -847,7 +847,7 @@ namespace xsk { namespace gsc { namespace iw5 { S_TRUE = 43, // "true" S_FALSE = 44, // "false" S_UNDEFINED = 45, // "undefined" - S_SIZE = 46, // ".size" + S_SIZE = 46, // "size" S_GAME = 47, // "game" S_SELF = 48, // "self" S_ANIM = 49, // "anim" @@ -897,13 +897,13 @@ namespace xsk { namespace gsc { namespace iw5 { S_MUL = 93, // "*" S_DIV = 94, // "/" S_MOD = 95, // "%" - S_FIELD = 96, // "field" - S_PATH = 97, // "path" - S_IDENTIFIER = 98, // "identifier" - S_STRING = 99, // "string literal" - S_ISTRING = 100, // "localized string" - S_FLOAT = 101, // "float" - S_INTEGER = 102, // "integer" + S_PATH = 96, // "path" + S_IDENTIFIER = 97, // "identifier" + S_STRING = 98, // "string literal" + S_ISTRING = 99, // "localized string" + S_FLOAT = 100, // "float" + S_INTEGER = 101, // "integer" + S_SIZEOF = 102, // SIZEOF S_ADD_ARRAY = 103, // ADD_ARRAY S_THEN = 104, // THEN S_TERN = 105, // TERN @@ -985,15 +985,16 @@ namespace xsk { namespace gsc { namespace iw5 { S_expr_level = 181, // expr_level S_expr_animation = 182, // expr_animation S_expr_animtree = 183, // expr_animtree - S_expr_identifier = 184, // expr_identifier - S_expr_path = 185, // expr_path - S_expr_istring = 186, // expr_istring - S_expr_string = 187, // expr_string - 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_expr_identifier_nosize = 184, // expr_identifier_nosize + 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_vector = 189, // expr_vector + S_expr_float = 190, // expr_float + S_expr_integer = 191, // expr_integer + S_expr_false = 192, // expr_false + S_expr_true = 193 // expr_true }; }; @@ -1116,6 +1117,7 @@ namespace xsk { namespace gsc { namespace iw5 { value.move< ast::expr_game::ptr > (std::move (that.value)); break; + case symbol_kind::S_expr_identifier_nosize: // expr_identifier_nosize case symbol_kind::S_expr_identifier: // expr_identifier value.move< ast::expr_identifier::ptr > (std::move (that.value)); break; @@ -1303,7 +1305,6 @@ namespace xsk { namespace gsc { namespace iw5 { value.move< ast::stmt_while::ptr > (std::move (that.value)); break; - case symbol_kind::S_FIELD: // "field" case symbol_kind::S_PATH: // "path" case symbol_kind::S_IDENTIFIER: // "identifier" case symbol_kind::S_STRING: // "string literal" @@ -2368,6 +2369,7 @@ switch (yykind) value.template destroy< ast::expr_game::ptr > (); break; + case symbol_kind::S_expr_identifier_nosize: // expr_identifier_nosize case symbol_kind::S_expr_identifier: // expr_identifier value.template destroy< ast::expr_identifier::ptr > (); break; @@ -2555,7 +2557,6 @@ switch (yykind) value.template destroy< ast::stmt_while::ptr > (); break; - case symbol_kind::S_FIELD: // "field" case symbol_kind::S_PATH: // "path" case symbol_kind::S_IDENTIFIER: // "identifier" case symbol_kind::S_STRING: // "string literal" @@ -2661,7 +2662,7 @@ switch (yykind) { IW5_ASSERT (tok == token::IW5EOF || (token::IW5error <= tok && tok <= token::MOD) - || (token::ADD_ARRAY <= tok && tok <= token::POSTDEC)); + || (token::SIZEOF <= tok && tok <= token::POSTDEC)); } #if 201103L <= YY_CPLUSPLUS symbol_type (int tok, std::string v, location_type l) @@ -2671,7 +2672,7 @@ switch (yykind) : super_type(token_type (tok), v, l) #endif { - IW5_ASSERT ((token::FIELD <= tok && tok <= token::INTEGER)); + IW5_ASSERT ((token::PATH <= tok && tok <= token::INTEGER)); } }; @@ -4161,21 +4162,6 @@ switch (yykind) return symbol_type (token::MOD, l); } #endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_FIELD (std::string v, location_type l) - { - return symbol_type (token::FIELD, std::move (v), std::move (l)); - } -#else - static - symbol_type - make_FIELD (const std::string& v, const location_type& l) - { - return symbol_type (token::FIELD, v, l); - } -#endif #if 201103L <= YY_CPLUSPLUS static symbol_type @@ -4266,6 +4252,21 @@ switch (yykind) return symbol_type (token::INTEGER, v, l); } #endif +#if 201103L <= YY_CPLUSPLUS + static + symbol_type + make_SIZEOF (location_type l) + { + return symbol_type (token::SIZEOF, std::move (l)); + } +#else + static + symbol_type + make_SIZEOF (const location_type& l) + { + return symbol_type (token::SIZEOF, l); + } +#endif #if 201103L <= YY_CPLUSPLUS static symbol_type @@ -4745,9 +4746,9 @@ switch (yykind) /// Constants. enum { - yylast_ = 2274, ///< Last index in yytable_. - yynnts_ = 81, ///< Number of nonterminal symbols. - yyfinal_ = 21 ///< Termination state number. + yylast_ = 2303, ///< Last index in yytable_. + yynnts_ = 82, ///< Number of nonterminal symbols. + yyfinal_ = 22 ///< Termination state number. }; @@ -4859,6 +4860,7 @@ switch (yykind) value.copy< ast::expr_game::ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_expr_identifier_nosize: // expr_identifier_nosize case symbol_kind::S_expr_identifier: // expr_identifier value.copy< ast::expr_identifier::ptr > (YY_MOVE (that.value)); break; @@ -5046,7 +5048,6 @@ switch (yykind) value.copy< ast::stmt_while::ptr > (YY_MOVE (that.value)); break; - case symbol_kind::S_FIELD: // "field" case symbol_kind::S_PATH: // "path" case symbol_kind::S_IDENTIFIER: // "identifier" case symbol_kind::S_STRING: // "string literal" @@ -5171,6 +5172,7 @@ switch (yykind) value.move< ast::expr_game::ptr > (YY_MOVE (s.value)); break; + case symbol_kind::S_expr_identifier_nosize: // expr_identifier_nosize case symbol_kind::S_expr_identifier: // expr_identifier value.move< ast::expr_identifier::ptr > (YY_MOVE (s.value)); break; @@ -5358,7 +5360,6 @@ switch (yykind) value.move< ast::stmt_while::ptr > (YY_MOVE (s.value)); break; - case symbol_kind::S_FIELD: // "field" case symbol_kind::S_PATH: // "path" case symbol_kind::S_IDENTIFIER: // "identifier" case symbol_kind::S_STRING: // "string literal" @@ -5431,7 +5432,7 @@ switch (yykind) #line 13 "parser.ypp" } } } // xsk::gsc::iw5 -#line 5435 "parser.hpp" +#line 5436 "parser.hpp" diff --git a/src/iw6/xsk/lexer.cpp b/src/iw6/xsk/lexer.cpp index 7627f7e6..76b628fa 100644 --- a/src/iw6/xsk/lexer.cpp +++ b/src/iw6/xsk/lexer.cpp @@ -59,6 +59,7 @@ const std::unordered_map keywo { "true", parser::token::TRUE }, { "false", parser::token::FALSE }, { "undefined", parser::token::UNDEFINED }, + { "size", parser::token::SIZE }, { "game", parser::token::GAME }, { "self", parser::token::SELF }, { "anim", parser::token::ANIM }, @@ -84,8 +85,8 @@ bool buffer::push(char c) return true; } -reader::reader() : state(reader::end), buffer_pos(0), bytes_remaining(0), - last_byte(0), current_byte(0) { } +reader::reader() : state(reader::end), buffer_pos(0), + bytes_remaining(0), last_byte(0), current_byte(0) {} void reader::init(const char* data, size_t size) { @@ -173,7 +174,6 @@ auto lexer::lex() -> parser::symbol_type { buffer_.length = 0; state_ = state::start; - loc_.step(); while (true) { @@ -181,6 +181,7 @@ auto lexer::lex() -> parser::symbol_type auto& last = reader_.last_byte; auto& curr = reader_.current_byte; auto path = false; + loc_.step(); if (state == reader::end) { @@ -213,7 +214,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 != '*' && curr != '/') return parser::make_DIV(loc_); advance(); @@ -245,14 +246,35 @@ auto lexer::lex() -> parser::symbol_type } else if (last == '#' && curr == '/') { - reader_.advance(); + advance(); break; } - reader_.advance(); + advance(); } } } + else if (last == '@') + { + while (true) + { + if (state == reader::end) + throw comp_error(loc_, "unmatched script doc comment start ('/@')"); + + if (curr == '\n') + { + loc_.lines(); + loc_.step(); + } + else if (last == '@' && curr == '/') + { + advance(); + break; + } + + advance(); + } + } else if (last == '*') { while (true) @@ -267,11 +289,11 @@ auto lexer::lex() -> parser::symbol_type } else if (last == '*' && curr == '/') { - reader_.advance(); + advance(); break; } - reader_.advance(); + advance(); } } else if (last == '/') @@ -281,30 +303,10 @@ auto lexer::lex() -> parser::symbol_type if (state == reader::end) break; - if (last == '\\' && (curr == '\r' || curr == '\n')) - { - reader_.advance(); - - if (state == reader::end) - break; - - if (last == '\r') - { - if (curr != '\n') - throw comp_error(loc_, "invalid token ('\')"); - - reader_.advance(); - } - - loc_.lines(); - loc_.step(); - continue; - } - if (curr == '\n') break; - reader_.advance(); + advance(); } } continue; @@ -314,8 +316,8 @@ auto lexer::lex() -> parser::symbol_type if (!indev_) throw comp_error(loc_, "unmatched devblock end ('#/')"); - indev_ = false; advance(); + indev_ = false; return parser::make_DEVEND(loc_); } @@ -336,7 +338,7 @@ auto lexer::lex() -> parser::symbol_type state_ = state::preprocessor; goto lex_name; case '*': - if (curr != '/' && curr != '=') + if (curr != '=' && curr != '/') return parser::make_MUL(loc_); advance(); @@ -349,13 +351,9 @@ auto lexer::lex() -> parser::symbol_type state_ = state::string; goto lex_string; case '.': - advance(); - - if (state == reader::end) - throw comp_error(loc_, "unterminated field ('.')"); - - state_ = state::field; - goto lex_name_or_number; + if (curr < '0' || curr > '9') + return parser::make_DOT(loc_); + goto lex_number; case '(': return parser::make_LPAREN(loc_); case ')': @@ -479,7 +477,6 @@ auto lexer::lex() -> parser::symbol_type advance(); return parser::make_ASSIGN_RSHIFT(loc_); default: -lex_name_or_number: if (last >= '0' && last <= '9') goto lex_number; else if (last == '_' || last >= 'A' && last <= 'Z' || last >= 'a' && last <= 'z') @@ -561,23 +558,8 @@ lex_name: advance(); } - if (state_ == state::field) + if (state_ == state::preprocessor) { - if (path) - throw comp_error(loc_, "invalid field token '\\'"); - - if (std::string_view(buffer_.data, buffer_.length) == "size") - { - return parser::make_SIZE(loc_); - } - - return parser::make_FIELD(std::string(buffer_.data, buffer_.length), loc_); - } - else if (state_ == state::preprocessor) - { - if (path) - throw comp_error(loc_, "invalid preprocessor directive"); - auto token = parser::token::IW6UNDEF; if (buffer_.length < 16) @@ -593,7 +575,8 @@ lex_name: } } - preprocessor(token); + preprocessor_run(token); + state_ = state::start; continue; } @@ -619,14 +602,11 @@ lex_name: } lex_number: - if (state_ == state::field) - buffer_.push('.'); - - if (state_ == state::field || last == '.' || last != '0' || (last == '0' && (curr != 'o' && curr != 'b' && curr != 'x'))) + if (last == '.' || last != '0' || (last == '0' && (curr != 'o' && curr != 'b' && curr != 'x'))) { buffer_.push(last); - auto dot = 0; + auto dot = last == '.' ? 1 : 0; auto flt = 0; while (true) @@ -662,10 +642,10 @@ lex_number: if (last == '\'') throw comp_error(loc_, "invalid number literal"); - if (state_ == state::field && dot || dot > 1 || flt > 1 || flt && buffer_.data[buffer_.length - 1] != 'f') + if (dot > 1 || flt > 1 || flt && buffer_.data[buffer_.length - 1] != 'f') throw comp_error(loc_, "invalid number literal"); - if (state_ == state::field || dot || flt) + if (dot || flt) return parser::make_FLOAT(std::string(buffer_.data, buffer_.length), loc_); return parser::make_INTEGER(std::string(buffer_.data, buffer_.length), loc_); @@ -680,7 +660,7 @@ lex_number: break; if (curr == '\'' && (last == '\'' || last == 'o') || (curr == 'o' && last == '\'')) - throw comp_error(loc_, "invalid octal literal"); + throw comp_error(loc_, "invalid octal literal"); if (curr == '\'') { @@ -770,18 +750,22 @@ lex_number: return parser::make_INTEGER(xsk::utils::string::hex_to_dec(buffer_.data), loc_); } - // cant get here! + + throw error("UNEXPECTED LEXER INTERNAL ERROR!"); } } void lexer::advance() { reader_.advance(); + loc_.end.column++; - // dont wrap comment marks '/\/' '/\*' outside strings - if (state_ == state::start && reader_.last_byte == '/') - return; + if (reader_.current_byte == '\\') [[unlikely]] + preprocessor_wrap(); +} +void lexer::preprocessor_wrap() +{ while (reader_.current_byte == '\\') { if (reader_.bytes_remaining == 1) @@ -823,7 +807,7 @@ void lexer::advance() } } -void lexer::preprocessor(parser::token::token_kind_type token) +void lexer::preprocessor_run(parser::token::token_kind_type token) { if (!clean_) throw comp_error(loc_, "invalid token ('#')"); diff --git a/src/iw6/xsk/lexer.hpp b/src/iw6/xsk/lexer.hpp index 13c0ee00..1dc40715 100644 --- a/src/iw6/xsk/lexer.hpp +++ b/src/iw6/xsk/lexer.hpp @@ -44,7 +44,7 @@ struct reader class lexer { - enum class state : std::uint8_t { start, string, localize, field, preprocessor }; + enum class state : std::uint8_t { start, string, localize, preprocessor }; reader reader_; buffer buffer_; @@ -66,7 +66,8 @@ public: private: void advance(); - void preprocessor(parser::token::token_kind_type token); + void preprocessor_wrap(); + void preprocessor_run(parser::token::token_kind_type token); }; } // namespace xsk::gsc::iw6 diff --git a/src/iw6/xsk/parser.cpp b/src/iw6/xsk/parser.cpp index 67a1f406..a1e17e2b 100644 --- a/src/iw6/xsk/parser.cpp +++ b/src/iw6/xsk/parser.cpp @@ -301,6 +301,7 @@ namespace xsk { namespace gsc { namespace iw6 { value.YY_MOVE_OR_COPY< ast::expr_game::ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_expr_identifier_nosize: // expr_identifier_nosize case symbol_kind::S_expr_identifier: // expr_identifier value.YY_MOVE_OR_COPY< ast::expr_identifier::ptr > (YY_MOVE (that.value)); break; @@ -488,7 +489,6 @@ namespace xsk { namespace gsc { namespace iw6 { value.YY_MOVE_OR_COPY< ast::stmt_while::ptr > (YY_MOVE (that.value)); break; - case symbol_kind::S_FIELD: // "field" case symbol_kind::S_PATH: // "path" case symbol_kind::S_IDENTIFIER: // "identifier" case symbol_kind::S_STRING: // "string literal" @@ -599,6 +599,7 @@ namespace xsk { namespace gsc { namespace iw6 { value.move< ast::expr_game::ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_expr_identifier_nosize: // expr_identifier_nosize case symbol_kind::S_expr_identifier: // expr_identifier value.move< ast::expr_identifier::ptr > (YY_MOVE (that.value)); break; @@ -786,7 +787,6 @@ namespace xsk { namespace gsc { namespace iw6 { value.move< ast::stmt_while::ptr > (YY_MOVE (that.value)); break; - case symbol_kind::S_FIELD: // "field" case symbol_kind::S_PATH: // "path" case symbol_kind::S_IDENTIFIER: // "identifier" case symbol_kind::S_STRING: // "string literal" @@ -897,6 +897,7 @@ namespace xsk { namespace gsc { namespace iw6 { value.copy< ast::expr_game::ptr > (that.value); break; + case symbol_kind::S_expr_identifier_nosize: // expr_identifier_nosize case symbol_kind::S_expr_identifier: // expr_identifier value.copy< ast::expr_identifier::ptr > (that.value); break; @@ -1084,7 +1085,6 @@ namespace xsk { namespace gsc { namespace iw6 { value.copy< ast::stmt_while::ptr > (that.value); break; - case symbol_kind::S_FIELD: // "field" case symbol_kind::S_PATH: // "path" case symbol_kind::S_IDENTIFIER: // "identifier" case symbol_kind::S_STRING: // "string literal" @@ -1194,6 +1194,7 @@ namespace xsk { namespace gsc { namespace iw6 { value.move< ast::expr_game::ptr > (that.value); break; + case symbol_kind::S_expr_identifier_nosize: // expr_identifier_nosize case symbol_kind::S_expr_identifier: // expr_identifier value.move< ast::expr_identifier::ptr > (that.value); break; @@ -1381,7 +1382,6 @@ namespace xsk { namespace gsc { namespace iw6 { value.move< ast::stmt_while::ptr > (that.value); break; - case symbol_kind::S_FIELD: // "field" case symbol_kind::S_PATH: // "path" case symbol_kind::S_IDENTIFIER: // "identifier" case symbol_kind::S_STRING: // "string literal" @@ -1746,6 +1746,7 @@ namespace xsk { namespace gsc { namespace iw6 { yylhs.value.emplace< ast::expr_game::ptr > (); break; + case symbol_kind::S_expr_identifier_nosize: // expr_identifier_nosize case symbol_kind::S_expr_identifier: // expr_identifier yylhs.value.emplace< ast::expr_identifier::ptr > (); break; @@ -1933,7 +1934,6 @@ namespace xsk { namespace gsc { namespace iw6 { yylhs.value.emplace< ast::stmt_while::ptr > (); break; - case symbol_kind::S_FIELD: // "field" case symbol_kind::S_PATH: // "path" case symbol_kind::S_IDENTIFIER: // "identifier" case symbol_kind::S_STRING: // "string literal" @@ -1964,1297 +1964,1303 @@ namespace xsk { namespace gsc { namespace iw6 { switch (yyn) { case 2: // root: program -#line 252 "parser.ypp" +#line 253 "parser.ypp" { ast = std::move(yystack_[0].value.as < ast::program::ptr > ()); } #line 1970 "parser.cpp" break; case 3: // root: %empty -#line 253 "parser.ypp" +#line 254 "parser.ypp" { ast = std::make_unique(yylhs.location); } #line 1976 "parser.cpp" break; case 4: // program: program inline -#line 258 "parser.ypp" +#line 259 "parser.ypp" { yylhs.value.as < ast::program::ptr > () = std::move(yystack_[1].value.as < ast::program::ptr > ()); } #line 1982 "parser.cpp" break; case 5: // program: program include -#line 260 "parser.ypp" +#line 261 "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" break; case 6: // program: program declaration -#line 262 "parser.ypp" +#line 263 "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" break; case 7: // program: inline -#line 264 "parser.ypp" +#line 265 "parser.ypp" { yylhs.value.as < ast::program::ptr > () = std::make_unique(yylhs.location); } #line 2000 "parser.cpp" break; case 8: // program: include -#line 266 "parser.ypp" +#line 267 "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" break; case 9: // program: declaration -#line 268 "parser.ypp" +#line 269 "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" break; case 10: // inline: "#inline" expr_path ";" -#line 272 "parser.ypp" +#line 273 "parser.ypp" { lexer.push_header(yystack_[1].value.as < ast::expr_path::ptr > ()->value); } #line 2018 "parser.cpp" break; case 11: // include: "#include" expr_path ";" -#line 277 "parser.ypp" +#line 278 "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" break; case 12: // declaration: "/#" -#line 281 "parser.ypp" +#line 282 "parser.ypp" { yylhs.value.as < ast::decl > ().as_dev_begin = std::make_unique(yylhs.location); } #line 2030 "parser.cpp" break; case 13: // declaration: "#/" -#line 282 "parser.ypp" +#line 283 "parser.ypp" { yylhs.value.as < ast::decl > ().as_dev_end = std::make_unique(yylhs.location); } #line 2036 "parser.cpp" break; case 14: // declaration: decl_usingtree -#line 283 "parser.ypp" +#line 284 "parser.ypp" { yylhs.value.as < ast::decl > ().as_usingtree = std::move(yystack_[0].value.as < ast::decl_usingtree::ptr > ()); } #line 2042 "parser.cpp" break; case 15: // declaration: decl_constant -#line 284 "parser.ypp" +#line 285 "parser.ypp" { yylhs.value.as < ast::decl > ().as_constant = std::move(yystack_[0].value.as < ast::decl_constant::ptr > ()); } #line 2048 "parser.cpp" break; case 16: // declaration: decl_thread -#line 285 "parser.ypp" +#line 286 "parser.ypp" { yylhs.value.as < ast::decl > ().as_thread = std::move(yystack_[0].value.as < ast::decl_thread::ptr > ()); } #line 2054 "parser.cpp" break; case 17: // decl_usingtree: "#using_animtree" "(" expr_string ")" ";" -#line 290 "parser.ypp" +#line 291 "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" break; case 18: // decl_constant: expr_identifier "=" expr ";" -#line 295 "parser.ypp" +#line 296 "parser.ypp" { yylhs.value.as < ast::decl_constant::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr > ())); } #line 2066 "parser.cpp" break; case 19: // decl_thread: expr_identifier "(" expr_parameters ")" stmt_block -#line 300 "parser.ypp" +#line 301 "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" break; case 20: // stmt: stmt_block -#line 304 "parser.ypp" +#line 305 "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_call -#line 305 "parser.ypp" +#line 306 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_call = std::move(yystack_[0].value.as < ast::stmt_call::ptr > ()); } #line 2084 "parser.cpp" break; case 22: // stmt: stmt_assign -#line 306 "parser.ypp" +#line 307 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_assign = std::move(yystack_[0].value.as < ast::stmt_assign::ptr > ()); } #line 2090 "parser.cpp" break; case 23: // stmt: stmt_endon -#line 307 "parser.ypp" +#line 308 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_endon = std::move(yystack_[0].value.as < ast::stmt_endon::ptr > ()); } #line 2096 "parser.cpp" break; case 24: // stmt: stmt_notify -#line 308 "parser.ypp" +#line 309 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_notify = std::move(yystack_[0].value.as < ast::stmt_notify::ptr > ()); } #line 2102 "parser.cpp" break; case 25: // stmt: stmt_wait -#line 309 "parser.ypp" +#line 310 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_wait = std::move(yystack_[0].value.as < ast::stmt_wait::ptr > ()); } #line 2108 "parser.cpp" break; case 26: // stmt: stmt_waittill -#line 310 "parser.ypp" +#line 311 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_waittill = std::move(yystack_[0].value.as < ast::stmt_waittill::ptr > ()); } #line 2114 "parser.cpp" break; case 27: // stmt: stmt_waittillmatch -#line 311 "parser.ypp" +#line 312 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_waittillmatch = std::move(yystack_[0].value.as < ast::stmt_waittillmatch::ptr > ()); } #line 2120 "parser.cpp" break; case 28: // stmt: stmt_waittillframeend -#line 312 "parser.ypp" +#line 313 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_waittillframeend = std::move(yystack_[0].value.as < ast::stmt_waittillframeend::ptr > ()); } #line 2126 "parser.cpp" break; case 29: // stmt: stmt_if -#line 313 "parser.ypp" +#line 314 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_if = std::move(yystack_[0].value.as < ast::stmt_if::ptr > ()); } #line 2132 "parser.cpp" break; case 30: // stmt: stmt_ifelse -#line 314 "parser.ypp" +#line 315 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_ifelse = std::move(yystack_[0].value.as < ast::stmt_ifelse::ptr > ()); } #line 2138 "parser.cpp" break; case 31: // stmt: stmt_while -#line 315 "parser.ypp" +#line 316 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_while = std::move(yystack_[0].value.as < ast::stmt_while::ptr > ()); } #line 2144 "parser.cpp" break; case 32: // stmt: stmt_dowhile -#line 316 "parser.ypp" +#line 317 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_dowhile = std::move(yystack_[0].value.as < ast::stmt_dowhile::ptr > ()); } #line 2150 "parser.cpp" break; case 33: // stmt: stmt_for -#line 317 "parser.ypp" +#line 318 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_for = std::move(yystack_[0].value.as < ast::stmt_for::ptr > ()); } #line 2156 "parser.cpp" break; case 34: // stmt: stmt_foreach -#line 318 "parser.ypp" +#line 319 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_foreach = std::move(yystack_[0].value.as < ast::stmt_foreach::ptr > ()); } #line 2162 "parser.cpp" break; case 35: // stmt: stmt_switch -#line 319 "parser.ypp" +#line 320 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_switch = std::move(yystack_[0].value.as < ast::stmt_switch::ptr > ()); } #line 2168 "parser.cpp" break; case 36: // stmt: stmt_case -#line 320 "parser.ypp" +#line 321 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_case = std::move(yystack_[0].value.as < ast::stmt_case::ptr > ()); } #line 2174 "parser.cpp" break; case 37: // stmt: stmt_default -#line 321 "parser.ypp" +#line 322 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_default = std::move(yystack_[0].value.as < ast::stmt_default::ptr > ()); } #line 2180 "parser.cpp" break; case 38: // stmt: stmt_break -#line 322 "parser.ypp" +#line 323 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_break = std::move(yystack_[0].value.as < ast::stmt_break::ptr > ()); } #line 2186 "parser.cpp" break; case 39: // stmt: stmt_continue -#line 323 "parser.ypp" +#line 324 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_continue = std::move(yystack_[0].value.as < ast::stmt_continue::ptr > ()); } #line 2192 "parser.cpp" break; case 40: // stmt: stmt_return -#line 324 "parser.ypp" +#line 325 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_return = std::move(yystack_[0].value.as < ast::stmt_return::ptr > ()); } #line 2198 "parser.cpp" break; case 41: // stmt: stmt_breakpoint -#line 325 "parser.ypp" +#line 326 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_breakpoint = std::move(yystack_[0].value.as < ast::stmt_breakpoint::ptr > ()); } #line 2204 "parser.cpp" break; case 42: // stmt: stmt_prof_begin -#line 326 "parser.ypp" +#line 327 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_prof_begin = std::move(yystack_[0].value.as < ast::stmt_prof_begin::ptr > ()); } #line 2210 "parser.cpp" break; case 43: // stmt: stmt_prof_end -#line 327 "parser.ypp" +#line 328 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_prof_end = std::move(yystack_[0].value.as < ast::stmt_prof_end::ptr > ()); } #line 2216 "parser.cpp" break; case 44: // stmt_or_dev: stmt -#line 331 "parser.ypp" +#line 332 "parser.ypp" { yylhs.value.as < ast::stmt > () = std::move(yystack_[0].value.as < ast::stmt > ()); } #line 2222 "parser.cpp" break; case 45: // stmt_or_dev: stmt_dev -#line 332 "parser.ypp" +#line 333 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_dev = std::move(yystack_[0].value.as < ast::stmt_dev::ptr > ()); } #line 2228 "parser.cpp" break; case 46: // stmt_list: stmt_list stmt -#line 337 "parser.ypp" +#line 338 "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 2234 "parser.cpp" break; case 47: // stmt_list: stmt -#line 339 "parser.ypp" +#line 340 "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 2240 "parser.cpp" break; case 48: // stmt_or_dev_list: stmt_or_dev_list stmt_or_dev -#line 344 "parser.ypp" +#line 345 "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 2246 "parser.cpp" break; case 49: // stmt_or_dev_list: stmt_or_dev -#line 346 "parser.ypp" +#line 347 "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 2252 "parser.cpp" break; case 50: // stmt_dev: "/#" stmt_list "#/" -#line 350 "parser.ypp" +#line 351 "parser.ypp" { yylhs.value.as < ast::stmt_dev::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::stmt_list::ptr > ())); } #line 2258 "parser.cpp" break; case 51: // stmt_dev: "/#" "#/" -#line 351 "parser.ypp" +#line 352 "parser.ypp" { yylhs.value.as < ast::stmt_dev::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } #line 2264 "parser.cpp" break; case 52: // stmt_block: "{" stmt_or_dev_list "}" -#line 355 "parser.ypp" +#line 356 "parser.ypp" { yylhs.value.as < ast::stmt_list::ptr > () = std::move(yystack_[1].value.as < ast::stmt_list::ptr > ()); } #line 2270 "parser.cpp" break; case 53: // stmt_block: "{" "}" -#line 356 "parser.ypp" +#line 357 "parser.ypp" { yylhs.value.as < ast::stmt_list::ptr > () = std::make_unique(yylhs.location); } #line 2276 "parser.cpp" break; case 54: // stmt_expr: expr_assign -#line 361 "parser.ypp" +#line 362 "parser.ypp" { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } #line 2282 "parser.cpp" break; case 55: // stmt_expr: expr_increment -#line 363 "parser.ypp" +#line 364 "parser.ypp" { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } #line 2288 "parser.cpp" break; case 56: // stmt_expr: expr_decrement -#line 365 "parser.ypp" +#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 2294 "parser.cpp" break; case 57: // stmt_expr: %empty -#line 367 "parser.ypp" +#line 368 "parser.ypp" { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } #line 2300 "parser.cpp" break; case 58: // stmt_call: expr_call ";" -#line 372 "parser.ypp" +#line 373 "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 2306 "parser.cpp" break; case 59: // stmt_call: expr_method ";" -#line 374 "parser.ypp" +#line 375 "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 2312 "parser.cpp" break; case 60: // stmt_assign: expr_assign ";" -#line 379 "parser.ypp" +#line 380 "parser.ypp" { yylhs.value.as < ast::stmt_assign::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } #line 2318 "parser.cpp" break; case 61: // stmt_assign: expr_increment ";" -#line 381 "parser.ypp" +#line 382 "parser.ypp" { yylhs.value.as < ast::stmt_assign::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } #line 2324 "parser.cpp" break; case 62: // stmt_assign: expr_decrement ";" -#line 383 "parser.ypp" +#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 2330 "parser.cpp" break; case 63: // stmt_endon: expr_object "endon" "(" expr ")" ";" -#line 388 "parser.ypp" +#line 389 "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 2336 "parser.cpp" break; case 64: // stmt_notify: expr_object "notify" "(" expr "," expr_arguments_no_empty ")" ";" -#line 393 "parser.ypp" +#line 394 "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 2342 "parser.cpp" break; case 65: // stmt_notify: expr_object "notify" "(" expr ")" ";" -#line 395 "parser.ypp" +#line 396 "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 2348 "parser.cpp" break; case 66: // stmt_wait: "wait" expr ";" -#line 400 "parser.ypp" +#line 401 "parser.ypp" { yylhs.value.as < ast::stmt_wait::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } #line 2354 "parser.cpp" break; case 67: // stmt_waittill: expr_object "waittill" "(" expr "," expr_arguments_no_empty ")" ";" -#line 405 "parser.ypp" +#line 406 "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 2360 "parser.cpp" break; case 68: // stmt_waittill: expr_object "waittill" "(" expr ")" ";" -#line 407 "parser.ypp" +#line 408 "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 2366 "parser.cpp" break; case 69: // stmt_waittillmatch: expr_object "waittillmatch" "(" expr "," expr_arguments_no_empty ")" ";" -#line 412 "parser.ypp" +#line 413 "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 2372 "parser.cpp" break; case 70: // stmt_waittillmatch: expr_object "waittillmatch" "(" expr ")" ";" -#line 414 "parser.ypp" +#line 415 "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 2378 "parser.cpp" break; case 71: // stmt_waittillframeend: "waittillframeend" ";" -#line 419 "parser.ypp" +#line 420 "parser.ypp" { yylhs.value.as < ast::stmt_waittillframeend::ptr > () = std::make_unique(yylhs.location); } #line 2384 "parser.cpp" break; case 72: // stmt_if: "if" "(" expr ")" stmt -#line 424 "parser.ypp" +#line 425 "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 2390 "parser.cpp" break; case 73: // stmt_ifelse: "if" "(" expr ")" stmt "else" stmt -#line 429 "parser.ypp" +#line 430 "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 2396 "parser.cpp" break; case 74: // stmt_while: "while" "(" expr ")" stmt -#line 434 "parser.ypp" +#line 435 "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 2402 "parser.cpp" break; case 75: // stmt_dowhile: "do" stmt "while" "(" expr ")" ";" -#line 439 "parser.ypp" +#line 440 "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 2408 "parser.cpp" break; case 76: // stmt_for: "for" "(" stmt_expr ";" expr_or_empty ";" stmt_expr ")" stmt -#line 444 "parser.ypp" +#line 445 "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 2414 "parser.cpp" break; case 77: // stmt_foreach: "foreach" "(" expr_identifier "in" expr ")" stmt -#line 449 "parser.ypp" +#line 450 "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 2420 "parser.cpp" break; case 78: // stmt_foreach: "foreach" "(" expr_identifier "," expr_identifier "in" expr ")" stmt -#line 451 "parser.ypp" +#line 452 "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 2426 "parser.cpp" break; case 79: // stmt_switch: "switch" "(" expr ")" stmt_block -#line 456 "parser.ypp" +#line 457 "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 2432 "parser.cpp" break; case 80: // stmt_case: "case" expr_integer ":" -#line 461 "parser.ypp" +#line 462 "parser.ypp" { yylhs.value.as < ast::stmt_case::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[1].value.as < ast::expr_integer::ptr > ())), std::make_unique(yylhs.location)); } #line 2438 "parser.cpp" break; case 81: // stmt_case: "case" expr_string ":" -#line 463 "parser.ypp" +#line 464 "parser.ypp" { yylhs.value.as < ast::stmt_case::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[1].value.as < ast::expr_string::ptr > ())), std::make_unique(yylhs.location)); } #line 2444 "parser.cpp" break; case 82: // stmt_default: "default" ":" -#line 468 "parser.ypp" +#line 469 "parser.ypp" { yylhs.value.as < ast::stmt_default::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } #line 2450 "parser.cpp" break; case 83: // stmt_break: "break" ";" -#line 473 "parser.ypp" +#line 474 "parser.ypp" { yylhs.value.as < ast::stmt_break::ptr > () = std::make_unique(yylhs.location); } #line 2456 "parser.cpp" break; case 84: // stmt_continue: "continue" ";" -#line 478 "parser.ypp" +#line 479 "parser.ypp" { yylhs.value.as < ast::stmt_continue::ptr > () = std::make_unique(yylhs.location); } #line 2462 "parser.cpp" break; case 85: // stmt_return: "return" expr ";" -#line 483 "parser.ypp" +#line 484 "parser.ypp" { yylhs.value.as < ast::stmt_return::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } #line 2468 "parser.cpp" break; case 86: // stmt_return: "return" ";" -#line 485 "parser.ypp" +#line 486 "parser.ypp" { yylhs.value.as < ast::stmt_return::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } #line 2474 "parser.cpp" break; case 87: // stmt_breakpoint: "breakpoint" ";" -#line 490 "parser.ypp" +#line 491 "parser.ypp" { yylhs.value.as < ast::stmt_breakpoint::ptr > () = std::make_unique(yylhs.location); } #line 2480 "parser.cpp" break; case 88: // stmt_prof_begin: "prof_begin" "(" expr_arguments ")" ";" -#line 495 "parser.ypp" +#line 496 "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 2486 "parser.cpp" break; case 89: // stmt_prof_end: "prof_end" "(" expr_arguments ")" ";" -#line 500 "parser.ypp" +#line 501 "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 2492 "parser.cpp" break; case 90: // expr: expr_ternary -#line 504 "parser.ypp" +#line 505 "parser.ypp" { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } #line 2498 "parser.cpp" break; case 91: // expr: expr_binary -#line 505 "parser.ypp" +#line 506 "parser.ypp" { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } #line 2504 "parser.cpp" break; case 92: // expr: expr_primitive -#line 506 "parser.ypp" +#line 507 "parser.ypp" { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } #line 2510 "parser.cpp" break; case 93: // expr_or_empty: expr -#line 510 "parser.ypp" +#line 511 "parser.ypp" { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } #line 2516 "parser.cpp" break; case 94: // expr_or_empty: %empty -#line 511 "parser.ypp" +#line 512 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location); } #line 2522 "parser.cpp" break; case 95: // expr_assign: expr_object "=" expr -#line 516 "parser.ypp" +#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 2528 "parser.cpp" break; case 96: // expr_assign: expr_object "|=" expr -#line 518 "parser.ypp" +#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 2534 "parser.cpp" break; case 97: // expr_assign: expr_object "&=" expr -#line 520 "parser.ypp" +#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 2540 "parser.cpp" break; case 98: // expr_assign: expr_object "^=" expr -#line 522 "parser.ypp" +#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 2546 "parser.cpp" break; case 99: // expr_assign: expr_object "<<=" expr -#line 524 "parser.ypp" +#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 2552 "parser.cpp" break; case 100: // expr_assign: expr_object ">>=" expr -#line 526 "parser.ypp" +#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 2558 "parser.cpp" break; case 101: // expr_assign: expr_object "+=" expr -#line 528 "parser.ypp" +#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 2564 "parser.cpp" break; case 102: // expr_assign: expr_object "-=" expr -#line 530 "parser.ypp" +#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 2570 "parser.cpp" break; case 103: // expr_assign: expr_object "*=" expr -#line 532 "parser.ypp" +#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 2576 "parser.cpp" break; case 104: // expr_assign: expr_object "/=" expr -#line 534 "parser.ypp" +#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 2582 "parser.cpp" break; case 105: // expr_assign: expr_object "%=" expr -#line 536 "parser.ypp" +#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 2588 "parser.cpp" break; case 106: // expr_increment: "++" expr_object -#line 541 "parser.ypp" +#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 2594 "parser.cpp" break; case 107: // expr_increment: expr_object "++" -#line 543 "parser.ypp" +#line 544 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ()), false); } #line 2600 "parser.cpp" break; case 108: // expr_decrement: "--" expr_object -#line 548 "parser.ypp" +#line 549 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ()), true); } #line 2606 "parser.cpp" break; case 109: // expr_decrement: expr_object "--" -#line 550 "parser.ypp" +#line 551 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ()), false); } #line 2612 "parser.cpp" break; case 110: // expr_ternary: expr "?" expr ":" expr -#line 555 "parser.ypp" +#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 2618 "parser.cpp" break; case 111: // expr_binary: expr "||" expr -#line 560 "parser.ypp" +#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 2624 "parser.cpp" break; case 112: // expr_binary: expr "&&" expr -#line 562 "parser.ypp" +#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 2630 "parser.cpp" break; case 113: // expr_binary: expr "==" expr -#line 564 "parser.ypp" +#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 2636 "parser.cpp" break; case 114: // expr_binary: expr "!=" expr -#line 566 "parser.ypp" +#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 2642 "parser.cpp" break; case 115: // expr_binary: expr "<=" expr -#line 568 "parser.ypp" +#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 2648 "parser.cpp" break; case 116: // expr_binary: expr ">=" expr -#line 570 "parser.ypp" +#line 571 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } #line 2654 "parser.cpp" break; case 117: // expr_binary: expr "<" expr -#line 572 "parser.ypp" +#line 573 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } #line 2660 "parser.cpp" break; case 118: // expr_binary: expr ">" expr -#line 574 "parser.ypp" +#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 2666 "parser.cpp" break; case 119: // expr_binary: expr "|" expr -#line 576 "parser.ypp" +#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 2672 "parser.cpp" break; case 120: // expr_binary: expr "&" expr -#line 578 "parser.ypp" +#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 2678 "parser.cpp" break; case 121: // expr_binary: expr "^" expr -#line 580 "parser.ypp" +#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 2684 "parser.cpp" break; case 122: // expr_binary: expr "<<" expr -#line 582 "parser.ypp" +#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 2690 "parser.cpp" break; case 123: // expr_binary: expr ">>" expr -#line 584 "parser.ypp" +#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 2696 "parser.cpp" break; case 124: // expr_binary: expr "+" expr -#line 586 "parser.ypp" +#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 2702 "parser.cpp" break; case 125: // expr_binary: expr "-" expr -#line 588 "parser.ypp" +#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 2708 "parser.cpp" break; case 126: // expr_binary: expr "*" expr -#line 590 "parser.ypp" +#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 2714 "parser.cpp" break; case 127: // expr_binary: expr "/" expr -#line 592 "parser.ypp" +#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 2720 "parser.cpp" break; case 128: // expr_binary: expr "%" expr -#line 594 "parser.ypp" +#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 2726 "parser.cpp" break; case 129: // expr_primitive: expr_complement -#line 598 "parser.ypp" +#line 599 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_complement::ptr > ()); } #line 2732 "parser.cpp" break; case 130: // expr_primitive: expr_not -#line 599 "parser.ypp" +#line 600 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_not::ptr > ()); } #line 2738 "parser.cpp" break; case 131: // expr_primitive: expr_call -#line 600 "parser.ypp" +#line 601 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_call::ptr > ()); } #line 2744 "parser.cpp" break; case 132: // expr_primitive: expr_method -#line 601 "parser.ypp" +#line 602 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_method::ptr > ()); } #line 2750 "parser.cpp" break; case 133: // expr_primitive: expr_add_array -#line 602 "parser.ypp" +#line 603 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_add_array::ptr > ()); } #line 2756 "parser.cpp" break; case 134: // expr_primitive: expr_reference -#line 603 "parser.ypp" +#line 604 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_reference::ptr > ()); } #line 2762 "parser.cpp" break; case 135: // expr_primitive: expr_array -#line 604 "parser.ypp" +#line 605 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_array::ptr > ()); } #line 2768 "parser.cpp" break; case 136: // expr_primitive: expr_field -#line 605 "parser.ypp" +#line 606 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_field::ptr > ()); } #line 2774 "parser.cpp" break; case 137: // expr_primitive: expr_size -#line 606 "parser.ypp" +#line 607 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_size::ptr > ()); } #line 2780 "parser.cpp" break; case 138: // expr_primitive: expr_paren -#line 607 "parser.ypp" +#line 608 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_paren::ptr > ()); } #line 2786 "parser.cpp" break; case 139: // expr_primitive: expr_thisthread -#line 608 "parser.ypp" +#line 609 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_thisthread::ptr > ()); } #line 2792 "parser.cpp" break; case 140: // expr_primitive: expr_empty_array -#line 609 "parser.ypp" +#line 610 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_empty_array::ptr > ()); } #line 2798 "parser.cpp" break; case 141: // expr_primitive: expr_undefined -#line 610 "parser.ypp" +#line 611 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_undefined::ptr > ()); } #line 2804 "parser.cpp" break; case 142: // expr_primitive: expr_game -#line 611 "parser.ypp" +#line 612 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_game::ptr > ()); } #line 2810 "parser.cpp" break; case 143: // expr_primitive: expr_self -#line 612 "parser.ypp" +#line 613 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_self::ptr > ()); } #line 2816 "parser.cpp" break; case 144: // expr_primitive: expr_anim -#line 613 "parser.ypp" +#line 614 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_anim::ptr > ()); } #line 2822 "parser.cpp" break; case 145: // expr_primitive: expr_level -#line 614 "parser.ypp" +#line 615 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_level::ptr > ()); } #line 2828 "parser.cpp" break; case 146: // expr_primitive: expr_animation -#line 615 "parser.ypp" +#line 616 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_animation::ptr > ()); } #line 2834 "parser.cpp" break; case 147: // expr_primitive: expr_animtree -#line 616 "parser.ypp" +#line 617 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_animtree::ptr > ()); } #line 2840 "parser.cpp" break; case 148: // expr_primitive: expr_identifier -#line 617 "parser.ypp" +#line 618 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ()); } #line 2846 "parser.cpp" break; case 149: // expr_primitive: expr_istring -#line 618 "parser.ypp" +#line 619 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_istring::ptr > ()); } #line 2852 "parser.cpp" break; case 150: // expr_primitive: expr_string -#line 619 "parser.ypp" +#line 620 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_string::ptr > ()); } #line 2858 "parser.cpp" break; case 151: // expr_primitive: expr_vector -#line 620 "parser.ypp" +#line 621 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_vector::ptr > ()); } #line 2864 "parser.cpp" break; case 152: // expr_primitive: expr_float -#line 621 "parser.ypp" +#line 622 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_float::ptr > ()); } #line 2870 "parser.cpp" break; case 153: // expr_primitive: expr_integer -#line 622 "parser.ypp" +#line 623 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_integer::ptr > ()); } #line 2876 "parser.cpp" break; case 154: // expr_primitive: expr_false -#line 623 "parser.ypp" +#line 624 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_false::ptr > ()); } #line 2882 "parser.cpp" break; case 155: // expr_primitive: expr_true -#line 624 "parser.ypp" +#line 625 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_true::ptr > ()); } #line 2888 "parser.cpp" break; case 156: // expr_complement: "~" expr -#line 629 "parser.ypp" +#line 630 "parser.ypp" { yylhs.value.as < ast::expr_complement::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } #line 2894 "parser.cpp" break; case 157: // expr_not: "!" expr -#line 634 "parser.ypp" +#line 635 "parser.ypp" { yylhs.value.as < ast::expr_not::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } #line 2900 "parser.cpp" break; case 158: // expr_call: expr_function -#line 638 "parser.ypp" +#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 2906 "parser.cpp" break; case 159: // expr_call: expr_pointer -#line 639 "parser.ypp" +#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 2912 "parser.cpp" break; case 160: // expr_method: expr_object expr_function -#line 642 "parser.ypp" +#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 2918 "parser.cpp" break; case 161: // expr_method: expr_object expr_pointer -#line 643 "parser.ypp" +#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 2924 "parser.cpp" break; case 162: // expr_function: expr_identifier "(" expr_arguments ")" -#line 648 "parser.ypp" +#line 649 "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 2930 "parser.cpp" break; case 163: // expr_function: expr_path "::" expr_identifier "(" expr_arguments ")" -#line 650 "parser.ypp" +#line 651 "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 2936 "parser.cpp" break; case 164: // expr_function: "thread" expr_identifier "(" expr_arguments ")" -#line 652 "parser.ypp" +#line 653 "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 2942 "parser.cpp" break; case 165: // expr_function: "thread" expr_path "::" expr_identifier "(" expr_arguments ")" -#line 654 "parser.ypp" +#line 655 "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 2948 "parser.cpp" break; case 166: // expr_function: "childthread" expr_identifier "(" expr_arguments ")" -#line 656 "parser.ypp" +#line 657 "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 2954 "parser.cpp" break; case 167: // expr_function: "childthread" expr_path "::" expr_identifier "(" expr_arguments ")" -#line 658 "parser.ypp" +#line 659 "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 2960 "parser.cpp" break; case 168: // expr_pointer: "[" "[" expr "]" "]" "(" expr_arguments ")" -#line 663 "parser.ypp" +#line 664 "parser.ypp" { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::normal); } #line 2966 "parser.cpp" break; case 169: // expr_pointer: "thread" "[" "[" expr "]" "]" "(" expr_arguments ")" -#line 665 "parser.ypp" +#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::thread); } #line 2972 "parser.cpp" break; case 170: // expr_pointer: "childthread" "[" "[" expr "]" "]" "(" expr_arguments ")" -#line 667 "parser.ypp" +#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::childthread); } #line 2978 "parser.cpp" break; case 171: // expr_pointer: "call" "[" "[" expr "]" "]" "(" expr_arguments ")" -#line 669 "parser.ypp" +#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::builtin); } #line 2984 "parser.cpp" break; case 172: // expr_add_array: "[" expr_arguments_no_empty "]" -#line 674 "parser.ypp" +#line 675 "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 2990 "parser.cpp" break; case 173: // expr_parameters: expr_parameters "," expr_identifier -#line 679 "parser.ypp" +#line 680 "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 2996 "parser.cpp" break; case 174: // expr_parameters: expr_identifier -#line 681 "parser.ypp" +#line 682 "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 3002 "parser.cpp" break; case 175: // expr_parameters: %empty -#line 683 "parser.ypp" +#line 684 "parser.ypp" { yylhs.value.as < ast::expr_parameters::ptr > () = std::make_unique(yylhs.location); } #line 3008 "parser.cpp" break; case 176: // expr_arguments: expr_arguments_no_empty -#line 688 "parser.ypp" +#line 689 "parser.ypp" { yylhs.value.as < ast::expr_arguments::ptr > () = std::move(yystack_[0].value.as < ast::expr_arguments::ptr > ()); } #line 3014 "parser.cpp" break; case 177: // expr_arguments: %empty -#line 690 "parser.ypp" +#line 691 "parser.ypp" { yylhs.value.as < ast::expr_arguments::ptr > () = std::make_unique(yylhs.location); } #line 3020 "parser.cpp" break; case 178: // expr_arguments_no_empty: expr_arguments "," expr -#line 695 "parser.ypp" +#line 696 "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 3026 "parser.cpp" break; case 179: // expr_arguments_no_empty: expr -#line 697 "parser.ypp" +#line 698 "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 3032 "parser.cpp" break; case 180: // expr_reference: "::" expr_identifier -#line 702 "parser.ypp" +#line 703 "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 3038 "parser.cpp" break; case 181: // expr_reference: expr_path "::" expr_identifier -#line 704 "parser.ypp" +#line 705 "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 3044 "parser.cpp" break; case 182: // expr_array: expr_object "[" expr "]" -#line 709 "parser.ypp" +#line 710 "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 3050 "parser.cpp" break; - case 183: // expr_field: expr_object "." expr_identifier -#line 714 "parser.ypp" + case 183: // expr_field: expr_object "." expr_identifier_nosize +#line 715 "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 3056 "parser.cpp" break; - case 184: // expr_field: expr_object "field" -#line 716 "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 > ())); } + case 184: // expr_size: expr_object "." "size" +#line 720 "parser.ypp" + { yylhs.value.as < ast::expr_size::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ())); } #line 3062 "parser.cpp" break; - case 185: // 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 > ())); } + case 185: // expr_paren: "(" expr ")" +#line 725 "parser.ypp" + { yylhs.value.as < ast::expr_paren::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } #line 3068 "parser.cpp" break; - case 186: // 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 > ())); } + case 186: // expr_object: expr_call +#line 729 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_call::ptr > ()); } #line 3074 "parser.cpp" break; - case 187: // expr_object: expr_call + case 187: // expr_object: expr_method #line 730 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_call::ptr > ()); } + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_method::ptr > ()); } #line 3080 "parser.cpp" break; - case 188: // expr_object: expr_method + case 188: // expr_object: expr_array #line 731 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_method::ptr > ()); } + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_array::ptr > ()); } #line 3086 "parser.cpp" break; - case 189: // expr_object: expr_array + case 189: // expr_object: expr_field #line 732 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_array::ptr > ()); } + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_field::ptr > ()); } #line 3092 "parser.cpp" break; - case 190: // expr_object: expr_field + case 190: // expr_object: expr_game #line 733 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_field::ptr > ()); } + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_game::ptr > ()); } #line 3098 "parser.cpp" break; - case 191: // expr_object: expr_game + case 191: // expr_object: expr_self #line 734 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_game::ptr > ()); } + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_self::ptr > ()); } #line 3104 "parser.cpp" break; - case 192: // expr_object: expr_self + case 192: // expr_object: expr_anim #line 735 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_self::ptr > ()); } + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_anim::ptr > ()); } #line 3110 "parser.cpp" break; - case 193: // expr_object: expr_anim + case 193: // expr_object: expr_level #line 736 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_anim::ptr > ()); } + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_level::ptr > ()); } #line 3116 "parser.cpp" break; - case 194: // expr_object: expr_level + case 194: // expr_object: expr_identifier #line 737 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_level::ptr > ()); } + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ()); } #line 3122 "parser.cpp" break; - case 195: // 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 > ()); } + case 195: // expr_thisthread: "thisthread" +#line 742 "parser.ypp" + { yylhs.value.as < ast::expr_thisthread::ptr > () = std::make_unique(yylhs.location); } #line 3128 "parser.cpp" break; - case 196: // expr_thisthread: "thisthread" -#line 743 "parser.ypp" - { yylhs.value.as < ast::expr_thisthread::ptr > () = std::make_unique(yylhs.location); } + case 196: // expr_empty_array: "[" "]" +#line 747 "parser.ypp" + { yylhs.value.as < ast::expr_empty_array::ptr > () = std::make_unique(yylhs.location); } #line 3134 "parser.cpp" break; - case 197: // expr_empty_array: "[" "]" -#line 748 "parser.ypp" - { yylhs.value.as < ast::expr_empty_array::ptr > () = std::make_unique(yylhs.location); } + case 197: // expr_undefined: "undefined" +#line 752 "parser.ypp" + { yylhs.value.as < ast::expr_undefined::ptr > () = std::make_unique(yylhs.location); } #line 3140 "parser.cpp" break; - case 198: // expr_undefined: "undefined" -#line 753 "parser.ypp" - { yylhs.value.as < ast::expr_undefined::ptr > () = std::make_unique(yylhs.location); } + case 198: // expr_game: "game" +#line 757 "parser.ypp" + { yylhs.value.as < ast::expr_game::ptr > () = std::make_unique(yylhs.location); } #line 3146 "parser.cpp" break; - case 199: // expr_game: "game" -#line 758 "parser.ypp" - { yylhs.value.as < ast::expr_game::ptr > () = std::make_unique(yylhs.location); } + case 199: // expr_self: "self" +#line 762 "parser.ypp" + { yylhs.value.as < ast::expr_self::ptr > () = std::make_unique(yylhs.location); } #line 3152 "parser.cpp" break; - case 200: // expr_self: "self" -#line 763 "parser.ypp" - { yylhs.value.as < ast::expr_self::ptr > () = std::make_unique(yylhs.location); } + case 200: // expr_anim: "anim" +#line 767 "parser.ypp" + { yylhs.value.as < ast::expr_anim::ptr > () = std::make_unique(yylhs.location); } #line 3158 "parser.cpp" break; - case 201: // expr_anim: "anim" -#line 768 "parser.ypp" - { yylhs.value.as < ast::expr_anim::ptr > () = std::make_unique(yylhs.location); } + case 201: // expr_level: "level" +#line 772 "parser.ypp" + { yylhs.value.as < ast::expr_level::ptr > () = std::make_unique(yylhs.location); } #line 3164 "parser.cpp" break; - case 202: // expr_level: "level" -#line 773 "parser.ypp" - { yylhs.value.as < ast::expr_level::ptr > () = std::make_unique(yylhs.location); } + case 202: // expr_animation: "%" "identifier" +#line 777 "parser.ypp" + { yylhs.value.as < ast::expr_animation::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 3170 "parser.cpp" break; - case 203: // expr_animation: "%" "identifier" -#line 778 "parser.ypp" - { yylhs.value.as < ast::expr_animation::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 203: // expr_animtree: "#animtree" +#line 782 "parser.ypp" + { yylhs.value.as < ast::expr_animtree::ptr > () = std::make_unique(yylhs.location); } #line 3176 "parser.cpp" break; - case 204: // expr_animtree: "#animtree" -#line 783 "parser.ypp" - { yylhs.value.as < ast::expr_animtree::ptr > () = std::make_unique(yylhs.location); } + case 204: // expr_identifier_nosize: "identifier" +#line 787 "parser.ypp" + { yylhs.value.as < ast::expr_identifier::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 3182 "parser.cpp" break; case 205: // expr_identifier: "identifier" -#line 788 "parser.ypp" +#line 792 "parser.ypp" { yylhs.value.as < ast::expr_identifier::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 3188 "parser.cpp" break; - case 206: // expr_path: "path" -#line 793 "parser.ypp" - { yylhs.value.as < ast::expr_path::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 206: // expr_identifier: "size" +#line 794 "parser.ypp" + { yylhs.value.as < ast::expr_identifier::ptr > () = std::make_unique(yylhs.location, "size"); } #line 3194 "parser.cpp" break; - case 207: // expr_path: expr_identifier -#line 795 "parser.ypp" - { yylhs.value.as < ast::expr_path::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < ast::expr_identifier::ptr > ()->value); } + case 207: // expr_path: "identifier" +#line 799 "parser.ypp" + { yylhs.value.as < ast::expr_path::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 3200 "parser.cpp" break; - case 208: // expr_istring: "localized string" -#line 800 "parser.ypp" - { yylhs.value.as < ast::expr_istring::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 208: // expr_path: "path" +#line 801 "parser.ypp" + { yylhs.value.as < ast::expr_path::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 3206 "parser.cpp" break; - case 209: // expr_string: "string literal" -#line 805 "parser.ypp" - { yylhs.value.as < ast::expr_string::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 209: // expr_istring: "localized string" +#line 806 "parser.ypp" + { yylhs.value.as < ast::expr_istring::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 3212 "parser.cpp" break; - case 210: // expr_vector: "(" expr "," expr "," expr ")" -#line 810 "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 > ())); } + case 210: // expr_string: "string literal" +#line 811 "parser.ypp" + { yylhs.value.as < ast::expr_string::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 3218 "parser.cpp" break; - case 211: // expr_float: "-" "float" -#line 815 "parser.ypp" - { yylhs.value.as < ast::expr_float::ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } + case 211: // expr_vector: "(" expr "," expr "," expr ")" +#line 816 "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 3224 "parser.cpp" break; - case 212: // expr_float: "float" -#line 817 "parser.ypp" - { yylhs.value.as < ast::expr_float::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 212: // expr_float: "-" "float" +#line 821 "parser.ypp" + { yylhs.value.as < ast::expr_float::ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } #line 3230 "parser.cpp" break; - case 213: // expr_integer: "-" "integer" -#line 822 "parser.ypp" - { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } + 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 3236 "parser.cpp" break; - case 214: // expr_integer: "integer" -#line 824 "parser.ypp" - { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 214: // expr_integer: "-" "integer" +#line 828 "parser.ypp" + { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } #line 3242 "parser.cpp" break; - case 215: // expr_false: "false" -#line 829 "parser.ypp" - { yylhs.value.as < ast::expr_false::ptr > () = std::make_unique(yylhs.location); } + 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 3248 "parser.cpp" break; - case 216: // expr_true: "true" -#line 834 "parser.ypp" - { yylhs.value.as < ast::expr_true::ptr > () = std::make_unique(yylhs.location); } + case 216: // expr_false: "false" +#line 835 "parser.ypp" + { yylhs.value.as < ast::expr_false::ptr > () = std::make_unique(yylhs.location); } #line 3254 "parser.cpp" break; + case 217: // expr_true: "true" +#line 840 "parser.ypp" + { yylhs.value.as < ast::expr_true::ptr > () = std::make_unique(yylhs.location); } +#line 3260 "parser.cpp" + break; -#line 3258 "parser.cpp" + +#line 3264 "parser.cpp" default: break; @@ -3445,12 +3451,12 @@ namespace xsk { namespace gsc { namespace iw6 { "while", "for", "foreach", "in", "switch", "case", "default", "break", "continue", "return", "breakpoint", "prof_begin", "prof_end", "thread", "childthread", "thisthread", "call", "true", "false", "undefined", - ".size", "game", "self", "anim", "level", "(", ")", "{", "}", "[", "]", + "size", "game", "self", "anim", "level", "(", ")", "{", "}", "[", "]", ",", ".", "::", ":", ";", "?", "++", "--", "<<", ">>", "||", "&&", "==", "!=", "<=", ">=", "<", ">", "!", "~", "=", "+=", "-=", "*=", "/=", "%=", "|=", "&=", "^=", ">>=", "<<=", "|", "&", "^", "+", "-", "*", "/", "%", - "field", "path", "identifier", "string literal", "localized string", - "float", "integer", "ADD_ARRAY", "THEN", "TERN", "NEG", "ANIMREF", + "path", "identifier", "string literal", "localized string", "float", + "integer", "SIZEOF", "ADD_ARRAY", "THEN", "TERN", "NEG", "ANIMREF", "PREINC", "PREDEC", "POSTINC", "POSTDEC", "$accept", "root", "program", "inline", "include", "declaration", "decl_usingtree", "decl_constant", "decl_thread", "stmt", "stmt_or_dev", "stmt_list", "stmt_or_dev_list", @@ -3468,9 +3474,9 @@ namespace xsk { namespace gsc { namespace iw6 { "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_vector", "expr_float", "expr_integer", "expr_false", - "expr_true", YY_NULLPTR + "expr_animtree", "expr_identifier_nosize", "expr_identifier", + "expr_path", "expr_istring", "expr_string", "expr_vector", "expr_float", + "expr_integer", "expr_false", "expr_true", YY_NULLPTR }; return yy_sname[yysymbol]; } @@ -3735,649 +3741,655 @@ namespace xsk { namespace gsc { namespace iw6 { } - const short parser::yypact_ninf_ = -263; + const short parser::yypact_ninf_ = -266; const short parser::yytable_ninf_ = -208; const short parser::yypact_[] = { - 4, -263, -263, 2, 2, -23, -263, 11, 4, -263, - -263, -263, -263, -263, -263, 6, -263, -263, -41, -20, - -27, -263, -263, -263, -263, -16, 1035, -263, -263, -263, - 33, 21, -263, -263, -34, -31, -263, 34, -263, -263, - -263, -263, -263, -263, -263, 1035, 907, -16, 1035, 1035, - -32, -7, -263, -263, -263, 1983, -263, -263, -263, -263, - -263, 122, 155, -263, -263, -263, -263, 540, 562, -263, - -263, 624, -263, -263, -263, 660, 995, 1003, 1063, -263, - -263, 35, 38, -263, -263, -263, -263, -263, -263, -263, - 40, 63, -16, 53, 59, 70, 81, 69, 79, 92, - 1269, 907, -263, 2066, 83, 94, -263, -263, -263, -263, - -263, -263, -263, 1035, 1035, 1035, 1035, 1035, 1035, 1035, - 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, - 1035, 1035, -263, 1099, -16, -263, -263, -263, 75, 97, - 1035, -16, -263, 742, -263, -263, 1035, 1035, -16, 1035, - 1035, -16, 1035, -263, 1035, 1713, 1035, -263, 1948, 163, - 163, 2097, 2107, 2179, 2179, -43, -43, -43, -43, 2138, - 557, 2148, -35, -35, -263, -263, -263, 1753, -263, -16, - 27, -263, 109, 834, 1035, 96, 116, 1227, 119, 121, - 125, 135, -66, 113, 128, 129, 971, 130, 142, 147, - -263, 145, 56, 56, -263, -263, 788, -263, -263, -263, - -263, -263, -263, -263, -263, -263, -263, -263, -263, -263, - -263, -263, -263, -263, -263, -263, -263, -263, -263, -263, - -263, -263, 143, 144, 146, 148, 160, -263, -263, 1147, - -263, -263, -263, -263, 17, 1793, 55, 157, 1833, 57, - 165, 1873, 1912, 161, 2066, 1035, -263, 109, -263, 1035, - -263, -263, 880, 2018, -263, 1035, 196, 1035, -10, -16, - 1035, 124, 164, 167, -263, -263, -263, -263, 2053, -263, - 1035, 1035, 1035, -263, -263, 931, 931, -263, -263, -263, - -263, -263, -263, -263, 179, 180, 181, 184, -263, -263, - 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, - 1035, 182, -263, 1035, 185, -263, 1035, 186, 1035, 192, - 2066, 61, -263, -263, -263, 1435, 198, 1469, 199, -263, - -263, -263, 1231, -2, 1503, -263, -263, -263, 65, 67, - 1713, 1035, 1035, 1035, 1035, 2066, 2066, 2066, 2066, 2066, - 2066, 2066, 2066, 2066, 2066, 2066, 208, 71, 210, 78, - 212, 1537, 1035, -263, 1227, 1035, 1227, 1035, 1035, -16, - 63, 204, 209, 1571, 1313, 1357, 1401, 1035, -263, 1035, - -263, 1035, -263, 85, 223, 1605, -263, 2066, 211, 1639, - 244, -263, -263, -263, 213, 215, 1035, 217, 1035, 218, - 1035, 87, 106, 114, -263, 1227, 219, -10, 1227, 1035, - -263, -263, 229, -263, 230, -263, 231, -263, -263, -263, - -263, -263, 238, -263, 1673, 232, 235, 236, 1227, 1227, - -263, -263, -263, -263, -263 + 6, -266, -266, -13, -13, -23, -266, -266, 39, 6, + -266, -266, -266, -266, -266, -266, -40, -266, -266, 11, + 20, -11, -266, -266, -266, -266, -38, 1079, -266, -266, + -266, 43, -3, -266, -266, -22, 31, -266, 46, -266, + -266, -266, -266, -266, -266, -266, 1079, 644, -38, 1079, + 1079, 60, -6, 45, -266, -266, -266, 2012, -266, -266, + -266, -266, -266, 476, 583, -266, -266, -266, -266, 836, + 841, -266, -266, 1039, -266, -266, -266, 1047, 1106, 1277, + 1285, -266, -266, 67, 49, -266, -266, -266, -266, -266, + -266, -266, 41, 64, -38, 65, 68, 83, 71, 72, + 91, 98, 1298, 644, -266, 2095, 76, 101, -266, -266, + -266, -266, -266, -266, -266, 1079, 1079, 1079, 1079, 1079, + 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, + 1079, 1079, 1079, 1079, 1142, -19, -266, -266, 108, 103, + 1079, -38, -266, 805, -266, -266, 1079, 1079, -38, 1079, + 1079, -38, 1079, -266, 1079, 1742, 1079, -266, 1977, 133, + 133, 2126, 2136, 212, 212, 74, 74, 74, 74, 2167, + 2208, 2177, -63, -63, -266, -266, -266, 1782, -266, -266, + -266, -38, -2, -266, 119, 934, 1079, 110, 127, 1265, + 128, 131, 132, 135, -58, 136, 126, 130, 1016, 134, + 141, 142, -266, 146, 50, 50, -266, -266, 881, -266, + -266, -266, -266, -266, -266, -266, -266, -266, -266, -266, + -266, -266, -266, -266, -266, -266, -266, -266, -266, -266, + -266, -266, -266, -266, 145, 148, 149, 150, 151, -266, + -266, 1189, -266, -266, -266, -266, 108, 1822, -1, 156, + 1862, 1, 164, 1902, 1941, 160, 2095, 1079, -266, 119, + -266, 1079, -266, -266, 987, 2047, -266, 1079, 171, 1079, + 397, -38, 1079, 129, 174, 176, -266, -266, -266, -266, + 2082, -266, 1079, 1079, 1079, -266, -266, 1299, 1299, -266, + -266, -266, -266, -266, -266, -266, 169, 180, 186, 187, + 105, -266, -266, 1079, 1079, 1079, 1079, 1079, 1079, 1079, + 1079, 1079, 1079, 1079, 184, -266, 1079, 188, -266, 1079, + 191, 1079, 192, 2095, 19, -266, -266, -266, 1464, 197, + 1498, 190, -266, -266, -266, -17, -15, 1532, -266, -266, + -266, 36, 58, 1742, 1079, 1079, 1079, 1079, 2095, 2095, + 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 198, + 59, 203, 77, 204, 1566, 1079, -266, 1265, 1079, 1265, + 1079, 1079, -38, 64, 199, 200, 1600, 1342, 1386, 1430, + 1079, -266, 1079, -266, 1079, -266, 78, 234, 1634, -266, + 2095, 201, 1668, 238, -266, -266, -266, 202, 207, 1079, + 211, 1079, 213, 1079, 79, 80, 92, -266, 1265, 214, + 397, 1265, 1079, -266, -266, 224, -266, 228, -266, 229, + -266, -266, -266, -266, -266, 237, -266, 1702, 230, 231, + 233, 1265, 1265, -266, -266, -266, -266, -266 }; const unsigned char parser::yydefact_[] = { - 3, 12, 13, 0, 0, 0, 205, 0, 2, 7, - 8, 9, 14, 15, 16, 0, 206, 207, 0, 0, - 0, 1, 4, 5, 6, 175, 0, 10, 11, 209, - 0, 0, 174, 204, 0, 0, 196, 0, 216, 215, - 198, 199, 200, 201, 202, 0, 177, 0, 0, 0, - 0, 0, 208, 212, 214, 0, 90, 91, 92, 129, - 130, 131, 132, 158, 159, 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, - 0, 0, 0, 0, 207, 0, 0, 207, 0, 0, - 0, 177, 197, 179, 0, 176, 180, 157, 156, 211, - 213, 203, 18, 0, 0, 0, 0, 0, 0, 0, + 3, 12, 13, 0, 0, 0, 206, 205, 0, 2, + 7, 8, 9, 14, 15, 16, 0, 208, 207, 0, + 0, 0, 1, 4, 5, 6, 175, 0, 10, 11, + 210, 0, 0, 174, 203, 0, 0, 195, 0, 217, + 216, 197, 198, 199, 200, 201, 0, 177, 0, 0, + 0, 0, 0, 205, 209, 213, 215, 0, 90, 91, + 92, 129, 130, 131, 132, 158, 159, 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, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 177, 196, 179, 0, 176, 180, 157, + 156, 212, 214, 202, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 185, 0, 0, 184, 160, 161, 207, 0, + 0, 0, 0, 0, 0, 0, 160, 161, 0, 0, 177, 0, 17, 0, 19, 173, 0, 177, 0, 0, - 177, 0, 0, 186, 0, 179, 0, 172, 0, 122, + 177, 0, 0, 185, 0, 179, 0, 172, 0, 122, 123, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 124, 125, 126, 127, 128, 0, 183, 0, - 0, 176, 181, 0, 0, 0, 0, 0, 0, 0, + 120, 121, 124, 125, 126, 127, 128, 0, 184, 204, + 183, 0, 0, 176, 181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 187, 188, 189, 190, 0, - 191, 192, 193, 194, 195, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 178, 0, 182, 0, 162, 177, - 51, 47, 0, 0, 71, 0, 0, 0, 57, 0, - 0, 0, 0, 0, 82, 83, 84, 86, 0, 87, - 177, 177, 0, 187, 188, 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, 164, 177, 0, 166, 177, 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, 177, 163, 0, 0, 0, 94, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 177, 165, 177, - 167, 177, 210, 0, 72, 0, 74, 93, 0, 0, - 0, 79, 88, 89, 0, 0, 177, 0, 177, 0, - 177, 0, 0, 0, 168, 0, 0, 57, 0, 0, - 63, 65, 176, 68, 176, 70, 176, 169, 170, 171, - 73, 75, 0, 77, 0, 0, 0, 0, 0, 0, - 64, 67, 69, 76, 78 + 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, 186, 187, 188, + 189, 0, 190, 191, 192, 193, 194, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 178, 0, 182, 0, + 162, 177, 51, 47, 0, 0, 71, 0, 0, 0, + 57, 0, 0, 0, 0, 0, 82, 83, 84, 86, + 0, 87, 177, 177, 0, 186, 187, 106, 108, 52, + 48, 60, 61, 62, 58, 59, 0, 0, 0, 0, + 0, 107, 109, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 164, 177, 0, 166, 177, + 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, 177, 163, 0, 0, 0, + 94, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 177, 165, 177, 167, 177, 211, 0, 72, 0, 74, + 93, 0, 0, 0, 79, 88, 89, 0, 0, 177, + 0, 177, 0, 177, 0, 0, 0, 168, 0, 0, + 57, 0, 0, 63, 65, 176, 68, 176, 70, 176, + 169, 170, 171, 73, 75, 0, 77, 0, 0, 0, + 0, 0, 0, 64, 67, 69, 76, 78 }; const short parser::yypgoto_[] = { - -263, -263, -263, 283, 290, 292, -263, -263, -263, 205, - 117, -263, -263, -263, -86, -87, -263, -263, -263, -263, - -263, -263, -263, -263, -263, -263, -263, -263, -263, -263, - -263, -263, -263, -263, -263, -263, -263, -263, -263, 188, - -263, -262, -261, -258, -263, -263, -263, -263, -263, -141, - -28, -57, -40, -263, -263, 262, -45, -263, -18, 156, - -263, -263, 239, -263, -263, -263, 248, 276, 321, 331, - -263, -263, 0, 9, -263, -11, -263, -263, 132, -263, - -263 + -266, -266, -266, 286, 289, 291, -266, -266, -266, -179, + 93, -266, -266, -266, -91, -108, -266, -266, -266, -266, + -266, -266, -266, -266, -266, -266, -266, -266, -266, -266, + -266, -266, -266, -266, -266, -266, -266, -266, -266, 196, + -266, -265, -255, -254, -266, -266, -266, -266, -266, -31, + -5, -69, -66, -266, -266, -26, -46, -266, 208, 266, + -266, -266, 306, -266, -266, -266, 340, 380, 389, 394, + -266, -266, -266, 0, 9, -266, -18, -266, -266, 114, + -266, -266 }; const short parser::yydefgoto_[] = { - 0, 7, 8, 9, 10, 11, 12, 13, 14, 204, - 205, 262, 206, 207, 208, 328, 209, 210, 211, 212, - 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, - 223, 224, 225, 226, 227, 228, 229, 230, 231, 103, - 388, 232, 233, 234, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 31, 104, 181, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89 + 0, 8, 9, 10, 11, 12, 13, 14, 15, 206, + 207, 264, 208, 209, 210, 331, 211, 212, 213, 214, + 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 227, 228, 229, 230, 231, 232, 233, 105, + 391, 234, 235, 236, 58, 59, 60, 61, 62, 63, + 64, 65, 66, 67, 32, 106, 183, 68, 69, 70, + 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 180, 83, 84, 85, 86, 87, 88, 89, + 90, 91 }; const short parser::yytable_[] = { - 15, 105, 235, 17, 17, 144, 329, 330, 15, 30, - 331, 21, 18, 19, 136, 1, 2, 3, 4, 5, - 27, 93, 114, 115, 96, 32, 271, 368, 20, 34, - 35, 137, 37, 29, 94, 97, 54, 41, 42, 43, - 44, 28, 235, 95, 98, 201, 235, 106, 127, 128, - 129, 130, 131, 202, 203, 369, 105, 25, 129, 130, - 131, 283, 283, 16, 6, 235, 16, 6, 140, 109, - 110, 138, 29, 91, -195, -195, -207, -195, 92, 258, - 139, -195, 6, 26, 156, 90, 140, 16, 6, 99, - -195, 111, 145, -195, -207, 34, 35, 141, 37, 16, - 6, 142, 6, 41, 42, 43, 44, 312, 146, 315, - 147, 201, 156, 363, 156, 236, 143, 371, 156, 372, - 150, 235, 156, 378, 156, 237, 140, 283, 156, 148, - 380, -195, -195, -195, 178, 156, 149, 404, 151, 417, - 156, 182, 156, 244, 156, 329, 330, 152, 247, 331, - 157, 250, 139, 16, 6, 236, 179, 264, 418, 236, - 259, -187, -187, 156, -187, 237, 419, 265, -187, 237, - 267, 156, 268, 274, 284, 284, 269, -187, 236, 257, - -187, 272, 136, 244, 237, 237, 270, 244, 237, 275, - 276, 279, 139, 280, -188, -188, 139, -188, 281, 137, - 282, -188, 244, 244, 289, 290, 244, 291, 313, 292, - -188, 139, 139, -188, 55, 139, 316, 319, -187, -187, - -187, 293, 326, 235, 335, 235, 110, 336, 136, 136, - 341, 342, 343, 100, 236, 344, 107, 108, 356, 138, - 284, 358, 360, 362, 237, 137, 137, 405, 139, 365, - 237, -188, -188, -188, 127, 128, 129, 130, 131, 377, - 367, 379, 244, 381, 235, 392, 283, 235, 244, 333, - 393, 139, 407, 409, 410, 136, 411, 139, 413, 415, - 421, 425, 426, 427, 391, 138, 138, 235, 235, 155, - 428, 22, 137, 430, 139, 139, 431, 432, 23, 238, - 24, 158, 159, 160, 161, 162, 163, 164, 165, 166, + 16, 107, 144, 31, 136, 332, 263, 137, 6, 16, + 268, 26, 19, 20, 371, 333, 334, 1, 2, 3, + 4, 5, 35, 36, 6, 38, 33, 178, 21, 6, + 131, 132, 133, 95, 273, 96, 99, 27, 134, 22, + 30, 300, 372, 56, 97, 100, 301, 302, 108, 93, + 260, 315, 6, 318, 94, 156, 156, 107, 156, 7, + 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, + 313, 366, 28, 138, 17, 53, 156, 6, 179, 17, + 53, 29, 139, 17, 18, 326, 98, 30, 374, 35, + 36, 113, 38, 156, 145, 92, 6, 42, 43, 44, + 45, 101, 142, 7, -207, 203, -194, -194, 141, -194, + 375, 381, 237, -194, 182, 156, 156, 143, 140, 147, + 146, 248, -194, 150, 251, -194, 149, 17, 53, 383, + 407, 420, 421, 156, 156, 156, 156, 156, 238, 116, + 117, 184, 148, 246, 422, 332, 17, 53, 249, 156, + 151, 252, 139, 152, 237, 333, 334, 157, 237, 140, + 111, 112, 181, -194, -194, 129, 130, 131, 132, 133, + 261, 266, 136, 285, 285, 137, 274, 237, 267, 269, + 238, 259, 270, 271, 238, 246, 272, 277, 387, 246, + 389, 278, 282, 283, 139, 281, 276, 329, 139, 286, + 286, 284, 179, 238, 246, 246, 291, 316, 246, 292, + 293, 294, 295, 139, 139, 319, 322, 139, 136, 136, + 344, 137, 137, 57, 129, 130, 131, 132, 133, 423, + 112, 345, 426, 237, 338, 324, 339, 346, 347, 285, + 359, 138, 102, 365, 361, 109, 110, 363, 368, 380, + 139, 370, 436, 437, 382, 384, 341, 342, 408, 238, + 395, 396, 410, 413, 246, 286, 136, 412, 414, 137, + 246, 336, 416, 139, 418, 424, 428, 116, 117, 139, + 429, 430, 394, 122, 123, 124, 125, 138, 138, 431, + 360, 433, 434, 362, 435, 23, 139, 139, 24, 155, + 25, 290, 425, 129, 130, 131, 132, 133, 275, 0, + 0, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 422, 177, 0, 288, 273, 0, 0, 0, 0, 0, - 0, 0, 138, 0, 245, 0, 236, 248, 236, 238, - 251, 139, 252, 238, 254, 0, 237, 0, 237, 0, - 0, 412, 0, 414, 0, 416, 0, 0, 238, 238, - 0, 0, 238, 0, 244, 0, 244, 0, 0, 390, - 0, 0, 263, 139, 0, 139, 0, 236, 0, 284, - 236, 0, 239, 0, 278, 0, 0, 237, 261, 237, - 237, 240, 266, 0, 0, 0, 0, 0, 0, 0, - 236, 236, 180, 0, 0, 244, 0, 244, 244, 246, - 237, 237, 249, 0, 139, 0, 139, 139, 238, 241, - 0, 0, 239, 0, 238, 0, 239, 0, 244, 244, - 0, 240, 0, 0, 0, 240, 0, 139, 139, 0, - 0, 285, 286, 320, 0, 239, 0, 0, 0, 0, - 240, 240, 0, 325, 240, 327, 0, 0, 334, 241, - 0, 0, 0, 241, 242, 0, 0, 323, 0, 0, - 340, 0, 0, 0, 243, 0, 0, 0, 241, 241, - 0, 0, 241, 0, 0, 0, 0, 0, 345, 346, - 347, 348, 349, 350, 351, 352, 353, 354, 355, 0, - 0, 239, 0, 0, 242, 0, 361, 332, 242, 0, - 240, 0, 0, 0, 243, 0, 240, 0, 243, 0, - 238, 321, 238, 242, 242, 0, 0, 242, 0, 373, - 374, 375, 376, 243, 243, 0, 0, 243, 241, 0, - 0, 0, 338, 339, 241, 0, 0, 0, 0, 0, - 0, 0, 0, 385, 0, 387, 389, 0, 0, 0, - 0, 238, 0, 238, 238, 0, 0, 0, 0, 384, - 0, 386, 0, 0, 0, 357, 0, 0, 359, -189, - -189, 0, -189, 242, 238, 238, -189, 0, 0, 242, - 0, 0, 0, 243, 0, -189, 0, 424, -189, 243, - 0, -190, -190, 239, -190, 239, 0, 0, -190, 0, - 420, 0, 240, 423, 240, 0, 0, -190, 0, 0, - -190, 0, 114, 115, 383, 0, 118, 119, 120, 121, - 122, 123, 0, 433, 434, 0, -189, -189, -189, 401, - 241, 402, 241, 403, 239, 0, 332, 239, 127, 128, - 129, 130, 131, 240, 0, 240, 240, 0, -190, -190, - -190, 0, 0, 34, 35, 0, 37, 239, 239, 0, - 132, 0, 0, 0, 0, 0, 240, 240, 0, 133, - 0, 241, 134, 241, 241, 242, 0, 242, 0, 0, - 0, 0, 0, 0, 0, 243, 0, 243, 0, -191, - -191, 0, -191, 0, 241, 241, -191, 0, 0, 0, - 0, 0, 0, 0, 0, -191, 0, 0, -191, 0, - 135, 16, 6, 0, 0, 0, 242, 0, 242, 242, - 0, 0, 0, 0, 0, 0, 243, 0, 243, 243, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 242, - 242, 0, 0, 183, 0, 0, -191, -191, -191, 243, - 243, 184, 0, 0, 185, 186, 0, 187, 188, 189, - 190, 0, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 34, 35, 0, 37, 0, 0, 0, 0, 41, - 42, 43, 44, 0, 0, 143, 200, 201, 0, 183, - 0, 0, 0, 0, 0, 202, 203, 184, 0, 0, - 185, 186, 0, 187, 188, 189, 190, 0, 191, 192, - 193, 194, 195, 196, 197, 198, 199, 34, 35, 0, - 37, 0, 0, 0, 0, 41, 42, 43, 44, 16, - 6, 143, 287, 201, 0, 0, 260, 0, 0, 0, - 0, 202, 203, 184, 0, 0, 185, 186, 0, 187, - 188, 189, 190, 0, 191, 192, 193, 194, 195, 196, - 197, 198, 199, 34, 35, 0, 37, 0, 0, 0, - 0, 41, 42, 43, 44, 16, 6, 143, 0, 201, - 0, 0, 322, 0, 0, 0, 0, 202, 203, 184, - 0, 0, 185, 186, 0, 187, 188, 189, 190, 0, - 191, 192, 193, 194, 195, 196, 197, 198, 199, 34, - 35, 0, 37, 33, 0, 0, 0, 41, 42, 43, - 44, 16, 6, 143, 0, 201, 0, 0, 0, 0, - 0, 0, 0, 202, 203, 0, 34, 35, 36, 37, - 38, 39, 40, 0, 41, 42, 43, 44, 45, 0, - 0, 0, 101, 102, 0, 0, 47, 0, 0, 0, - 34, 35, 0, 37, 0, 0, 0, 16, 6, 0, - 0, 0, 48, 49, 0, 0, 133, 33, 0, 134, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, - 0, 0, 51, 0, 16, 6, 29, 52, 53, 54, - 34, 35, 36, 37, 38, 39, 40, 0, 41, 42, - 43, 44, 45, 0, 0, 0, 46, 135, 16, 6, - 47, 0, 277, 0, -192, -192, 0, -192, 0, 0, - 0, -192, -193, -193, 0, -193, 48, 49, 0, -193, - -192, 33, 0, -192, 0, 0, 0, 0, -193, 0, - 0, -193, 0, 50, 0, 0, 51, 0, 16, 6, - 29, 52, 53, 54, 34, 35, 36, 37, 38, 39, - 40, 0, 41, 42, 43, 44, 45, 0, 0, 0, - 46, -192, -192, -192, 47, 0, 0, 0, 0, -193, - -193, -193, -194, -194, 0, -194, 0, 0, 0, -194, - 48, 49, 0, 0, 0, 33, 0, 0, -194, 0, - 0, -194, 0, 0, 0, 0, 0, 50, 0, 0, - 51, 0, 16, 6, 29, 52, 53, 54, 34, 35, - 36, 37, 38, 39, 40, 0, 41, 42, 43, 44, - 45, 0, 0, 0, 101, 0, 0, 0, 47, -194, - -194, -194, 0, 0, 294, 295, 0, 296, 297, 0, - 0, 0, 0, 0, 48, 49, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 34, 35, 0, 37, - 0, 50, 0, 0, 51, 0, 16, 6, 29, 52, - 53, 54, 133, 0, 0, 134, 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, 0, 0, 0, 0, - 0, 0, 0, 135, 16, 6, 184, 0, 0, 185, - 186, 0, 187, 188, 189, 190, 0, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 34, 35, 0, 37, - 34, 35, 0, 37, 41, 42, 43, 44, 0, 0, - 143, 0, 201, 0, 0, 0, 133, 0, 0, 134, - 202, 203, 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, - 0, 153, 0, 0, 16, 6, 154, 135, 16, 6, - 0, 113, 0, 0, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 124, 125, 126, - 127, 128, 129, 130, 131, 395, 0, 0, 0, 0, - 396, 0, 0, 0, 0, 113, 0, 0, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 0, 0, + 177, 0, 0, 0, 0, 138, 237, 0, 237, 386, + 0, 0, 247, 0, 139, 250, 0, 0, 253, 0, + 254, 239, 256, 415, 404, 417, 405, 419, 406, 0, + 0, 0, 238, 0, 238, 0, 0, 246, 0, 246, + 0, 0, 393, 0, 0, 0, 139, 237, 139, 285, + 237, 0, 265, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 239, 280, 0, 0, 239, 0, 0, + 237, 237, 0, 238, 0, 286, 238, 0, 246, 240, + 246, 246, 239, 239, 0, 0, 239, 139, 0, 139, + 139, 0, 0, 0, 0, 0, 238, 238, 0, 0, + 0, 246, 246, 0, 0, 0, 35, 36, 0, 38, + 139, 139, 0, 6, 42, 43, 44, 45, 0, 241, + 0, 240, 203, 323, 0, 240, 0, 0, 0, 0, + 204, 205, 0, 328, 0, 330, 0, 0, 337, 0, + 240, 240, 239, 0, 240, 0, 0, 0, 239, 0, + 343, 0, 0, 242, 0, 0, 0, 0, 0, 0, + 0, 241, 0, 17, 53, 241, 0, 0, 0, 348, + 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, + 287, 288, 0, 0, 241, -186, -186, 364, -186, 0, + 0, 0, -186, 243, 0, 242, 0, 0, 0, 242, + 240, -186, 244, 0, -186, 0, 240, 245, 0, 0, + 376, 377, 378, 379, 242, 242, 0, 0, 242, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 124, 125, 126, 127, 128, 129, 130, 131, 397, - 0, 0, 0, 0, 398, 0, 0, 0, 0, 113, - 0, 0, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 124, 125, 126, 127, 128, - 129, 130, 131, 399, 0, 0, 0, 0, 400, 0, - 0, 0, 0, 113, 0, 0, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 364, 0, 124, - 125, 126, 127, 128, 129, 130, 131, 113, 0, 0, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, + 0, 0, 0, 0, 388, 243, 390, 392, 0, 243, + 241, 0, -186, -186, 244, 239, 335, 239, 244, 245, + 0, 0, 0, 245, 243, 243, 0, 0, 243, 0, + 0, 0, 0, 244, 244, 0, 0, 244, 245, 245, + 0, 0, 245, 0, 242, 0, 0, 0, 427, 0, + 242, 0, 0, 0, 0, 0, 239, 0, 239, 239, + 0, 0, -187, -187, 0, -187, 0, 0, 0, -187, + 0, 0, 0, 240, 0, 240, 0, 0, -187, 239, + 239, -187, 0, 0, 243, 0, 0, 0, 0, 0, + 243, 0, 0, 244, 0, 0, 0, 0, 245, 244, + 34, 0, 0, 0, 245, 0, 0, 0, 0, 0, + 0, 0, 0, 241, 240, 241, 240, 240, 0, -187, + -187, 0, 0, 35, 36, 37, 38, 39, 40, 41, + 6, 42, 43, 44, 45, 46, 0, 240, 240, 103, + 104, 0, 0, 48, 0, 0, 0, 242, 0, 242, + 0, 0, 0, 0, 241, 0, 335, 241, 0, 49, + 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 51, 241, 241, 52, + 17, 53, 30, 54, 55, 56, 0, 243, 242, 243, + 242, 242, 0, 0, 0, 0, 244, 0, 244, 0, + 0, 245, 0, 245, 0, 0, 0, 0, 0, 0, + 0, 242, 242, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 243, 0, + 243, 243, 0, 0, 0, 0, 0, 244, 0, 244, + 244, 0, 245, 0, 245, 245, 0, 0, 0, 0, + 0, 243, 243, 0, 0, 0, 185, 0, 0, 0, + 244, 244, 0, 0, 186, 245, 245, 187, 188, 0, + 189, 190, 191, 192, 0, 193, 194, 195, 196, 197, + 198, 199, 200, 201, 35, 36, 0, 38, 0, 0, + 0, 6, 42, 43, 44, 45, 0, 0, 143, 202, + 203, 0, 0, 0, 0, 0, 0, 0, 204, 205, + 0, 0, 0, 0, 0, -188, -188, 0, -188, 0, + -189, -189, -188, -189, 0, 0, 0, -189, 0, 0, + 0, -188, 185, 0, -188, 0, -189, 0, 0, -189, + 186, 17, 53, 187, 188, 0, 189, 190, 191, 192, + 0, 193, 194, 195, 196, 197, 198, 199, 200, 201, + 35, 36, 0, 38, 0, 0, 0, 6, 42, 43, + 44, 45, -188, -188, 143, 289, 203, -189, -189, 0, + 0, 0, 0, 0, 204, 205, 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, 35, 36, 0, 38, 17, 53, 0, + 6, 42, 43, 44, 45, 0, 0, 143, 0, 203, + 0, 0, 0, 0, 0, 0, 0, 204, 205, 325, + 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, 35, 36, 0, 38, + 17, 53, 34, 6, 42, 43, 44, 45, 0, 0, + 143, 0, 203, 0, 0, 0, 0, 0, 0, 0, + 204, 205, 0, 0, 0, 35, 36, 37, 38, 39, + 40, 41, 6, 42, 43, 44, 45, 46, 0, 0, + 0, 47, 0, 0, 0, 48, 0, 279, 35, 36, + 0, 38, 0, 17, 53, 6, -190, -190, 0, -190, + 0, 49, 50, -190, 134, 34, 0, 135, 0, 0, + 0, 0, -190, 0, 0, -190, 0, 0, 51, 0, + 0, 52, 17, 53, 30, 54, 55, 56, 35, 36, + 37, 38, 39, 40, 41, 6, 42, 43, 44, 45, + 46, 0, 0, 0, 47, 17, 53, 0, 48, 0, + 0, 0, 0, -190, -190, -191, -191, 0, -191, 0, + 0, 0, -191, 0, 49, 50, 0, 0, 34, 0, + 0, -191, 0, 0, -191, 0, 0, 0, 0, 0, + 0, 51, 0, 0, 52, 17, 53, 30, 54, 55, + 56, 35, 36, 37, 38, 39, 40, 41, 6, 42, + 43, 44, 45, 46, 0, 0, 0, 103, 0, 0, + 0, 48, -191, -191, 0, 0, 296, 297, 0, 298, + 299, 0, 0, 0, 0, 0, 0, 49, 50, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 35, 36, + 0, 38, 0, 0, 51, 6, 0, 52, 17, 53, + 30, 54, 55, 56, 134, 0, 0, 300, 0, 0, + 0, 0, 301, 302, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, 313, 0, 0, 0, + 0, 0, 0, 0, 186, 17, 53, 187, 188, 0, + 189, 190, 191, 192, 0, 193, 194, 195, 196, 197, + 198, 199, 200, 201, 35, 36, 0, 38, 0, 0, + 0, 6, 42, 43, 44, 45, -192, -192, 143, -192, + 203, 0, 0, -192, -193, -193, 0, -193, 204, 205, + 0, -193, -192, 0, 0, -192, 0, 0, 35, 36, + -193, 38, 0, -193, 0, 6, 0, 0, 0, 0, + 153, 0, 0, 0, 134, 154, 0, 300, 0, 0, + 115, 17, 53, 116, 117, 118, 119, 120, 121, 122, + 123, 124, 125, -192, -192, 0, 0, 0, 0, 0, + 0, -193, -193, 0, 0, 0, 126, 127, 128, 129, + 130, 131, 132, 133, 398, 17, 53, 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, 0, 0, - 0, 366, 0, 124, 125, 126, 127, 128, 129, 130, - 131, 113, 0, 0, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 370, 0, 124, 125, 126, - 127, 128, 129, 130, 131, 113, 0, 0, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 382, - 0, 124, 125, 126, 127, 128, 129, 130, 131, 113, - 0, 0, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 394, 0, 124, 125, 126, 127, 128, - 129, 130, 131, 113, 0, 0, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 406, 0, 124, - 125, 126, 127, 128, 129, 130, 131, 113, 0, 0, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, + 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, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 367, 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, 408, 0, 124, 125, 126, 127, 128, 129, 130, - 131, 113, 0, 0, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 429, 0, 124, 125, 126, - 127, 128, 129, 130, 131, 113, 0, 0, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 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, 373, 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, 385, 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, 397, 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, 409, 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, 124, 125, 126, 127, 128, 129, 130, 131, 253, - 0, 0, 0, 0, 0, 113, 0, 0, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 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, 432, 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, 124, 125, 126, 127, 128, 129, 130, 131, 256, - 0, 0, 0, 0, 0, 113, 0, 0, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 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, - 0, 124, 125, 126, 127, 128, 129, 130, 131, 311, - 0, 0, 0, 0, 0, 113, 0, 0, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 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, - 0, 124, 125, 126, 127, 128, 129, 130, 131, 314, - 0, 0, 0, 0, 0, 113, 0, 0, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 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, - 0, 124, 125, 126, 127, 128, 129, 130, 131, 317, - 0, 0, 0, 0, 0, 113, 0, 0, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 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, - 0, 124, 125, 126, 127, 128, 129, 130, 131, 318, - 0, 0, 0, 0, 113, 0, 0, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 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, - 124, 125, 126, 127, 128, 129, 130, 131, 255, 0, - 113, 0, 0, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 124, 125, 126, 127, - 128, 129, 130, 131, 112, 113, 0, 0, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 0, 0, + 126, 127, 128, 129, 130, 131, 132, 133, 321, 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, - 0, 124, 125, 126, 127, 128, 129, 130, 131, 324, - 113, 0, 0, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 124, 125, 126, 127, - 128, 129, 130, 131, 337, 113, 0, 0, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 113, 0, - 0, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 0, - 0, 0, 0, 0, 124, 125, 126, 127, 128, 129, - 130, 131, 114, 115, 0, 117, 118, 119, 120, 121, - 122, 123, 114, 115, 0, 0, 118, 119, 120, 121, - 122, 123, 0, 0, 0, 124, 125, 126, 127, 128, - 129, 130, 131, 0, 0, 124, 125, 126, 127, 128, - 129, 130, 131, 114, 115, 0, 0, 118, 119, 120, - 121, 122, 123, 114, 115, 0, 0, 118, 119, 120, - 121, 122, 123, 0, 0, 0, 0, 125, 126, 127, - 128, 129, 130, 131, 0, 0, 0, 125, 0, 127, - 128, 129, 130, 131, 114, 115, 0, 0, 0, 0, - 120, 121, 122, 123, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 127, 128, 129, 130, 131 + 126, 127, 128, 129, 130, 131, 132, 133, 327, 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, 340, 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 }; const short parser::yycheck_[] = { - 0, 46, 143, 3, 4, 91, 268, 268, 8, 20, - 268, 0, 3, 4, 71, 11, 12, 13, 14, 15, - 61, 55, 65, 66, 55, 25, 92, 29, 51, 39, - 40, 71, 42, 99, 34, 35, 102, 47, 48, 49, - 50, 61, 183, 34, 35, 55, 187, 47, 91, 92, - 93, 94, 95, 63, 64, 57, 101, 51, 93, 94, - 95, 202, 203, 97, 98, 206, 97, 98, 51, 101, - 102, 71, 99, 52, 39, 40, 59, 42, 57, 52, - 71, 46, 98, 77, 57, 52, 51, 97, 98, 55, - 55, 98, 92, 58, 59, 39, 40, 59, 42, 97, - 98, 61, 98, 47, 48, 49, 50, 52, 55, 52, - 51, 55, 57, 52, 57, 143, 53, 52, 57, 52, - 51, 262, 57, 52, 57, 143, 51, 268, 57, 59, - 52, 96, 97, 98, 134, 57, 55, 52, 59, 52, - 57, 141, 57, 143, 57, 407, 407, 55, 148, 407, - 56, 151, 143, 97, 98, 183, 59, 61, 52, 187, - 51, 39, 40, 57, 42, 183, 52, 51, 46, 187, - 51, 57, 51, 60, 202, 203, 51, 55, 206, 179, - 58, 192, 239, 183, 202, 203, 51, 187, 206, 61, - 61, 61, 183, 51, 39, 40, 187, 42, 51, 239, - 55, 46, 202, 203, 61, 61, 206, 61, 51, 61, - 55, 202, 203, 58, 26, 206, 51, 56, 96, 97, - 98, 61, 26, 364, 60, 366, 102, 60, 285, 286, - 51, 51, 51, 45, 262, 51, 48, 49, 56, 239, - 268, 56, 56, 51, 262, 285, 286, 24, 239, 51, - 268, 96, 97, 98, 91, 92, 93, 94, 95, 51, - 61, 51, 262, 51, 405, 61, 407, 408, 268, 269, - 61, 262, 61, 29, 61, 332, 61, 268, 61, 61, - 61, 52, 52, 52, 370, 285, 286, 428, 429, 101, - 52, 8, 332, 61, 285, 286, 61, 61, 8, 143, - 8, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 407, 133, -1, 206, 192, -1, -1, -1, -1, -1, - -1, -1, 332, -1, 146, -1, 364, 149, 366, 183, - 152, 332, 154, 187, 156, -1, 364, -1, 366, -1, - -1, 396, -1, 398, -1, 400, -1, -1, 202, 203, - -1, -1, 206, -1, 364, -1, 366, -1, -1, 369, - -1, -1, 184, 364, -1, 366, -1, 405, -1, 407, - 408, -1, 143, -1, 196, -1, -1, 405, 183, 407, - 408, 143, 187, -1, -1, -1, -1, -1, -1, -1, - 428, 429, 140, -1, -1, 405, -1, 407, 408, 147, - 428, 429, 150, -1, 405, -1, 407, 408, 262, 143, - -1, -1, 183, -1, 268, -1, 187, -1, 428, 429, - -1, 183, -1, -1, -1, 187, -1, 428, 429, -1, - -1, 202, 203, 255, -1, 206, -1, -1, -1, -1, - 202, 203, -1, 265, 206, 267, -1, -1, 270, 183, - -1, -1, -1, 187, 143, -1, -1, 262, -1, -1, - 282, -1, -1, -1, 143, -1, -1, -1, 202, 203, - -1, -1, 206, -1, -1, -1, -1, -1, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, -1, - -1, 262, -1, -1, 183, -1, 318, 268, 187, -1, - 262, -1, -1, -1, 183, -1, 268, -1, 187, -1, - 364, 259, 366, 202, 203, -1, -1, 206, -1, 341, - 342, 343, 344, 202, 203, -1, -1, 206, 262, -1, - -1, -1, 280, 281, 268, -1, -1, -1, -1, -1, - -1, -1, -1, 365, -1, 367, 368, -1, -1, -1, - -1, 405, -1, 407, 408, -1, -1, -1, -1, 364, - -1, 366, -1, -1, -1, 313, -1, -1, 316, 39, - 40, -1, 42, 262, 428, 429, 46, -1, -1, 268, - -1, -1, -1, 262, -1, 55, -1, 409, 58, 268, - -1, 39, 40, 364, 42, 366, -1, -1, 46, -1, - 405, -1, 364, 408, 366, -1, -1, 55, -1, -1, - 58, -1, 65, 66, 362, -1, 69, 70, 71, 72, - 73, 74, -1, 428, 429, -1, 96, 97, 98, 377, - 364, 379, 366, 381, 405, -1, 407, 408, 91, 92, - 93, 94, 95, 405, -1, 407, 408, -1, 96, 97, - 98, -1, -1, 39, 40, -1, 42, 428, 429, -1, - 46, -1, -1, -1, -1, -1, 428, 429, -1, 55, - -1, 405, 58, 407, 408, 364, -1, 366, -1, -1, - -1, -1, -1, -1, -1, 364, -1, 366, -1, 39, - 40, -1, 42, -1, 428, 429, 46, -1, -1, -1, - -1, -1, -1, -1, -1, 55, -1, -1, 58, -1, - 96, 97, 98, -1, -1, -1, 405, -1, 407, 408, - -1, -1, -1, -1, -1, -1, 405, -1, 407, 408, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 428, - 429, -1, -1, 11, -1, -1, 96, 97, 98, 428, - 429, 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, -1, -1, 53, 54, 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, -1, 12, -1, -1, -1, - -1, 63, 64, 19, -1, -1, 22, 23, -1, 25, + 0, 47, 93, 21, 73, 270, 185, 73, 46, 9, + 189, 51, 3, 4, 29, 270, 270, 11, 12, 13, + 14, 15, 39, 40, 46, 42, 26, 46, 51, 46, + 93, 94, 95, 55, 92, 35, 36, 77, 55, 0, + 98, 58, 57, 101, 35, 36, 63, 64, 48, 52, + 52, 52, 46, 52, 57, 57, 57, 103, 57, 97, + 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, + 87, 52, 61, 73, 96, 97, 57, 46, 97, 96, + 97, 61, 73, 96, 97, 264, 55, 98, 52, 39, + 40, 97, 42, 57, 94, 52, 46, 47, 48, 49, + 50, 55, 61, 97, 59, 55, 39, 40, 59, 42, + 52, 52, 143, 46, 140, 57, 57, 53, 51, 51, + 55, 147, 55, 51, 150, 58, 55, 96, 97, 52, + 52, 52, 52, 57, 57, 57, 57, 57, 143, 65, + 66, 141, 59, 143, 52, 410, 96, 97, 148, 57, + 59, 151, 143, 55, 185, 410, 410, 56, 189, 51, + 100, 101, 59, 96, 97, 91, 92, 93, 94, 95, + 51, 61, 241, 204, 205, 241, 194, 208, 51, 51, + 185, 181, 51, 51, 189, 185, 51, 61, 367, 189, + 369, 61, 51, 51, 185, 61, 60, 26, 189, 204, + 205, 55, 97, 208, 204, 205, 61, 51, 208, 61, + 61, 61, 61, 204, 205, 51, 56, 208, 287, 288, + 51, 287, 288, 27, 91, 92, 93, 94, 95, 408, + 101, 51, 411, 264, 60, 261, 60, 51, 51, 270, + 56, 241, 46, 51, 56, 49, 50, 56, 51, 51, + 241, 61, 431, 432, 51, 51, 282, 283, 24, 264, + 61, 61, 61, 61, 264, 270, 335, 29, 61, 335, + 270, 271, 61, 264, 61, 61, 52, 65, 66, 270, + 52, 52, 373, 71, 72, 73, 74, 287, 288, 52, + 316, 61, 61, 319, 61, 9, 287, 288, 9, 103, + 9, 208, 410, 91, 92, 93, 94, 95, 194, -1, + -1, 115, 116, 117, 118, 119, 120, 121, 122, 123, + 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, + 134, -1, -1, -1, -1, 335, 367, -1, 369, 365, + -1, -1, 146, -1, 335, 149, -1, -1, 152, -1, + 154, 143, 156, 399, 380, 401, 382, 403, 384, -1, + -1, -1, 367, -1, 369, -1, -1, 367, -1, 369, + -1, -1, 372, -1, -1, -1, 367, 408, 369, 410, + 411, -1, 186, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 185, 198, -1, -1, 189, -1, -1, + 431, 432, -1, 408, -1, 410, 411, -1, 408, 143, + 410, 411, 204, 205, -1, -1, 208, 408, -1, 410, + 411, -1, -1, -1, -1, -1, 431, 432, -1, -1, + -1, 431, 432, -1, -1, -1, 39, 40, -1, 42, + 431, 432, -1, 46, 47, 48, 49, 50, -1, 143, + -1, 185, 55, 257, -1, 189, -1, -1, -1, -1, + 63, 64, -1, 267, -1, 269, -1, -1, 272, -1, + 204, 205, 264, -1, 208, -1, -1, -1, 270, -1, + 284, -1, -1, 143, -1, -1, -1, -1, -1, -1, + -1, 185, -1, 96, 97, 189, -1, -1, -1, 303, + 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, + 204, 205, -1, -1, 208, 39, 40, 321, 42, -1, + -1, -1, 46, 143, -1, 185, -1, -1, -1, 189, + 264, 55, 143, -1, 58, -1, 270, 143, -1, -1, + 344, 345, 346, 347, 204, 205, -1, -1, 208, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 368, 185, 370, 371, -1, 189, + 264, -1, 96, 97, 185, 367, 270, 369, 189, 185, + -1, -1, -1, 189, 204, 205, -1, -1, 208, -1, + -1, -1, -1, 204, 205, -1, -1, 208, 204, 205, + -1, -1, 208, -1, 264, -1, -1, -1, 412, -1, + 270, -1, -1, -1, -1, -1, 408, -1, 410, 411, + -1, -1, 39, 40, -1, 42, -1, -1, -1, 46, + -1, -1, -1, 367, -1, 369, -1, -1, 55, 431, + 432, 58, -1, -1, 264, -1, -1, -1, -1, -1, + 270, -1, -1, 264, -1, -1, -1, -1, 264, 270, + 16, -1, -1, -1, 270, -1, -1, -1, -1, -1, + -1, -1, -1, 367, 408, 369, 410, 411, -1, 96, + 97, -1, -1, 39, 40, 41, 42, 43, 44, 45, + 46, 47, 48, 49, 50, 51, -1, 431, 432, 55, + 56, -1, -1, 59, -1, -1, -1, 367, -1, 369, + -1, -1, -1, -1, 408, -1, 410, 411, -1, 75, + 76, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 92, 431, 432, 95, + 96, 97, 98, 99, 100, 101, -1, 367, 408, 369, + 410, 411, -1, -1, -1, -1, 367, -1, 369, -1, + -1, 367, -1, 369, -1, -1, -1, -1, -1, -1, + -1, 431, 432, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 408, -1, + 410, 411, -1, -1, -1, -1, -1, 408, -1, 410, + 411, -1, 408, -1, 410, 411, -1, -1, -1, -1, + -1, 431, 432, -1, -1, -1, 11, -1, -1, -1, + 431, 432, -1, -1, 19, 431, 432, 22, 23, -1, + 25, 26, 27, 28, -1, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, -1, 42, -1, -1, + -1, 46, 47, 48, 49, 50, -1, -1, 53, 54, + 55, -1, -1, -1, -1, -1, -1, -1, 63, 64, + -1, -1, -1, -1, -1, 39, 40, -1, 42, -1, + 39, 40, 46, 42, -1, -1, -1, 46, -1, -1, + -1, 55, 11, -1, 58, -1, 55, -1, -1, 58, + 19, 96, 97, 22, 23, -1, 25, 26, 27, 28, + -1, 30, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, -1, 42, -1, -1, -1, 46, 47, 48, + 49, 50, 96, 97, 53, 54, 55, 96, 97, -1, + -1, -1, -1, -1, 63, 64, 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, -1, -1, -1, - -1, 47, 48, 49, 50, 97, 98, 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, 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, -1, -1, -1, - 39, 40, -1, 42, -1, -1, -1, 97, 98, -1, - -1, -1, 75, 76, -1, -1, 55, 16, -1, 58, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 92, - -1, -1, 95, -1, 97, 98, 99, 100, 101, 102, - 39, 40, 41, 42, 43, 44, 45, -1, 47, 48, - 49, 50, 51, -1, -1, -1, 55, 96, 97, 98, - 59, -1, 61, -1, 39, 40, -1, 42, -1, -1, - -1, 46, 39, 40, -1, 42, 75, 76, -1, 46, - 55, 16, -1, 58, -1, -1, -1, -1, 55, -1, - -1, 58, -1, 92, -1, -1, 95, -1, 97, 98, - 99, 100, 101, 102, 39, 40, 41, 42, 43, 44, - 45, -1, 47, 48, 49, 50, 51, -1, -1, -1, - 55, 96, 97, 98, 59, -1, -1, -1, -1, 96, - 97, 98, 39, 40, -1, 42, -1, -1, -1, 46, - 75, 76, -1, -1, -1, 16, -1, -1, 55, -1, - -1, 58, -1, -1, -1, -1, -1, 92, -1, -1, - 95, -1, 97, 98, 99, 100, 101, 102, 39, 40, - 41, 42, 43, 44, 45, -1, 47, 48, 49, 50, - 51, -1, -1, -1, 55, -1, -1, -1, 59, 96, - 97, 98, -1, -1, 17, 18, -1, 20, 21, -1, - -1, -1, -1, -1, 75, 76, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 39, 40, -1, 42, - -1, 92, -1, -1, 95, -1, 97, 98, 99, 100, - 101, 102, 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, -1, -1, -1, -1, - -1, -1, -1, 96, 97, 98, 19, -1, -1, 22, + 36, 37, 38, 39, 40, -1, 42, 96, 97, -1, + 46, 47, 48, 49, 50, -1, -1, 53, -1, 55, + -1, -1, -1, -1, -1, -1, -1, 63, 64, 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, - 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, -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, 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, 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, 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, + 96, 97, 16, 46, 47, 48, 49, 50, -1, -1, + 53, -1, 55, -1, -1, -1, -1, -1, -1, -1, + 63, 64, -1, -1, -1, 39, 40, 41, 42, 43, + 44, 45, 46, 47, 48, 49, 50, 51, -1, -1, + -1, 55, -1, -1, -1, 59, -1, 61, 39, 40, + -1, 42, -1, 96, 97, 46, 39, 40, -1, 42, + -1, 75, 76, 46, 55, 16, -1, 58, -1, -1, + -1, -1, 55, -1, -1, 58, -1, -1, 92, -1, + -1, 95, 96, 97, 98, 99, 100, 101, 39, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, + 51, -1, -1, -1, 55, 96, 97, -1, 59, -1, + -1, -1, -1, 96, 97, 39, 40, -1, 42, -1, + -1, -1, 46, -1, 75, 76, -1, -1, 16, -1, + -1, 55, -1, -1, 58, -1, -1, -1, -1, -1, + -1, 92, -1, -1, 95, 96, 97, 98, 99, 100, + 101, 39, 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, -1, -1, -1, 55, -1, -1, + -1, 59, 96, 97, -1, -1, 17, 18, -1, 20, + 21, -1, -1, -1, -1, -1, -1, 75, 76, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 39, 40, + -1, 42, -1, -1, 92, 46, -1, 95, 96, 97, + 98, 99, 100, 101, 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, -1, -1, + -1, -1, -1, -1, 19, 96, 97, 22, 23, -1, + 25, 26, 27, 28, -1, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, -1, 42, -1, -1, + -1, 46, 47, 48, 49, 50, 39, 40, 53, 42, + 55, -1, -1, 46, 39, 40, -1, 42, 63, 64, + -1, 46, 55, -1, -1, 58, -1, -1, 39, 40, + 55, 42, -1, 58, -1, 46, -1, -1, -1, -1, + 52, -1, -1, -1, 55, 57, -1, 58, -1, -1, + 62, 96, 97, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 96, 97, -1, -1, -1, -1, -1, + -1, 96, 97, -1, -1, -1, 88, 89, 90, 91, + 92, 93, 94, 95, 52, 96, 97, -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, 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, + 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, 88, 89, 90, 91, 92, 93, 94, 95, -1, + 74, -1, -1, -1, -1, -1, -1, -1, -1, -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, 88, 89, 90, 91, 92, - 93, 94, 95, 65, 66, -1, -1, 69, 70, 71, - 72, 73, 74, 65, 66, -1, -1, 69, 70, 71, - 72, 73, 74, -1, -1, -1, -1, 89, 90, 91, - 92, 93, 94, 95, -1, -1, -1, 89, -1, 91, - 92, 93, 94, 95, 65, 66, -1, -1, -1, -1, - 71, 72, 73, 74, -1, -1, -1, -1, -1, -1, + 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, 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, - 91, 92, 93, 94, 95 + 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, 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, 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, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 88, 89, 90, 91, 92, + 93, 94, 95, 61, 62, -1, -1, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, 62, -1, -1, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 88, 89, 90, 91, 92, 93, 94, 95, -1, -1, + -1, -1, -1, 88, 89, 90, 91, 92, 93, 94, + 95, 65, 66, -1, 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, 88, 89, 90, 91, 92, 93, + 94, 95, 65, 66, -1, -1, 69, 70, 71, 72, + 73, 74, 65, 66, -1, -1, 69, 70, 71, 72, + 73, 74, -1, -1, -1, -1, 89, 90, 91, 92, + 93, 94, 95, -1, -1, -1, 89, -1, 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, -1, -1, 91, + 92, 93, 94, 95 }; const unsigned char parser::yystos_[] = { - 0, 11, 12, 13, 14, 15, 98, 113, 114, 115, - 116, 117, 118, 119, 120, 184, 97, 184, 185, 185, - 51, 0, 115, 116, 117, 51, 77, 61, 61, 99, - 187, 166, 184, 16, 39, 40, 41, 42, 43, 44, - 45, 47, 48, 49, 50, 51, 55, 59, 75, 76, - 92, 95, 100, 101, 102, 151, 156, 157, 158, 159, - 160, 161, 162, 163, 164, 165, 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, 184, 185, 55, 184, 185, 55, - 151, 55, 56, 151, 167, 168, 184, 151, 151, 101, - 102, 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, 163, 164, 184, 185, - 51, 59, 61, 53, 126, 184, 55, 51, 59, 55, + 0, 11, 12, 13, 14, 15, 46, 97, 113, 114, + 115, 116, 117, 118, 119, 120, 185, 96, 97, 186, + 186, 51, 0, 115, 116, 117, 51, 77, 61, 61, + 98, 188, 166, 185, 16, 39, 40, 41, 42, 43, + 44, 45, 47, 48, 49, 50, 51, 55, 59, 75, + 76, 92, 95, 97, 99, 100, 101, 151, 156, 157, + 158, 159, 160, 161, 162, 163, 164, 165, 169, 170, + 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, + 181, 182, 183, 185, 186, 187, 188, 189, 190, 191, + 192, 193, 52, 52, 57, 55, 185, 186, 55, 185, + 186, 55, 151, 55, 56, 151, 167, 168, 185, 151, + 151, 100, 101, 97, 61, 62, 65, 66, 67, 68, + 69, 70, 71, 72, 73, 74, 88, 89, 90, 91, + 92, 93, 94, 95, 55, 58, 163, 164, 185, 186, + 51, 59, 61, 53, 126, 185, 55, 51, 59, 55, 51, 59, 55, 52, 57, 151, 57, 56, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, - 151, 151, 151, 151, 151, 151, 151, 151, 184, 59, - 167, 168, 184, 11, 19, 22, 23, 25, 26, 27, - 28, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 54, 55, 63, 64, 121, 122, 124, 125, 126, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 153, 154, 155, 161, 162, 170, 171, 174, - 178, 179, 180, 181, 184, 151, 167, 184, 151, 167, - 184, 151, 151, 56, 151, 60, 56, 184, 52, 51, - 12, 121, 123, 151, 61, 51, 121, 51, 51, 51, - 51, 92, 187, 190, 60, 61, 61, 61, 151, 61, - 51, 51, 55, 161, 162, 174, 174, 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, - 151, 167, 12, 121, 61, 151, 26, 151, 127, 153, - 154, 155, 174, 184, 151, 60, 60, 61, 167, 167, - 151, 51, 51, 51, 51, 151, 151, 151, 151, 151, - 151, 151, 151, 151, 151, 151, 56, 167, 56, 167, - 56, 151, 51, 52, 52, 51, 52, 61, 29, 57, - 52, 52, 52, 151, 151, 151, 151, 51, 52, 51, - 52, 51, 52, 167, 121, 151, 121, 151, 152, 151, - 184, 126, 61, 61, 52, 52, 57, 52, 57, 52, - 57, 167, 167, 167, 52, 24, 52, 61, 52, 29, - 61, 61, 168, 61, 168, 61, 168, 52, 52, 52, - 121, 61, 127, 121, 151, 52, 52, 52, 52, 52, - 61, 61, 61, 121, 121 + 151, 151, 151, 151, 151, 151, 151, 151, 46, 97, + 184, 59, 167, 168, 185, 11, 19, 22, 23, 25, + 26, 27, 28, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 54, 55, 63, 64, 121, 122, 124, 125, + 126, 128, 129, 130, 131, 132, 133, 134, 135, 136, + 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, + 147, 148, 149, 150, 153, 154, 155, 161, 162, 170, + 171, 174, 178, 179, 180, 181, 185, 151, 167, 185, + 151, 167, 185, 151, 151, 56, 151, 60, 56, 185, + 52, 51, 12, 121, 123, 151, 61, 51, 121, 51, + 51, 51, 51, 92, 188, 191, 60, 61, 61, 61, + 151, 61, 51, 51, 55, 161, 162, 174, 174, 54, + 122, 61, 61, 61, 61, 61, 17, 18, 20, 21, + 58, 63, 64, 77, 78, 79, 80, 81, 82, 83, + 84, 85, 86, 87, 56, 52, 51, 56, 52, 51, + 56, 57, 56, 151, 167, 12, 121, 61, 151, 26, + 151, 127, 153, 154, 155, 174, 185, 151, 60, 60, + 61, 167, 167, 151, 51, 51, 51, 51, 151, 151, + 151, 151, 151, 151, 151, 151, 151, 151, 151, 56, + 167, 56, 167, 56, 151, 51, 52, 52, 51, 52, + 61, 29, 57, 52, 52, 52, 151, 151, 151, 151, + 51, 52, 51, 52, 51, 52, 167, 121, 151, 121, + 151, 152, 151, 185, 126, 61, 61, 52, 52, 57, + 52, 57, 52, 57, 167, 167, 167, 52, 24, 52, + 61, 52, 29, 61, 61, 168, 61, 168, 61, 168, + 52, 52, 52, 121, 61, 127, 121, 151, 52, 52, + 52, 52, 52, 61, 61, 61, 121, 121 }; const unsigned char @@ -4401,10 +4413,10 @@ namespace xsk { namespace gsc { namespace iw6 { 158, 158, 158, 158, 158, 158, 159, 160, 161, 161, 162, 162, 163, 163, 163, 163, 163, 163, 164, 164, 164, 164, 165, 166, 166, 166, 167, 167, 168, 168, - 169, 169, 170, 171, 171, 172, 173, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 185, 186, 187, - 188, 189, 189, 190, 190, 191, 192 + 169, 169, 170, 171, 172, 173, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 175, 176, 177, 178, 179, + 180, 181, 182, 183, 184, 185, 185, 186, 186, 187, + 188, 189, 190, 190, 191, 191, 192, 193 }; const signed char @@ -4428,10 +4440,10 @@ namespace xsk { namespace gsc { namespace iw6 { 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, - 7, 2, 1, 2, 1, 1, 1 + 2, 3, 4, 3, 3, 3, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, + 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, + 1, 7, 2, 1, 2, 1, 1, 1 }; @@ -4441,28 +4453,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, 331, 332, 336, 338, 343, 345, - 350, 351, 355, 356, 360, 362, 364, 367, 371, 373, - 378, 380, 382, 387, 392, 394, 399, 404, 406, 411, - 413, 418, 423, 428, 433, 438, 443, 448, 450, 455, - 460, 462, 467, 472, 477, 482, 484, 489, 494, 499, - 504, 505, 506, 510, 511, 515, 517, 519, 521, 523, - 525, 527, 529, 531, 533, 535, 540, 542, 547, 549, - 554, 559, 561, 563, 565, 567, 569, 571, 573, 575, - 577, 579, 581, 583, 585, 587, 589, 591, 593, 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, 816, 821, 823, 828, 833 + 0, 253, 253, 254, 258, 260, 262, 264, 266, 268, + 273, 277, 282, 283, 284, 285, 286, 290, 295, 300, + 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, + 325, 326, 327, 328, 332, 333, 337, 339, 344, 346, + 351, 352, 356, 357, 361, 363, 365, 368, 372, 374, + 379, 381, 383, 388, 393, 395, 400, 405, 407, 412, + 414, 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, 629, 634, 639, 640, + 643, 644, 648, 650, 652, 654, 656, 658, 663, 665, + 667, 669, 674, 679, 681, 684, 688, 691, 695, 697, + 702, 704, 709, 714, 719, 724, 729, 730, 731, 732, + 733, 734, 735, 736, 737, 741, 746, 751, 756, 761, + 766, 771, 776, 781, 786, 791, 793, 798, 800, 805, + 810, 815, 820, 822, 827, 829, 834, 839 }; void @@ -4495,9 +4507,9 @@ namespace xsk { namespace gsc { namespace iw6 { #line 13 "parser.ypp" } } } // xsk::gsc::iw6 -#line 4499 "parser.cpp" +#line 4511 "parser.cpp" -#line 837 "parser.ypp" +#line 843 "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 eb082456..0ffb8958 100644 --- a/src/iw6/xsk/parser.hpp +++ b/src/iw6/xsk/parser.hpp @@ -474,6 +474,7 @@ namespace xsk { namespace gsc { namespace iw6 { // expr_game char dummy19[sizeof (ast::expr_game::ptr)]; + // expr_identifier_nosize // expr_identifier char dummy20[sizeof (ast::expr_identifier::ptr)]; @@ -615,7 +616,6 @@ namespace xsk { namespace gsc { namespace iw6 { // stmt_while char dummy65[sizeof (ast::stmt_while::ptr)]; - // "field" // "path" // "identifier" // "string literal" @@ -717,7 +717,7 @@ namespace xsk { namespace gsc { namespace iw6 { TRUE = 43, // "true" FALSE = 44, // "false" UNDEFINED = 45, // "undefined" - SIZE = 46, // ".size" + SIZE = 46, // "size" GAME = 47, // "game" SELF = 48, // "self" ANIM = 49, // "anim" @@ -767,13 +767,13 @@ namespace xsk { namespace gsc { namespace iw6 { MUL = 93, // "*" DIV = 94, // "/" MOD = 95, // "%" - FIELD = 96, // "field" - PATH = 97, // "path" - IDENTIFIER = 98, // "identifier" - STRING = 99, // "string literal" - ISTRING = 100, // "localized string" - FLOAT = 101, // "float" - INTEGER = 102, // "integer" + PATH = 96, // "path" + IDENTIFIER = 97, // "identifier" + STRING = 98, // "string literal" + ISTRING = 99, // "localized string" + FLOAT = 100, // "float" + INTEGER = 101, // "integer" + SIZEOF = 102, // SIZEOF ADD_ARRAY = 103, // ADD_ARRAY THEN = 104, // THEN TERN = 105, // TERN @@ -847,7 +847,7 @@ namespace xsk { namespace gsc { namespace iw6 { S_TRUE = 43, // "true" S_FALSE = 44, // "false" S_UNDEFINED = 45, // "undefined" - S_SIZE = 46, // ".size" + S_SIZE = 46, // "size" S_GAME = 47, // "game" S_SELF = 48, // "self" S_ANIM = 49, // "anim" @@ -897,13 +897,13 @@ namespace xsk { namespace gsc { namespace iw6 { S_MUL = 93, // "*" S_DIV = 94, // "/" S_MOD = 95, // "%" - S_FIELD = 96, // "field" - S_PATH = 97, // "path" - S_IDENTIFIER = 98, // "identifier" - S_STRING = 99, // "string literal" - S_ISTRING = 100, // "localized string" - S_FLOAT = 101, // "float" - S_INTEGER = 102, // "integer" + S_PATH = 96, // "path" + S_IDENTIFIER = 97, // "identifier" + S_STRING = 98, // "string literal" + S_ISTRING = 99, // "localized string" + S_FLOAT = 100, // "float" + S_INTEGER = 101, // "integer" + S_SIZEOF = 102, // SIZEOF S_ADD_ARRAY = 103, // ADD_ARRAY S_THEN = 104, // THEN S_TERN = 105, // TERN @@ -985,15 +985,16 @@ namespace xsk { namespace gsc { namespace iw6 { S_expr_level = 181, // expr_level S_expr_animation = 182, // expr_animation S_expr_animtree = 183, // expr_animtree - S_expr_identifier = 184, // expr_identifier - S_expr_path = 185, // expr_path - S_expr_istring = 186, // expr_istring - S_expr_string = 187, // expr_string - 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_expr_identifier_nosize = 184, // expr_identifier_nosize + 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_vector = 189, // expr_vector + S_expr_float = 190, // expr_float + S_expr_integer = 191, // expr_integer + S_expr_false = 192, // expr_false + S_expr_true = 193 // expr_true }; }; @@ -1116,6 +1117,7 @@ namespace xsk { namespace gsc { namespace iw6 { value.move< ast::expr_game::ptr > (std::move (that.value)); break; + case symbol_kind::S_expr_identifier_nosize: // expr_identifier_nosize case symbol_kind::S_expr_identifier: // expr_identifier value.move< ast::expr_identifier::ptr > (std::move (that.value)); break; @@ -1303,7 +1305,6 @@ namespace xsk { namespace gsc { namespace iw6 { value.move< ast::stmt_while::ptr > (std::move (that.value)); break; - case symbol_kind::S_FIELD: // "field" case symbol_kind::S_PATH: // "path" case symbol_kind::S_IDENTIFIER: // "identifier" case symbol_kind::S_STRING: // "string literal" @@ -2368,6 +2369,7 @@ switch (yykind) value.template destroy< ast::expr_game::ptr > (); break; + case symbol_kind::S_expr_identifier_nosize: // expr_identifier_nosize case symbol_kind::S_expr_identifier: // expr_identifier value.template destroy< ast::expr_identifier::ptr > (); break; @@ -2555,7 +2557,6 @@ switch (yykind) value.template destroy< ast::stmt_while::ptr > (); break; - case symbol_kind::S_FIELD: // "field" case symbol_kind::S_PATH: // "path" case symbol_kind::S_IDENTIFIER: // "identifier" case symbol_kind::S_STRING: // "string literal" @@ -2661,7 +2662,7 @@ switch (yykind) { IW6_ASSERT (tok == token::IW6EOF || (token::IW6error <= tok && tok <= token::MOD) - || (token::ADD_ARRAY <= tok && tok <= token::POSTDEC)); + || (token::SIZEOF <= tok && tok <= token::POSTDEC)); } #if 201103L <= YY_CPLUSPLUS symbol_type (int tok, std::string v, location_type l) @@ -2671,7 +2672,7 @@ switch (yykind) : super_type(token_type (tok), v, l) #endif { - IW6_ASSERT ((token::FIELD <= tok && tok <= token::INTEGER)); + IW6_ASSERT ((token::PATH <= tok && tok <= token::INTEGER)); } }; @@ -4161,21 +4162,6 @@ switch (yykind) return symbol_type (token::MOD, l); } #endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_FIELD (std::string v, location_type l) - { - return symbol_type (token::FIELD, std::move (v), std::move (l)); - } -#else - static - symbol_type - make_FIELD (const std::string& v, const location_type& l) - { - return symbol_type (token::FIELD, v, l); - } -#endif #if 201103L <= YY_CPLUSPLUS static symbol_type @@ -4266,6 +4252,21 @@ switch (yykind) return symbol_type (token::INTEGER, v, l); } #endif +#if 201103L <= YY_CPLUSPLUS + static + symbol_type + make_SIZEOF (location_type l) + { + return symbol_type (token::SIZEOF, std::move (l)); + } +#else + static + symbol_type + make_SIZEOF (const location_type& l) + { + return symbol_type (token::SIZEOF, l); + } +#endif #if 201103L <= YY_CPLUSPLUS static symbol_type @@ -4745,9 +4746,9 @@ switch (yykind) /// Constants. enum { - yylast_ = 2274, ///< Last index in yytable_. - yynnts_ = 81, ///< Number of nonterminal symbols. - yyfinal_ = 21 ///< Termination state number. + yylast_ = 2303, ///< Last index in yytable_. + yynnts_ = 82, ///< Number of nonterminal symbols. + yyfinal_ = 22 ///< Termination state number. }; @@ -4859,6 +4860,7 @@ switch (yykind) value.copy< ast::expr_game::ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_expr_identifier_nosize: // expr_identifier_nosize case symbol_kind::S_expr_identifier: // expr_identifier value.copy< ast::expr_identifier::ptr > (YY_MOVE (that.value)); break; @@ -5046,7 +5048,6 @@ switch (yykind) value.copy< ast::stmt_while::ptr > (YY_MOVE (that.value)); break; - case symbol_kind::S_FIELD: // "field" case symbol_kind::S_PATH: // "path" case symbol_kind::S_IDENTIFIER: // "identifier" case symbol_kind::S_STRING: // "string literal" @@ -5171,6 +5172,7 @@ switch (yykind) value.move< ast::expr_game::ptr > (YY_MOVE (s.value)); break; + case symbol_kind::S_expr_identifier_nosize: // expr_identifier_nosize case symbol_kind::S_expr_identifier: // expr_identifier value.move< ast::expr_identifier::ptr > (YY_MOVE (s.value)); break; @@ -5358,7 +5360,6 @@ switch (yykind) value.move< ast::stmt_while::ptr > (YY_MOVE (s.value)); break; - case symbol_kind::S_FIELD: // "field" case symbol_kind::S_PATH: // "path" case symbol_kind::S_IDENTIFIER: // "identifier" case symbol_kind::S_STRING: // "string literal" @@ -5431,7 +5432,7 @@ switch (yykind) #line 13 "parser.ypp" } } } // xsk::gsc::iw6 -#line 5435 "parser.hpp" +#line 5436 "parser.hpp" diff --git a/src/iw7/xsk/lexer.cpp b/src/iw7/xsk/lexer.cpp index d3d30b7b..3fc62364 100644 --- a/src/iw7/xsk/lexer.cpp +++ b/src/iw7/xsk/lexer.cpp @@ -59,6 +59,7 @@ const std::unordered_map keywo { "true", parser::token::TRUE }, { "false", parser::token::FALSE }, { "undefined", parser::token::UNDEFINED }, + { "size", parser::token::SIZE }, { "game", parser::token::GAME }, { "self", parser::token::SELF }, { "anim", parser::token::ANIM }, @@ -84,8 +85,8 @@ bool buffer::push(char c) return true; } -reader::reader() : state(reader::end), buffer_pos(0), bytes_remaining(0), - last_byte(0), current_byte(0) { } +reader::reader() : state(reader::end), buffer_pos(0), + bytes_remaining(0), last_byte(0), current_byte(0) {} void reader::init(const char* data, size_t size) { @@ -173,7 +174,6 @@ auto lexer::lex() -> parser::symbol_type { buffer_.length = 0; state_ = state::start; - loc_.step(); while (true) { @@ -181,6 +181,7 @@ auto lexer::lex() -> parser::symbol_type auto& last = reader_.last_byte; auto& curr = reader_.current_byte; auto path = false; + loc_.step(); if (state == reader::end) { @@ -213,7 +214,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 != '*' && curr != '/') return parser::make_DIV(loc_); advance(); @@ -245,14 +246,35 @@ auto lexer::lex() -> parser::symbol_type } else if (last == '#' && curr == '/') { - reader_.advance(); + advance(); break; } - reader_.advance(); + advance(); } } } + else if (last == '@') + { + while (true) + { + if (state == reader::end) + throw comp_error(loc_, "unmatched script doc comment start ('/@')"); + + if (curr == '\n') + { + loc_.lines(); + loc_.step(); + } + else if (last == '@' && curr == '/') + { + advance(); + break; + } + + advance(); + } + } else if (last == '*') { while (true) @@ -267,11 +289,11 @@ auto lexer::lex() -> parser::symbol_type } else if (last == '*' && curr == '/') { - reader_.advance(); + advance(); break; } - reader_.advance(); + advance(); } } else if (last == '/') @@ -281,30 +303,10 @@ auto lexer::lex() -> parser::symbol_type if (state == reader::end) break; - if (last == '\\' && (curr == '\r' || curr == '\n')) - { - reader_.advance(); - - if (state == reader::end) - break; - - if (last == '\r') - { - if (curr != '\n') - throw comp_error(loc_, "invalid token ('\')"); - - reader_.advance(); - } - - loc_.lines(); - loc_.step(); - continue; - } - if (curr == '\n') break; - reader_.advance(); + advance(); } } continue; @@ -314,8 +316,8 @@ auto lexer::lex() -> parser::symbol_type if (!indev_) throw comp_error(loc_, "unmatched devblock end ('#/')"); - indev_ = false; advance(); + indev_ = false; return parser::make_DEVEND(loc_); } @@ -336,7 +338,7 @@ auto lexer::lex() -> parser::symbol_type state_ = state::preprocessor; goto lex_name; case '*': - if (curr != '/' && curr != '=') + if (curr != '=' && curr != '/') return parser::make_MUL(loc_); advance(); @@ -349,13 +351,9 @@ auto lexer::lex() -> parser::symbol_type state_ = state::string; goto lex_string; case '.': - advance(); - - if (state == reader::end) - throw comp_error(loc_, "unterminated field ('.')"); - - state_ = state::field; - goto lex_name_or_number; + if (curr < '0' || curr > '9') + return parser::make_DOT(loc_); + goto lex_number; case '(': return parser::make_LPAREN(loc_); case ')': @@ -479,7 +477,6 @@ auto lexer::lex() -> parser::symbol_type advance(); return parser::make_ASSIGN_RSHIFT(loc_); default: -lex_name_or_number: if (last >= '0' && last <= '9') goto lex_number; else if (last == '_' || last >= 'A' && last <= 'Z' || last >= 'a' && last <= 'z') @@ -561,23 +558,8 @@ lex_name: advance(); } - if (state_ == state::field) + if (state_ == state::preprocessor) { - if (path) - throw comp_error(loc_, "invalid field token '\\'"); - - if (std::string_view(buffer_.data, buffer_.length) == "size") - { - return parser::make_SIZE(loc_); - } - - return parser::make_FIELD(std::string(buffer_.data, buffer_.length), loc_); - } - else if (state_ == state::preprocessor) - { - if (path) - throw comp_error(loc_, "invalid preprocessor directive"); - auto token = parser::token::IW7UNDEF; if (buffer_.length < 16) @@ -593,7 +575,8 @@ lex_name: } } - preprocessor(token); + preprocessor_run(token); + state_ = state::start; continue; } @@ -619,14 +602,11 @@ lex_name: } lex_number: - if (state_ == state::field) - buffer_.push('.'); - - if (state_ == state::field || last == '.' || last != '0' || (last == '0' && (curr != 'o' && curr != 'b' && curr != 'x'))) + if (last == '.' || last != '0' || (last == '0' && (curr != 'o' && curr != 'b' && curr != 'x'))) { buffer_.push(last); - auto dot = 0; + auto dot = last == '.' ? 1 : 0; auto flt = 0; while (true) @@ -662,10 +642,10 @@ lex_number: if (last == '\'') throw comp_error(loc_, "invalid number literal"); - if (state_ == state::field && dot || dot > 1 || flt > 1 || flt && buffer_.data[buffer_.length - 1] != 'f') + if (dot > 1 || flt > 1 || flt && buffer_.data[buffer_.length - 1] != 'f') throw comp_error(loc_, "invalid number literal"); - if (state_ == state::field || dot || flt) + if (dot || flt) return parser::make_FLOAT(std::string(buffer_.data, buffer_.length), loc_); return parser::make_INTEGER(std::string(buffer_.data, buffer_.length), loc_); @@ -680,7 +660,7 @@ lex_number: break; if (curr == '\'' && (last == '\'' || last == 'o') || (curr == 'o' && last == '\'')) - throw comp_error(loc_, "invalid octal literal"); + throw comp_error(loc_, "invalid octal literal"); if (curr == '\'') { @@ -770,18 +750,22 @@ lex_number: return parser::make_INTEGER(xsk::utils::string::hex_to_dec(buffer_.data), loc_); } - // cant get here! + + throw error("UNEXPECTED LEXER INTERNAL ERROR!"); } } void lexer::advance() { reader_.advance(); + loc_.end.column++; - // dont wrap comment marks '/\/' '/\*' outside strings - if (state_ == state::start && reader_.last_byte == '/') - return; + if (reader_.current_byte == '\\') [[unlikely]] + preprocessor_wrap(); +} +void lexer::preprocessor_wrap() +{ while (reader_.current_byte == '\\') { if (reader_.bytes_remaining == 1) @@ -823,7 +807,7 @@ void lexer::advance() } } -void lexer::preprocessor(parser::token::token_kind_type token) +void lexer::preprocessor_run(parser::token::token_kind_type token) { if (!clean_) throw comp_error(loc_, "invalid token ('#')"); diff --git a/src/iw7/xsk/lexer.hpp b/src/iw7/xsk/lexer.hpp index 6fd768a8..7f6cc24c 100644 --- a/src/iw7/xsk/lexer.hpp +++ b/src/iw7/xsk/lexer.hpp @@ -44,7 +44,7 @@ struct reader class lexer { - enum class state : std::uint8_t { start, string, localize, field, preprocessor }; + enum class state : std::uint8_t { start, string, localize, preprocessor }; reader reader_; buffer buffer_; @@ -66,7 +66,8 @@ public: private: void advance(); - void preprocessor(parser::token::token_kind_type token); + void preprocessor_wrap(); + void preprocessor_run(parser::token::token_kind_type token); }; } // namespace xsk::gsc::iw7 diff --git a/src/iw7/xsk/parser.cpp b/src/iw7/xsk/parser.cpp index 9f76794f..92a87a5c 100644 --- a/src/iw7/xsk/parser.cpp +++ b/src/iw7/xsk/parser.cpp @@ -301,6 +301,7 @@ namespace xsk { namespace gsc { namespace iw7 { value.YY_MOVE_OR_COPY< ast::expr_game::ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_expr_identifier_nosize: // expr_identifier_nosize case symbol_kind::S_expr_identifier: // expr_identifier value.YY_MOVE_OR_COPY< ast::expr_identifier::ptr > (YY_MOVE (that.value)); break; @@ -488,7 +489,6 @@ namespace xsk { namespace gsc { namespace iw7 { value.YY_MOVE_OR_COPY< ast::stmt_while::ptr > (YY_MOVE (that.value)); break; - case symbol_kind::S_FIELD: // "field" case symbol_kind::S_PATH: // "path" case symbol_kind::S_IDENTIFIER: // "identifier" case symbol_kind::S_STRING: // "string literal" @@ -599,6 +599,7 @@ namespace xsk { namespace gsc { namespace iw7 { value.move< ast::expr_game::ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_expr_identifier_nosize: // expr_identifier_nosize case symbol_kind::S_expr_identifier: // expr_identifier value.move< ast::expr_identifier::ptr > (YY_MOVE (that.value)); break; @@ -786,7 +787,6 @@ namespace xsk { namespace gsc { namespace iw7 { value.move< ast::stmt_while::ptr > (YY_MOVE (that.value)); break; - case symbol_kind::S_FIELD: // "field" case symbol_kind::S_PATH: // "path" case symbol_kind::S_IDENTIFIER: // "identifier" case symbol_kind::S_STRING: // "string literal" @@ -897,6 +897,7 @@ namespace xsk { namespace gsc { namespace iw7 { value.copy< ast::expr_game::ptr > (that.value); break; + case symbol_kind::S_expr_identifier_nosize: // expr_identifier_nosize case symbol_kind::S_expr_identifier: // expr_identifier value.copy< ast::expr_identifier::ptr > (that.value); break; @@ -1084,7 +1085,6 @@ namespace xsk { namespace gsc { namespace iw7 { value.copy< ast::stmt_while::ptr > (that.value); break; - case symbol_kind::S_FIELD: // "field" case symbol_kind::S_PATH: // "path" case symbol_kind::S_IDENTIFIER: // "identifier" case symbol_kind::S_STRING: // "string literal" @@ -1194,6 +1194,7 @@ namespace xsk { namespace gsc { namespace iw7 { value.move< ast::expr_game::ptr > (that.value); break; + case symbol_kind::S_expr_identifier_nosize: // expr_identifier_nosize case symbol_kind::S_expr_identifier: // expr_identifier value.move< ast::expr_identifier::ptr > (that.value); break; @@ -1381,7 +1382,6 @@ namespace xsk { namespace gsc { namespace iw7 { value.move< ast::stmt_while::ptr > (that.value); break; - case symbol_kind::S_FIELD: // "field" case symbol_kind::S_PATH: // "path" case symbol_kind::S_IDENTIFIER: // "identifier" case symbol_kind::S_STRING: // "string literal" @@ -1746,6 +1746,7 @@ namespace xsk { namespace gsc { namespace iw7 { yylhs.value.emplace< ast::expr_game::ptr > (); break; + case symbol_kind::S_expr_identifier_nosize: // expr_identifier_nosize case symbol_kind::S_expr_identifier: // expr_identifier yylhs.value.emplace< ast::expr_identifier::ptr > (); break; @@ -1933,7 +1934,6 @@ namespace xsk { namespace gsc { namespace iw7 { yylhs.value.emplace< ast::stmt_while::ptr > (); break; - case symbol_kind::S_FIELD: // "field" case symbol_kind::S_PATH: // "path" case symbol_kind::S_IDENTIFIER: // "identifier" case symbol_kind::S_STRING: // "string literal" @@ -1964,1297 +1964,1303 @@ namespace xsk { namespace gsc { namespace iw7 { switch (yyn) { case 2: // root: program -#line 252 "parser.ypp" +#line 253 "parser.ypp" { ast = std::move(yystack_[0].value.as < ast::program::ptr > ()); } #line 1970 "parser.cpp" break; case 3: // root: %empty -#line 253 "parser.ypp" +#line 254 "parser.ypp" { ast = std::make_unique(yylhs.location); } #line 1976 "parser.cpp" break; case 4: // program: program inline -#line 258 "parser.ypp" +#line 259 "parser.ypp" { yylhs.value.as < ast::program::ptr > () = std::move(yystack_[1].value.as < ast::program::ptr > ()); } #line 1982 "parser.cpp" break; case 5: // program: program include -#line 260 "parser.ypp" +#line 261 "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" break; case 6: // program: program declaration -#line 262 "parser.ypp" +#line 263 "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" break; case 7: // program: inline -#line 264 "parser.ypp" +#line 265 "parser.ypp" { yylhs.value.as < ast::program::ptr > () = std::make_unique(yylhs.location); } #line 2000 "parser.cpp" break; case 8: // program: include -#line 266 "parser.ypp" +#line 267 "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" break; case 9: // program: declaration -#line 268 "parser.ypp" +#line 269 "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" break; case 10: // inline: "#inline" expr_path ";" -#line 272 "parser.ypp" +#line 273 "parser.ypp" { lexer.push_header(yystack_[1].value.as < ast::expr_path::ptr > ()->value); } #line 2018 "parser.cpp" break; case 11: // include: "#include" expr_path ";" -#line 277 "parser.ypp" +#line 278 "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" break; case 12: // declaration: "/#" -#line 281 "parser.ypp" +#line 282 "parser.ypp" { yylhs.value.as < ast::decl > ().as_dev_begin = std::make_unique(yylhs.location); } #line 2030 "parser.cpp" break; case 13: // declaration: "#/" -#line 282 "parser.ypp" +#line 283 "parser.ypp" { yylhs.value.as < ast::decl > ().as_dev_end = std::make_unique(yylhs.location); } #line 2036 "parser.cpp" break; case 14: // declaration: decl_usingtree -#line 283 "parser.ypp" +#line 284 "parser.ypp" { yylhs.value.as < ast::decl > ().as_usingtree = std::move(yystack_[0].value.as < ast::decl_usingtree::ptr > ()); } #line 2042 "parser.cpp" break; case 15: // declaration: decl_constant -#line 284 "parser.ypp" +#line 285 "parser.ypp" { yylhs.value.as < ast::decl > ().as_constant = std::move(yystack_[0].value.as < ast::decl_constant::ptr > ()); } #line 2048 "parser.cpp" break; case 16: // declaration: decl_thread -#line 285 "parser.ypp" +#line 286 "parser.ypp" { yylhs.value.as < ast::decl > ().as_thread = std::move(yystack_[0].value.as < ast::decl_thread::ptr > ()); } #line 2054 "parser.cpp" break; case 17: // decl_usingtree: "#using_animtree" "(" expr_string ")" ";" -#line 290 "parser.ypp" +#line 291 "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" break; case 18: // decl_constant: expr_identifier "=" expr ";" -#line 295 "parser.ypp" +#line 296 "parser.ypp" { yylhs.value.as < ast::decl_constant::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[3].value.as < ast::expr_identifier::ptr > ()), std::move(yystack_[1].value.as < ast::expr > ())); } #line 2066 "parser.cpp" break; case 19: // decl_thread: expr_identifier "(" expr_parameters ")" stmt_block -#line 300 "parser.ypp" +#line 301 "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" break; case 20: // stmt: stmt_block -#line 304 "parser.ypp" +#line 305 "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_call -#line 305 "parser.ypp" +#line 306 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_call = std::move(yystack_[0].value.as < ast::stmt_call::ptr > ()); } #line 2084 "parser.cpp" break; case 22: // stmt: stmt_assign -#line 306 "parser.ypp" +#line 307 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_assign = std::move(yystack_[0].value.as < ast::stmt_assign::ptr > ()); } #line 2090 "parser.cpp" break; case 23: // stmt: stmt_endon -#line 307 "parser.ypp" +#line 308 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_endon = std::move(yystack_[0].value.as < ast::stmt_endon::ptr > ()); } #line 2096 "parser.cpp" break; case 24: // stmt: stmt_notify -#line 308 "parser.ypp" +#line 309 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_notify = std::move(yystack_[0].value.as < ast::stmt_notify::ptr > ()); } #line 2102 "parser.cpp" break; case 25: // stmt: stmt_wait -#line 309 "parser.ypp" +#line 310 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_wait = std::move(yystack_[0].value.as < ast::stmt_wait::ptr > ()); } #line 2108 "parser.cpp" break; case 26: // stmt: stmt_waittill -#line 310 "parser.ypp" +#line 311 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_waittill = std::move(yystack_[0].value.as < ast::stmt_waittill::ptr > ()); } #line 2114 "parser.cpp" break; case 27: // stmt: stmt_waittillmatch -#line 311 "parser.ypp" +#line 312 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_waittillmatch = std::move(yystack_[0].value.as < ast::stmt_waittillmatch::ptr > ()); } #line 2120 "parser.cpp" break; case 28: // stmt: stmt_waittillframeend -#line 312 "parser.ypp" +#line 313 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_waittillframeend = std::move(yystack_[0].value.as < ast::stmt_waittillframeend::ptr > ()); } #line 2126 "parser.cpp" break; case 29: // stmt: stmt_if -#line 313 "parser.ypp" +#line 314 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_if = std::move(yystack_[0].value.as < ast::stmt_if::ptr > ()); } #line 2132 "parser.cpp" break; case 30: // stmt: stmt_ifelse -#line 314 "parser.ypp" +#line 315 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_ifelse = std::move(yystack_[0].value.as < ast::stmt_ifelse::ptr > ()); } #line 2138 "parser.cpp" break; case 31: // stmt: stmt_while -#line 315 "parser.ypp" +#line 316 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_while = std::move(yystack_[0].value.as < ast::stmt_while::ptr > ()); } #line 2144 "parser.cpp" break; case 32: // stmt: stmt_dowhile -#line 316 "parser.ypp" +#line 317 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_dowhile = std::move(yystack_[0].value.as < ast::stmt_dowhile::ptr > ()); } #line 2150 "parser.cpp" break; case 33: // stmt: stmt_for -#line 317 "parser.ypp" +#line 318 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_for = std::move(yystack_[0].value.as < ast::stmt_for::ptr > ()); } #line 2156 "parser.cpp" break; case 34: // stmt: stmt_foreach -#line 318 "parser.ypp" +#line 319 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_foreach = std::move(yystack_[0].value.as < ast::stmt_foreach::ptr > ()); } #line 2162 "parser.cpp" break; case 35: // stmt: stmt_switch -#line 319 "parser.ypp" +#line 320 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_switch = std::move(yystack_[0].value.as < ast::stmt_switch::ptr > ()); } #line 2168 "parser.cpp" break; case 36: // stmt: stmt_case -#line 320 "parser.ypp" +#line 321 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_case = std::move(yystack_[0].value.as < ast::stmt_case::ptr > ()); } #line 2174 "parser.cpp" break; case 37: // stmt: stmt_default -#line 321 "parser.ypp" +#line 322 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_default = std::move(yystack_[0].value.as < ast::stmt_default::ptr > ()); } #line 2180 "parser.cpp" break; case 38: // stmt: stmt_break -#line 322 "parser.ypp" +#line 323 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_break = std::move(yystack_[0].value.as < ast::stmt_break::ptr > ()); } #line 2186 "parser.cpp" break; case 39: // stmt: stmt_continue -#line 323 "parser.ypp" +#line 324 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_continue = std::move(yystack_[0].value.as < ast::stmt_continue::ptr > ()); } #line 2192 "parser.cpp" break; case 40: // stmt: stmt_return -#line 324 "parser.ypp" +#line 325 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_return = std::move(yystack_[0].value.as < ast::stmt_return::ptr > ()); } #line 2198 "parser.cpp" break; case 41: // stmt: stmt_breakpoint -#line 325 "parser.ypp" +#line 326 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_breakpoint = std::move(yystack_[0].value.as < ast::stmt_breakpoint::ptr > ()); } #line 2204 "parser.cpp" break; case 42: // stmt: stmt_prof_begin -#line 326 "parser.ypp" +#line 327 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_prof_begin = std::move(yystack_[0].value.as < ast::stmt_prof_begin::ptr > ()); } #line 2210 "parser.cpp" break; case 43: // stmt: stmt_prof_end -#line 327 "parser.ypp" +#line 328 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_prof_end = std::move(yystack_[0].value.as < ast::stmt_prof_end::ptr > ()); } #line 2216 "parser.cpp" break; case 44: // stmt_or_dev: stmt -#line 331 "parser.ypp" +#line 332 "parser.ypp" { yylhs.value.as < ast::stmt > () = std::move(yystack_[0].value.as < ast::stmt > ()); } #line 2222 "parser.cpp" break; case 45: // stmt_or_dev: stmt_dev -#line 332 "parser.ypp" +#line 333 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_dev = std::move(yystack_[0].value.as < ast::stmt_dev::ptr > ()); } #line 2228 "parser.cpp" break; case 46: // stmt_list: stmt_list stmt -#line 337 "parser.ypp" +#line 338 "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 2234 "parser.cpp" break; case 47: // stmt_list: stmt -#line 339 "parser.ypp" +#line 340 "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 2240 "parser.cpp" break; case 48: // stmt_or_dev_list: stmt_or_dev_list stmt_or_dev -#line 344 "parser.ypp" +#line 345 "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 2246 "parser.cpp" break; case 49: // stmt_or_dev_list: stmt_or_dev -#line 346 "parser.ypp" +#line 347 "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 2252 "parser.cpp" break; case 50: // stmt_dev: "/#" stmt_list "#/" -#line 350 "parser.ypp" +#line 351 "parser.ypp" { yylhs.value.as < ast::stmt_dev::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::stmt_list::ptr > ())); } #line 2258 "parser.cpp" break; case 51: // stmt_dev: "/#" "#/" -#line 351 "parser.ypp" +#line 352 "parser.ypp" { yylhs.value.as < ast::stmt_dev::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } #line 2264 "parser.cpp" break; case 52: // stmt_block: "{" stmt_or_dev_list "}" -#line 355 "parser.ypp" +#line 356 "parser.ypp" { yylhs.value.as < ast::stmt_list::ptr > () = std::move(yystack_[1].value.as < ast::stmt_list::ptr > ()); } #line 2270 "parser.cpp" break; case 53: // stmt_block: "{" "}" -#line 356 "parser.ypp" +#line 357 "parser.ypp" { yylhs.value.as < ast::stmt_list::ptr > () = std::make_unique(yylhs.location); } #line 2276 "parser.cpp" break; case 54: // stmt_expr: expr_assign -#line 361 "parser.ypp" +#line 362 "parser.ypp" { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } #line 2282 "parser.cpp" break; case 55: // stmt_expr: expr_increment -#line 363 "parser.ypp" +#line 364 "parser.ypp" { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } #line 2288 "parser.cpp" break; case 56: // stmt_expr: expr_decrement -#line 365 "parser.ypp" +#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 2294 "parser.cpp" break; case 57: // stmt_expr: %empty -#line 367 "parser.ypp" +#line 368 "parser.ypp" { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } #line 2300 "parser.cpp" break; case 58: // stmt_call: expr_call ";" -#line 372 "parser.ypp" +#line 373 "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 2306 "parser.cpp" break; case 59: // stmt_call: expr_method ";" -#line 374 "parser.ypp" +#line 375 "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 2312 "parser.cpp" break; case 60: // stmt_assign: expr_assign ";" -#line 379 "parser.ypp" +#line 380 "parser.ypp" { yylhs.value.as < ast::stmt_assign::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } #line 2318 "parser.cpp" break; case 61: // stmt_assign: expr_increment ";" -#line 381 "parser.ypp" +#line 382 "parser.ypp" { yylhs.value.as < ast::stmt_assign::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } #line 2324 "parser.cpp" break; case 62: // stmt_assign: expr_decrement ";" -#line 383 "parser.ypp" +#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 2330 "parser.cpp" break; case 63: // stmt_endon: expr_object "endon" "(" expr ")" ";" -#line 388 "parser.ypp" +#line 389 "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 2336 "parser.cpp" break; case 64: // stmt_notify: expr_object "notify" "(" expr "," expr_arguments_no_empty ")" ";" -#line 393 "parser.ypp" +#line 394 "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 2342 "parser.cpp" break; case 65: // stmt_notify: expr_object "notify" "(" expr ")" ";" -#line 395 "parser.ypp" +#line 396 "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 2348 "parser.cpp" break; case 66: // stmt_wait: "wait" expr ";" -#line 400 "parser.ypp" +#line 401 "parser.ypp" { yylhs.value.as < ast::stmt_wait::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } #line 2354 "parser.cpp" break; case 67: // stmt_waittill: expr_object "waittill" "(" expr "," expr_arguments_no_empty ")" ";" -#line 405 "parser.ypp" +#line 406 "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 2360 "parser.cpp" break; case 68: // stmt_waittill: expr_object "waittill" "(" expr ")" ";" -#line 407 "parser.ypp" +#line 408 "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 2366 "parser.cpp" break; case 69: // stmt_waittillmatch: expr_object "waittillmatch" "(" expr "," expr_arguments_no_empty ")" ";" -#line 412 "parser.ypp" +#line 413 "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 2372 "parser.cpp" break; case 70: // stmt_waittillmatch: expr_object "waittillmatch" "(" expr ")" ";" -#line 414 "parser.ypp" +#line 415 "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 2378 "parser.cpp" break; case 71: // stmt_waittillframeend: "waittillframeend" ";" -#line 419 "parser.ypp" +#line 420 "parser.ypp" { yylhs.value.as < ast::stmt_waittillframeend::ptr > () = std::make_unique(yylhs.location); } #line 2384 "parser.cpp" break; case 72: // stmt_if: "if" "(" expr ")" stmt -#line 424 "parser.ypp" +#line 425 "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 2390 "parser.cpp" break; case 73: // stmt_ifelse: "if" "(" expr ")" stmt "else" stmt -#line 429 "parser.ypp" +#line 430 "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 2396 "parser.cpp" break; case 74: // stmt_while: "while" "(" expr ")" stmt -#line 434 "parser.ypp" +#line 435 "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 2402 "parser.cpp" break; case 75: // stmt_dowhile: "do" stmt "while" "(" expr ")" ";" -#line 439 "parser.ypp" +#line 440 "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 2408 "parser.cpp" break; case 76: // stmt_for: "for" "(" stmt_expr ";" expr_or_empty ";" stmt_expr ")" stmt -#line 444 "parser.ypp" +#line 445 "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 2414 "parser.cpp" break; case 77: // stmt_foreach: "foreach" "(" expr_identifier "in" expr ")" stmt -#line 449 "parser.ypp" +#line 450 "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 2420 "parser.cpp" break; case 78: // stmt_foreach: "foreach" "(" expr_identifier "," expr_identifier "in" expr ")" stmt -#line 451 "parser.ypp" +#line 452 "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 2426 "parser.cpp" break; case 79: // stmt_switch: "switch" "(" expr ")" stmt_block -#line 456 "parser.ypp" +#line 457 "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 2432 "parser.cpp" break; case 80: // stmt_case: "case" expr_integer ":" -#line 461 "parser.ypp" +#line 462 "parser.ypp" { yylhs.value.as < ast::stmt_case::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[1].value.as < ast::expr_integer::ptr > ())), std::make_unique(yylhs.location)); } #line 2438 "parser.cpp" break; case 81: // stmt_case: "case" expr_string ":" -#line 463 "parser.ypp" +#line 464 "parser.ypp" { yylhs.value.as < ast::stmt_case::ptr > () = std::make_unique(yylhs.location, ast::expr(std::move(yystack_[1].value.as < ast::expr_string::ptr > ())), std::make_unique(yylhs.location)); } #line 2444 "parser.cpp" break; case 82: // stmt_default: "default" ":" -#line 468 "parser.ypp" +#line 469 "parser.ypp" { yylhs.value.as < ast::stmt_default::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } #line 2450 "parser.cpp" break; case 83: // stmt_break: "break" ";" -#line 473 "parser.ypp" +#line 474 "parser.ypp" { yylhs.value.as < ast::stmt_break::ptr > () = std::make_unique(yylhs.location); } #line 2456 "parser.cpp" break; case 84: // stmt_continue: "continue" ";" -#line 478 "parser.ypp" +#line 479 "parser.ypp" { yylhs.value.as < ast::stmt_continue::ptr > () = std::make_unique(yylhs.location); } #line 2462 "parser.cpp" break; case 85: // stmt_return: "return" expr ";" -#line 483 "parser.ypp" +#line 484 "parser.ypp" { yylhs.value.as < ast::stmt_return::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } #line 2468 "parser.cpp" break; case 86: // stmt_return: "return" ";" -#line 485 "parser.ypp" +#line 486 "parser.ypp" { yylhs.value.as < ast::stmt_return::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } #line 2474 "parser.cpp" break; case 87: // stmt_breakpoint: "breakpoint" ";" -#line 490 "parser.ypp" +#line 491 "parser.ypp" { yylhs.value.as < ast::stmt_breakpoint::ptr > () = std::make_unique(yylhs.location); } #line 2480 "parser.cpp" break; case 88: // stmt_prof_begin: "prof_begin" "(" expr_arguments ")" ";" -#line 495 "parser.ypp" +#line 496 "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 2486 "parser.cpp" break; case 89: // stmt_prof_end: "prof_end" "(" expr_arguments ")" ";" -#line 500 "parser.ypp" +#line 501 "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 2492 "parser.cpp" break; case 90: // expr: expr_ternary -#line 504 "parser.ypp" +#line 505 "parser.ypp" { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } #line 2498 "parser.cpp" break; case 91: // expr: expr_binary -#line 505 "parser.ypp" +#line 506 "parser.ypp" { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } #line 2504 "parser.cpp" break; case 92: // expr: expr_primitive -#line 506 "parser.ypp" +#line 507 "parser.ypp" { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } #line 2510 "parser.cpp" break; case 93: // expr_or_empty: expr -#line 510 "parser.ypp" +#line 511 "parser.ypp" { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } #line 2516 "parser.cpp" break; case 94: // expr_or_empty: %empty -#line 511 "parser.ypp" +#line 512 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location); } #line 2522 "parser.cpp" break; case 95: // expr_assign: expr_object "=" expr -#line 516 "parser.ypp" +#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 2528 "parser.cpp" break; case 96: // expr_assign: expr_object "|=" expr -#line 518 "parser.ypp" +#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 2534 "parser.cpp" break; case 97: // expr_assign: expr_object "&=" expr -#line 520 "parser.ypp" +#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 2540 "parser.cpp" break; case 98: // expr_assign: expr_object "^=" expr -#line 522 "parser.ypp" +#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 2546 "parser.cpp" break; case 99: // expr_assign: expr_object "<<=" expr -#line 524 "parser.ypp" +#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 2552 "parser.cpp" break; case 100: // expr_assign: expr_object ">>=" expr -#line 526 "parser.ypp" +#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 2558 "parser.cpp" break; case 101: // expr_assign: expr_object "+=" expr -#line 528 "parser.ypp" +#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 2564 "parser.cpp" break; case 102: // expr_assign: expr_object "-=" expr -#line 530 "parser.ypp" +#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 2570 "parser.cpp" break; case 103: // expr_assign: expr_object "*=" expr -#line 532 "parser.ypp" +#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 2576 "parser.cpp" break; case 104: // expr_assign: expr_object "/=" expr -#line 534 "parser.ypp" +#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 2582 "parser.cpp" break; case 105: // expr_assign: expr_object "%=" expr -#line 536 "parser.ypp" +#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 2588 "parser.cpp" break; case 106: // expr_increment: "++" expr_object -#line 541 "parser.ypp" +#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 2594 "parser.cpp" break; case 107: // expr_increment: expr_object "++" -#line 543 "parser.ypp" +#line 544 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ()), false); } #line 2600 "parser.cpp" break; case 108: // expr_decrement: "--" expr_object -#line 548 "parser.ypp" +#line 549 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ()), true); } #line 2606 "parser.cpp" break; case 109: // expr_decrement: expr_object "--" -#line 550 "parser.ypp" +#line 551 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ()), false); } #line 2612 "parser.cpp" break; case 110: // expr_ternary: expr "?" expr ":" expr -#line 555 "parser.ypp" +#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 2618 "parser.cpp" break; case 111: // expr_binary: expr "||" expr -#line 560 "parser.ypp" +#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 2624 "parser.cpp" break; case 112: // expr_binary: expr "&&" expr -#line 562 "parser.ypp" +#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 2630 "parser.cpp" break; case 113: // expr_binary: expr "==" expr -#line 564 "parser.ypp" +#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 2636 "parser.cpp" break; case 114: // expr_binary: expr "!=" expr -#line 566 "parser.ypp" +#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 2642 "parser.cpp" break; case 115: // expr_binary: expr "<=" expr -#line 568 "parser.ypp" +#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 2648 "parser.cpp" break; case 116: // expr_binary: expr ">=" expr -#line 570 "parser.ypp" +#line 571 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } #line 2654 "parser.cpp" break; case 117: // expr_binary: expr "<" expr -#line 572 "parser.ypp" +#line 573 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } #line 2660 "parser.cpp" break; case 118: // expr_binary: expr ">" expr -#line 574 "parser.ypp" +#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 2666 "parser.cpp" break; case 119: // expr_binary: expr "|" expr -#line 576 "parser.ypp" +#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 2672 "parser.cpp" break; case 120: // expr_binary: expr "&" expr -#line 578 "parser.ypp" +#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 2678 "parser.cpp" break; case 121: // expr_binary: expr "^" expr -#line 580 "parser.ypp" +#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 2684 "parser.cpp" break; case 122: // expr_binary: expr "<<" expr -#line 582 "parser.ypp" +#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 2690 "parser.cpp" break; case 123: // expr_binary: expr ">>" expr -#line 584 "parser.ypp" +#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 2696 "parser.cpp" break; case 124: // expr_binary: expr "+" expr -#line 586 "parser.ypp" +#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 2702 "parser.cpp" break; case 125: // expr_binary: expr "-" expr -#line 588 "parser.ypp" +#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 2708 "parser.cpp" break; case 126: // expr_binary: expr "*" expr -#line 590 "parser.ypp" +#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 2714 "parser.cpp" break; case 127: // expr_binary: expr "/" expr -#line 592 "parser.ypp" +#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 2720 "parser.cpp" break; case 128: // expr_binary: expr "%" expr -#line 594 "parser.ypp" +#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 2726 "parser.cpp" break; case 129: // expr_primitive: expr_complement -#line 598 "parser.ypp" +#line 599 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_complement::ptr > ()); } #line 2732 "parser.cpp" break; case 130: // expr_primitive: expr_not -#line 599 "parser.ypp" +#line 600 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_not::ptr > ()); } #line 2738 "parser.cpp" break; case 131: // expr_primitive: expr_call -#line 600 "parser.ypp" +#line 601 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_call::ptr > ()); } #line 2744 "parser.cpp" break; case 132: // expr_primitive: expr_method -#line 601 "parser.ypp" +#line 602 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_method::ptr > ()); } #line 2750 "parser.cpp" break; case 133: // expr_primitive: expr_add_array -#line 602 "parser.ypp" +#line 603 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_add_array::ptr > ()); } #line 2756 "parser.cpp" break; case 134: // expr_primitive: expr_reference -#line 603 "parser.ypp" +#line 604 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_reference::ptr > ()); } #line 2762 "parser.cpp" break; case 135: // expr_primitive: expr_array -#line 604 "parser.ypp" +#line 605 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_array::ptr > ()); } #line 2768 "parser.cpp" break; case 136: // expr_primitive: expr_field -#line 605 "parser.ypp" +#line 606 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_field::ptr > ()); } #line 2774 "parser.cpp" break; case 137: // expr_primitive: expr_size -#line 606 "parser.ypp" +#line 607 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_size::ptr > ()); } #line 2780 "parser.cpp" break; case 138: // expr_primitive: expr_paren -#line 607 "parser.ypp" +#line 608 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_paren::ptr > ()); } #line 2786 "parser.cpp" break; case 139: // expr_primitive: expr_thisthread -#line 608 "parser.ypp" +#line 609 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_thisthread::ptr > ()); } #line 2792 "parser.cpp" break; case 140: // expr_primitive: expr_empty_array -#line 609 "parser.ypp" +#line 610 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_empty_array::ptr > ()); } #line 2798 "parser.cpp" break; case 141: // expr_primitive: expr_undefined -#line 610 "parser.ypp" +#line 611 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_undefined::ptr > ()); } #line 2804 "parser.cpp" break; case 142: // expr_primitive: expr_game -#line 611 "parser.ypp" +#line 612 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_game::ptr > ()); } #line 2810 "parser.cpp" break; case 143: // expr_primitive: expr_self -#line 612 "parser.ypp" +#line 613 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_self::ptr > ()); } #line 2816 "parser.cpp" break; case 144: // expr_primitive: expr_anim -#line 613 "parser.ypp" +#line 614 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_anim::ptr > ()); } #line 2822 "parser.cpp" break; case 145: // expr_primitive: expr_level -#line 614 "parser.ypp" +#line 615 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_level::ptr > ()); } #line 2828 "parser.cpp" break; case 146: // expr_primitive: expr_animation -#line 615 "parser.ypp" +#line 616 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_animation::ptr > ()); } #line 2834 "parser.cpp" break; case 147: // expr_primitive: expr_animtree -#line 616 "parser.ypp" +#line 617 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_animtree::ptr > ()); } #line 2840 "parser.cpp" break; case 148: // expr_primitive: expr_identifier -#line 617 "parser.ypp" +#line 618 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ()); } #line 2846 "parser.cpp" break; case 149: // expr_primitive: expr_istring -#line 618 "parser.ypp" +#line 619 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_istring::ptr > ()); } #line 2852 "parser.cpp" break; case 150: // expr_primitive: expr_string -#line 619 "parser.ypp" +#line 620 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_string::ptr > ()); } #line 2858 "parser.cpp" break; case 151: // expr_primitive: expr_vector -#line 620 "parser.ypp" +#line 621 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_vector::ptr > ()); } #line 2864 "parser.cpp" break; case 152: // expr_primitive: expr_float -#line 621 "parser.ypp" +#line 622 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_float::ptr > ()); } #line 2870 "parser.cpp" break; case 153: // expr_primitive: expr_integer -#line 622 "parser.ypp" +#line 623 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_integer::ptr > ()); } #line 2876 "parser.cpp" break; case 154: // expr_primitive: expr_false -#line 623 "parser.ypp" +#line 624 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_false::ptr > ()); } #line 2882 "parser.cpp" break; case 155: // expr_primitive: expr_true -#line 624 "parser.ypp" +#line 625 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_true::ptr > ()); } #line 2888 "parser.cpp" break; case 156: // expr_complement: "~" expr -#line 629 "parser.ypp" +#line 630 "parser.ypp" { yylhs.value.as < ast::expr_complement::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } #line 2894 "parser.cpp" break; case 157: // expr_not: "!" expr -#line 634 "parser.ypp" +#line 635 "parser.ypp" { yylhs.value.as < ast::expr_not::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } #line 2900 "parser.cpp" break; case 158: // expr_call: expr_function -#line 638 "parser.ypp" +#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 2906 "parser.cpp" break; case 159: // expr_call: expr_pointer -#line 639 "parser.ypp" +#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 2912 "parser.cpp" break; case 160: // expr_method: expr_object expr_function -#line 642 "parser.ypp" +#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 2918 "parser.cpp" break; case 161: // expr_method: expr_object expr_pointer -#line 643 "parser.ypp" +#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 2924 "parser.cpp" break; case 162: // expr_function: expr_identifier "(" expr_arguments ")" -#line 648 "parser.ypp" +#line 649 "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 2930 "parser.cpp" break; case 163: // expr_function: expr_path "::" expr_identifier "(" expr_arguments ")" -#line 650 "parser.ypp" +#line 651 "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 2936 "parser.cpp" break; case 164: // expr_function: "thread" expr_identifier "(" expr_arguments ")" -#line 652 "parser.ypp" +#line 653 "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 2942 "parser.cpp" break; case 165: // expr_function: "thread" expr_path "::" expr_identifier "(" expr_arguments ")" -#line 654 "parser.ypp" +#line 655 "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 2948 "parser.cpp" break; case 166: // expr_function: "childthread" expr_identifier "(" expr_arguments ")" -#line 656 "parser.ypp" +#line 657 "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 2954 "parser.cpp" break; case 167: // expr_function: "childthread" expr_path "::" expr_identifier "(" expr_arguments ")" -#line 658 "parser.ypp" +#line 659 "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 2960 "parser.cpp" break; case 168: // expr_pointer: "[" "[" expr "]" "]" "(" expr_arguments ")" -#line 663 "parser.ypp" +#line 664 "parser.ypp" { yylhs.value.as < ast::call > ().as_pointer = std::make_unique(yylhs.location, std::move(yystack_[5].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr_arguments::ptr > ()), ast::call::mode::normal); } #line 2966 "parser.cpp" break; case 169: // expr_pointer: "thread" "[" "[" expr "]" "]" "(" expr_arguments ")" -#line 665 "parser.ypp" +#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::thread); } #line 2972 "parser.cpp" break; case 170: // expr_pointer: "childthread" "[" "[" expr "]" "]" "(" expr_arguments ")" -#line 667 "parser.ypp" +#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::childthread); } #line 2978 "parser.cpp" break; case 171: // expr_pointer: "call" "[" "[" expr "]" "]" "(" expr_arguments ")" -#line 669 "parser.ypp" +#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::builtin); } #line 2984 "parser.cpp" break; case 172: // expr_add_array: "[" expr_arguments_no_empty "]" -#line 674 "parser.ypp" +#line 675 "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 2990 "parser.cpp" break; case 173: // expr_parameters: expr_parameters "," expr_identifier -#line 679 "parser.ypp" +#line 680 "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 2996 "parser.cpp" break; case 174: // expr_parameters: expr_identifier -#line 681 "parser.ypp" +#line 682 "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 3002 "parser.cpp" break; case 175: // expr_parameters: %empty -#line 683 "parser.ypp" +#line 684 "parser.ypp" { yylhs.value.as < ast::expr_parameters::ptr > () = std::make_unique(yylhs.location); } #line 3008 "parser.cpp" break; case 176: // expr_arguments: expr_arguments_no_empty -#line 688 "parser.ypp" +#line 689 "parser.ypp" { yylhs.value.as < ast::expr_arguments::ptr > () = std::move(yystack_[0].value.as < ast::expr_arguments::ptr > ()); } #line 3014 "parser.cpp" break; case 177: // expr_arguments: %empty -#line 690 "parser.ypp" +#line 691 "parser.ypp" { yylhs.value.as < ast::expr_arguments::ptr > () = std::make_unique(yylhs.location); } #line 3020 "parser.cpp" break; case 178: // expr_arguments_no_empty: expr_arguments "," expr -#line 695 "parser.ypp" +#line 696 "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 3026 "parser.cpp" break; case 179: // expr_arguments_no_empty: expr -#line 697 "parser.ypp" +#line 698 "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 3032 "parser.cpp" break; case 180: // expr_reference: "::" expr_identifier -#line 702 "parser.ypp" +#line 703 "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 3038 "parser.cpp" break; case 181: // expr_reference: expr_path "::" expr_identifier -#line 704 "parser.ypp" +#line 705 "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 3044 "parser.cpp" break; case 182: // expr_array: expr_object "[" expr "]" -#line 709 "parser.ypp" +#line 710 "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 3050 "parser.cpp" break; - case 183: // expr_field: expr_object "." expr_identifier -#line 714 "parser.ypp" + case 183: // expr_field: expr_object "." expr_identifier_nosize +#line 715 "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 3056 "parser.cpp" break; - case 184: // expr_field: expr_object "field" -#line 716 "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 > ())); } + case 184: // expr_size: expr_object "." "size" +#line 720 "parser.ypp" + { yylhs.value.as < ast::expr_size::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ())); } #line 3062 "parser.cpp" break; - case 185: // 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 > ())); } + case 185: // expr_paren: "(" expr ")" +#line 725 "parser.ypp" + { yylhs.value.as < ast::expr_paren::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } #line 3068 "parser.cpp" break; - case 186: // 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 > ())); } + case 186: // expr_object: expr_call +#line 729 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_call::ptr > ()); } #line 3074 "parser.cpp" break; - case 187: // expr_object: expr_call + case 187: // expr_object: expr_method #line 730 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_call::ptr > ()); } + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_method::ptr > ()); } #line 3080 "parser.cpp" break; - case 188: // expr_object: expr_method + case 188: // expr_object: expr_array #line 731 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_method::ptr > ()); } + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_array::ptr > ()); } #line 3086 "parser.cpp" break; - case 189: // expr_object: expr_array + case 189: // expr_object: expr_field #line 732 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_array::ptr > ()); } + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_field::ptr > ()); } #line 3092 "parser.cpp" break; - case 190: // expr_object: expr_field + case 190: // expr_object: expr_game #line 733 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_field::ptr > ()); } + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_game::ptr > ()); } #line 3098 "parser.cpp" break; - case 191: // expr_object: expr_game + case 191: // expr_object: expr_self #line 734 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_game::ptr > ()); } + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_self::ptr > ()); } #line 3104 "parser.cpp" break; - case 192: // expr_object: expr_self + case 192: // expr_object: expr_anim #line 735 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_self::ptr > ()); } + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_anim::ptr > ()); } #line 3110 "parser.cpp" break; - case 193: // expr_object: expr_anim + case 193: // expr_object: expr_level #line 736 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_anim::ptr > ()); } + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_level::ptr > ()); } #line 3116 "parser.cpp" break; - case 194: // expr_object: expr_level + case 194: // expr_object: expr_identifier #line 737 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_level::ptr > ()); } + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ()); } #line 3122 "parser.cpp" break; - case 195: // 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 > ()); } + case 195: // expr_thisthread: "thisthread" +#line 742 "parser.ypp" + { yylhs.value.as < ast::expr_thisthread::ptr > () = std::make_unique(yylhs.location); } #line 3128 "parser.cpp" break; - case 196: // expr_thisthread: "thisthread" -#line 743 "parser.ypp" - { yylhs.value.as < ast::expr_thisthread::ptr > () = std::make_unique(yylhs.location); } + case 196: // expr_empty_array: "[" "]" +#line 747 "parser.ypp" + { yylhs.value.as < ast::expr_empty_array::ptr > () = std::make_unique(yylhs.location); } #line 3134 "parser.cpp" break; - case 197: // expr_empty_array: "[" "]" -#line 748 "parser.ypp" - { yylhs.value.as < ast::expr_empty_array::ptr > () = std::make_unique(yylhs.location); } + case 197: // expr_undefined: "undefined" +#line 752 "parser.ypp" + { yylhs.value.as < ast::expr_undefined::ptr > () = std::make_unique(yylhs.location); } #line 3140 "parser.cpp" break; - case 198: // expr_undefined: "undefined" -#line 753 "parser.ypp" - { yylhs.value.as < ast::expr_undefined::ptr > () = std::make_unique(yylhs.location); } + case 198: // expr_game: "game" +#line 757 "parser.ypp" + { yylhs.value.as < ast::expr_game::ptr > () = std::make_unique(yylhs.location); } #line 3146 "parser.cpp" break; - case 199: // expr_game: "game" -#line 758 "parser.ypp" - { yylhs.value.as < ast::expr_game::ptr > () = std::make_unique(yylhs.location); } + case 199: // expr_self: "self" +#line 762 "parser.ypp" + { yylhs.value.as < ast::expr_self::ptr > () = std::make_unique(yylhs.location); } #line 3152 "parser.cpp" break; - case 200: // expr_self: "self" -#line 763 "parser.ypp" - { yylhs.value.as < ast::expr_self::ptr > () = std::make_unique(yylhs.location); } + case 200: // expr_anim: "anim" +#line 767 "parser.ypp" + { yylhs.value.as < ast::expr_anim::ptr > () = std::make_unique(yylhs.location); } #line 3158 "parser.cpp" break; - case 201: // expr_anim: "anim" -#line 768 "parser.ypp" - { yylhs.value.as < ast::expr_anim::ptr > () = std::make_unique(yylhs.location); } + case 201: // expr_level: "level" +#line 772 "parser.ypp" + { yylhs.value.as < ast::expr_level::ptr > () = std::make_unique(yylhs.location); } #line 3164 "parser.cpp" break; - case 202: // expr_level: "level" -#line 773 "parser.ypp" - { yylhs.value.as < ast::expr_level::ptr > () = std::make_unique(yylhs.location); } + case 202: // expr_animation: "%" "identifier" +#line 777 "parser.ypp" + { yylhs.value.as < ast::expr_animation::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 3170 "parser.cpp" break; - case 203: // expr_animation: "%" "identifier" -#line 778 "parser.ypp" - { yylhs.value.as < ast::expr_animation::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 203: // expr_animtree: "#animtree" +#line 782 "parser.ypp" + { yylhs.value.as < ast::expr_animtree::ptr > () = std::make_unique(yylhs.location); } #line 3176 "parser.cpp" break; - case 204: // expr_animtree: "#animtree" -#line 783 "parser.ypp" - { yylhs.value.as < ast::expr_animtree::ptr > () = std::make_unique(yylhs.location); } + case 204: // expr_identifier_nosize: "identifier" +#line 787 "parser.ypp" + { yylhs.value.as < ast::expr_identifier::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 3182 "parser.cpp" break; case 205: // expr_identifier: "identifier" -#line 788 "parser.ypp" +#line 792 "parser.ypp" { yylhs.value.as < ast::expr_identifier::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 3188 "parser.cpp" break; - case 206: // expr_path: "path" -#line 793 "parser.ypp" - { yylhs.value.as < ast::expr_path::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 206: // expr_identifier: "size" +#line 794 "parser.ypp" + { yylhs.value.as < ast::expr_identifier::ptr > () = std::make_unique(yylhs.location, "size"); } #line 3194 "parser.cpp" break; - case 207: // expr_path: expr_identifier -#line 795 "parser.ypp" - { yylhs.value.as < ast::expr_path::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < ast::expr_identifier::ptr > ()->value); } + case 207: // expr_path: "identifier" +#line 799 "parser.ypp" + { yylhs.value.as < ast::expr_path::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 3200 "parser.cpp" break; - case 208: // expr_istring: "localized string" -#line 800 "parser.ypp" - { yylhs.value.as < ast::expr_istring::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 208: // expr_path: "path" +#line 801 "parser.ypp" + { yylhs.value.as < ast::expr_path::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 3206 "parser.cpp" break; - case 209: // expr_string: "string literal" -#line 805 "parser.ypp" - { yylhs.value.as < ast::expr_string::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 209: // expr_istring: "localized string" +#line 806 "parser.ypp" + { yylhs.value.as < ast::expr_istring::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 3212 "parser.cpp" break; - case 210: // expr_vector: "(" expr "," expr "," expr ")" -#line 810 "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 > ())); } + case 210: // expr_string: "string literal" +#line 811 "parser.ypp" + { yylhs.value.as < ast::expr_string::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 3218 "parser.cpp" break; - case 211: // expr_float: "-" "float" -#line 815 "parser.ypp" - { yylhs.value.as < ast::expr_float::ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } + case 211: // expr_vector: "(" expr "," expr "," expr ")" +#line 816 "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 3224 "parser.cpp" break; - case 212: // expr_float: "float" -#line 817 "parser.ypp" - { yylhs.value.as < ast::expr_float::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 212: // expr_float: "-" "float" +#line 821 "parser.ypp" + { yylhs.value.as < ast::expr_float::ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } #line 3230 "parser.cpp" break; - case 213: // expr_integer: "-" "integer" -#line 822 "parser.ypp" - { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } + 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 3236 "parser.cpp" break; - case 214: // expr_integer: "integer" -#line 824 "parser.ypp" - { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 214: // expr_integer: "-" "integer" +#line 828 "parser.ypp" + { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } #line 3242 "parser.cpp" break; - case 215: // expr_false: "false" -#line 829 "parser.ypp" - { yylhs.value.as < ast::expr_false::ptr > () = std::make_unique(yylhs.location); } + 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 3248 "parser.cpp" break; - case 216: // expr_true: "true" -#line 834 "parser.ypp" - { yylhs.value.as < ast::expr_true::ptr > () = std::make_unique(yylhs.location); } + case 216: // expr_false: "false" +#line 835 "parser.ypp" + { yylhs.value.as < ast::expr_false::ptr > () = std::make_unique(yylhs.location); } #line 3254 "parser.cpp" break; + case 217: // expr_true: "true" +#line 840 "parser.ypp" + { yylhs.value.as < ast::expr_true::ptr > () = std::make_unique(yylhs.location); } +#line 3260 "parser.cpp" + break; -#line 3258 "parser.cpp" + +#line 3264 "parser.cpp" default: break; @@ -3445,12 +3451,12 @@ namespace xsk { namespace gsc { namespace iw7 { "while", "for", "foreach", "in", "switch", "case", "default", "break", "continue", "return", "breakpoint", "prof_begin", "prof_end", "thread", "childthread", "thisthread", "call", "true", "false", "undefined", - ".size", "game", "self", "anim", "level", "(", ")", "{", "}", "[", "]", + "size", "game", "self", "anim", "level", "(", ")", "{", "}", "[", "]", ",", ".", "::", ":", ";", "?", "++", "--", "<<", ">>", "||", "&&", "==", "!=", "<=", ">=", "<", ">", "!", "~", "=", "+=", "-=", "*=", "/=", "%=", "|=", "&=", "^=", ">>=", "<<=", "|", "&", "^", "+", "-", "*", "/", "%", - "field", "path", "identifier", "string literal", "localized string", - "float", "integer", "ADD_ARRAY", "THEN", "TERN", "NEG", "ANIMREF", + "path", "identifier", "string literal", "localized string", "float", + "integer", "SIZEOF", "ADD_ARRAY", "THEN", "TERN", "NEG", "ANIMREF", "PREINC", "PREDEC", "POSTINC", "POSTDEC", "$accept", "root", "program", "inline", "include", "declaration", "decl_usingtree", "decl_constant", "decl_thread", "stmt", "stmt_or_dev", "stmt_list", "stmt_or_dev_list", @@ -3468,9 +3474,9 @@ namespace xsk { namespace gsc { namespace iw7 { "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_vector", "expr_float", "expr_integer", "expr_false", - "expr_true", YY_NULLPTR + "expr_animtree", "expr_identifier_nosize", "expr_identifier", + "expr_path", "expr_istring", "expr_string", "expr_vector", "expr_float", + "expr_integer", "expr_false", "expr_true", YY_NULLPTR }; return yy_sname[yysymbol]; } @@ -3735,649 +3741,655 @@ namespace xsk { namespace gsc { namespace iw7 { } - const short parser::yypact_ninf_ = -263; + const short parser::yypact_ninf_ = -266; const short parser::yytable_ninf_ = -208; const short parser::yypact_[] = { - 4, -263, -263, 2, 2, -23, -263, 11, 4, -263, - -263, -263, -263, -263, -263, 6, -263, -263, -41, -20, - -27, -263, -263, -263, -263, -16, 1035, -263, -263, -263, - 33, 21, -263, -263, -34, -31, -263, 34, -263, -263, - -263, -263, -263, -263, -263, 1035, 907, -16, 1035, 1035, - -32, -7, -263, -263, -263, 1983, -263, -263, -263, -263, - -263, 122, 155, -263, -263, -263, -263, 540, 562, -263, - -263, 624, -263, -263, -263, 660, 995, 1003, 1063, -263, - -263, 35, 38, -263, -263, -263, -263, -263, -263, -263, - 40, 63, -16, 53, 59, 70, 81, 69, 79, 92, - 1269, 907, -263, 2066, 83, 94, -263, -263, -263, -263, - -263, -263, -263, 1035, 1035, 1035, 1035, 1035, 1035, 1035, - 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, - 1035, 1035, -263, 1099, -16, -263, -263, -263, 75, 97, - 1035, -16, -263, 742, -263, -263, 1035, 1035, -16, 1035, - 1035, -16, 1035, -263, 1035, 1713, 1035, -263, 1948, 163, - 163, 2097, 2107, 2179, 2179, -43, -43, -43, -43, 2138, - 557, 2148, -35, -35, -263, -263, -263, 1753, -263, -16, - 27, -263, 109, 834, 1035, 96, 116, 1227, 119, 121, - 125, 135, -66, 113, 128, 129, 971, 130, 142, 147, - -263, 145, 56, 56, -263, -263, 788, -263, -263, -263, - -263, -263, -263, -263, -263, -263, -263, -263, -263, -263, - -263, -263, -263, -263, -263, -263, -263, -263, -263, -263, - -263, -263, 143, 144, 146, 148, 160, -263, -263, 1147, - -263, -263, -263, -263, 17, 1793, 55, 157, 1833, 57, - 165, 1873, 1912, 161, 2066, 1035, -263, 109, -263, 1035, - -263, -263, 880, 2018, -263, 1035, 196, 1035, -10, -16, - 1035, 124, 164, 167, -263, -263, -263, -263, 2053, -263, - 1035, 1035, 1035, -263, -263, 931, 931, -263, -263, -263, - -263, -263, -263, -263, 179, 180, 181, 184, -263, -263, - 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, - 1035, 182, -263, 1035, 185, -263, 1035, 186, 1035, 192, - 2066, 61, -263, -263, -263, 1435, 198, 1469, 199, -263, - -263, -263, 1231, -2, 1503, -263, -263, -263, 65, 67, - 1713, 1035, 1035, 1035, 1035, 2066, 2066, 2066, 2066, 2066, - 2066, 2066, 2066, 2066, 2066, 2066, 208, 71, 210, 78, - 212, 1537, 1035, -263, 1227, 1035, 1227, 1035, 1035, -16, - 63, 204, 209, 1571, 1313, 1357, 1401, 1035, -263, 1035, - -263, 1035, -263, 85, 223, 1605, -263, 2066, 211, 1639, - 244, -263, -263, -263, 213, 215, 1035, 217, 1035, 218, - 1035, 87, 106, 114, -263, 1227, 219, -10, 1227, 1035, - -263, -263, 229, -263, 230, -263, 231, -263, -263, -263, - -263, -263, 238, -263, 1673, 232, 235, 236, 1227, 1227, - -263, -263, -263, -263, -263 + 6, -266, -266, -13, -13, -23, -266, -266, 39, 6, + -266, -266, -266, -266, -266, -266, -40, -266, -266, 11, + 20, -11, -266, -266, -266, -266, -38, 1079, -266, -266, + -266, 43, -3, -266, -266, -22, 31, -266, 46, -266, + -266, -266, -266, -266, -266, -266, 1079, 644, -38, 1079, + 1079, 60, -6, 45, -266, -266, -266, 2012, -266, -266, + -266, -266, -266, 476, 583, -266, -266, -266, -266, 836, + 841, -266, -266, 1039, -266, -266, -266, 1047, 1106, 1277, + 1285, -266, -266, 67, 49, -266, -266, -266, -266, -266, + -266, -266, 41, 64, -38, 65, 68, 83, 71, 72, + 91, 98, 1298, 644, -266, 2095, 76, 101, -266, -266, + -266, -266, -266, -266, -266, 1079, 1079, 1079, 1079, 1079, + 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, + 1079, 1079, 1079, 1079, 1142, -19, -266, -266, 108, 103, + 1079, -38, -266, 805, -266, -266, 1079, 1079, -38, 1079, + 1079, -38, 1079, -266, 1079, 1742, 1079, -266, 1977, 133, + 133, 2126, 2136, 212, 212, 74, 74, 74, 74, 2167, + 2208, 2177, -63, -63, -266, -266, -266, 1782, -266, -266, + -266, -38, -2, -266, 119, 934, 1079, 110, 127, 1265, + 128, 131, 132, 135, -58, 136, 126, 130, 1016, 134, + 141, 142, -266, 146, 50, 50, -266, -266, 881, -266, + -266, -266, -266, -266, -266, -266, -266, -266, -266, -266, + -266, -266, -266, -266, -266, -266, -266, -266, -266, -266, + -266, -266, -266, -266, 145, 148, 149, 150, 151, -266, + -266, 1189, -266, -266, -266, -266, 108, 1822, -1, 156, + 1862, 1, 164, 1902, 1941, 160, 2095, 1079, -266, 119, + -266, 1079, -266, -266, 987, 2047, -266, 1079, 171, 1079, + 397, -38, 1079, 129, 174, 176, -266, -266, -266, -266, + 2082, -266, 1079, 1079, 1079, -266, -266, 1299, 1299, -266, + -266, -266, -266, -266, -266, -266, 169, 180, 186, 187, + 105, -266, -266, 1079, 1079, 1079, 1079, 1079, 1079, 1079, + 1079, 1079, 1079, 1079, 184, -266, 1079, 188, -266, 1079, + 191, 1079, 192, 2095, 19, -266, -266, -266, 1464, 197, + 1498, 190, -266, -266, -266, -17, -15, 1532, -266, -266, + -266, 36, 58, 1742, 1079, 1079, 1079, 1079, 2095, 2095, + 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 198, + 59, 203, 77, 204, 1566, 1079, -266, 1265, 1079, 1265, + 1079, 1079, -38, 64, 199, 200, 1600, 1342, 1386, 1430, + 1079, -266, 1079, -266, 1079, -266, 78, 234, 1634, -266, + 2095, 201, 1668, 238, -266, -266, -266, 202, 207, 1079, + 211, 1079, 213, 1079, 79, 80, 92, -266, 1265, 214, + 397, 1265, 1079, -266, -266, 224, -266, 228, -266, 229, + -266, -266, -266, -266, -266, 237, -266, 1702, 230, 231, + 233, 1265, 1265, -266, -266, -266, -266, -266 }; const unsigned char parser::yydefact_[] = { - 3, 12, 13, 0, 0, 0, 205, 0, 2, 7, - 8, 9, 14, 15, 16, 0, 206, 207, 0, 0, - 0, 1, 4, 5, 6, 175, 0, 10, 11, 209, - 0, 0, 174, 204, 0, 0, 196, 0, 216, 215, - 198, 199, 200, 201, 202, 0, 177, 0, 0, 0, - 0, 0, 208, 212, 214, 0, 90, 91, 92, 129, - 130, 131, 132, 158, 159, 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, - 0, 0, 0, 0, 207, 0, 0, 207, 0, 0, - 0, 177, 197, 179, 0, 176, 180, 157, 156, 211, - 213, 203, 18, 0, 0, 0, 0, 0, 0, 0, + 3, 12, 13, 0, 0, 0, 206, 205, 0, 2, + 7, 8, 9, 14, 15, 16, 0, 208, 207, 0, + 0, 0, 1, 4, 5, 6, 175, 0, 10, 11, + 210, 0, 0, 174, 203, 0, 0, 195, 0, 217, + 216, 197, 198, 199, 200, 201, 0, 177, 0, 0, + 0, 0, 0, 205, 209, 213, 215, 0, 90, 91, + 92, 129, 130, 131, 132, 158, 159, 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, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 177, 196, 179, 0, 176, 180, 157, + 156, 212, 214, 202, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 185, 0, 0, 184, 160, 161, 207, 0, + 0, 0, 0, 0, 0, 0, 160, 161, 0, 0, 177, 0, 17, 0, 19, 173, 0, 177, 0, 0, - 177, 0, 0, 186, 0, 179, 0, 172, 0, 122, + 177, 0, 0, 185, 0, 179, 0, 172, 0, 122, 123, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 124, 125, 126, 127, 128, 0, 183, 0, - 0, 176, 181, 0, 0, 0, 0, 0, 0, 0, + 120, 121, 124, 125, 126, 127, 128, 0, 184, 204, + 183, 0, 0, 176, 181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 187, 188, 189, 190, 0, - 191, 192, 193, 194, 195, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 178, 0, 182, 0, 162, 177, - 51, 47, 0, 0, 71, 0, 0, 0, 57, 0, - 0, 0, 0, 0, 82, 83, 84, 86, 0, 87, - 177, 177, 0, 187, 188, 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, 164, 177, 0, 166, 177, 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, 177, 163, 0, 0, 0, 94, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 177, 165, 177, - 167, 177, 210, 0, 72, 0, 74, 93, 0, 0, - 0, 79, 88, 89, 0, 0, 177, 0, 177, 0, - 177, 0, 0, 0, 168, 0, 0, 57, 0, 0, - 63, 65, 176, 68, 176, 70, 176, 169, 170, 171, - 73, 75, 0, 77, 0, 0, 0, 0, 0, 0, - 64, 67, 69, 76, 78 + 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, 186, 187, 188, + 189, 0, 190, 191, 192, 193, 194, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 178, 0, 182, 0, + 162, 177, 51, 47, 0, 0, 71, 0, 0, 0, + 57, 0, 0, 0, 0, 0, 82, 83, 84, 86, + 0, 87, 177, 177, 0, 186, 187, 106, 108, 52, + 48, 60, 61, 62, 58, 59, 0, 0, 0, 0, + 0, 107, 109, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 164, 177, 0, 166, 177, + 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, 177, 163, 0, 0, 0, + 94, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 177, 165, 177, 167, 177, 211, 0, 72, 0, 74, + 93, 0, 0, 0, 79, 88, 89, 0, 0, 177, + 0, 177, 0, 177, 0, 0, 0, 168, 0, 0, + 57, 0, 0, 63, 65, 176, 68, 176, 70, 176, + 169, 170, 171, 73, 75, 0, 77, 0, 0, 0, + 0, 0, 0, 64, 67, 69, 76, 78 }; const short parser::yypgoto_[] = { - -263, -263, -263, 283, 290, 292, -263, -263, -263, 205, - 117, -263, -263, -263, -86, -87, -263, -263, -263, -263, - -263, -263, -263, -263, -263, -263, -263, -263, -263, -263, - -263, -263, -263, -263, -263, -263, -263, -263, -263, 188, - -263, -262, -261, -258, -263, -263, -263, -263, -263, -141, - -28, -57, -40, -263, -263, 262, -45, -263, -18, 156, - -263, -263, 239, -263, -263, -263, 248, 276, 321, 331, - -263, -263, 0, 9, -263, -11, -263, -263, 132, -263, - -263 + -266, -266, -266, 286, 289, 291, -266, -266, -266, -179, + 93, -266, -266, -266, -91, -108, -266, -266, -266, -266, + -266, -266, -266, -266, -266, -266, -266, -266, -266, -266, + -266, -266, -266, -266, -266, -266, -266, -266, -266, 196, + -266, -265, -255, -254, -266, -266, -266, -266, -266, -31, + -5, -69, -66, -266, -266, -26, -46, -266, 208, 266, + -266, -266, 306, -266, -266, -266, 340, 380, 389, 394, + -266, -266, -266, 0, 9, -266, -18, -266, -266, 114, + -266, -266 }; const short parser::yydefgoto_[] = { - 0, 7, 8, 9, 10, 11, 12, 13, 14, 204, - 205, 262, 206, 207, 208, 328, 209, 210, 211, 212, - 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, - 223, 224, 225, 226, 227, 228, 229, 230, 231, 103, - 388, 232, 233, 234, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 31, 104, 181, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89 + 0, 8, 9, 10, 11, 12, 13, 14, 15, 206, + 207, 264, 208, 209, 210, 331, 211, 212, 213, 214, + 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 227, 228, 229, 230, 231, 232, 233, 105, + 391, 234, 235, 236, 58, 59, 60, 61, 62, 63, + 64, 65, 66, 67, 32, 106, 183, 68, 69, 70, + 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 180, 83, 84, 85, 86, 87, 88, 89, + 90, 91 }; const short parser::yytable_[] = { - 15, 105, 235, 17, 17, 144, 329, 330, 15, 30, - 331, 21, 18, 19, 136, 1, 2, 3, 4, 5, - 27, 93, 114, 115, 96, 32, 271, 368, 20, 34, - 35, 137, 37, 29, 94, 97, 54, 41, 42, 43, - 44, 28, 235, 95, 98, 201, 235, 106, 127, 128, - 129, 130, 131, 202, 203, 369, 105, 25, 129, 130, - 131, 283, 283, 16, 6, 235, 16, 6, 140, 109, - 110, 138, 29, 91, -195, -195, -207, -195, 92, 258, - 139, -195, 6, 26, 156, 90, 140, 16, 6, 99, - -195, 111, 145, -195, -207, 34, 35, 141, 37, 16, - 6, 142, 6, 41, 42, 43, 44, 312, 146, 315, - 147, 201, 156, 363, 156, 236, 143, 371, 156, 372, - 150, 235, 156, 378, 156, 237, 140, 283, 156, 148, - 380, -195, -195, -195, 178, 156, 149, 404, 151, 417, - 156, 182, 156, 244, 156, 329, 330, 152, 247, 331, - 157, 250, 139, 16, 6, 236, 179, 264, 418, 236, - 259, -187, -187, 156, -187, 237, 419, 265, -187, 237, - 267, 156, 268, 274, 284, 284, 269, -187, 236, 257, - -187, 272, 136, 244, 237, 237, 270, 244, 237, 275, - 276, 279, 139, 280, -188, -188, 139, -188, 281, 137, - 282, -188, 244, 244, 289, 290, 244, 291, 313, 292, - -188, 139, 139, -188, 55, 139, 316, 319, -187, -187, - -187, 293, 326, 235, 335, 235, 110, 336, 136, 136, - 341, 342, 343, 100, 236, 344, 107, 108, 356, 138, - 284, 358, 360, 362, 237, 137, 137, 405, 139, 365, - 237, -188, -188, -188, 127, 128, 129, 130, 131, 377, - 367, 379, 244, 381, 235, 392, 283, 235, 244, 333, - 393, 139, 407, 409, 410, 136, 411, 139, 413, 415, - 421, 425, 426, 427, 391, 138, 138, 235, 235, 155, - 428, 22, 137, 430, 139, 139, 431, 432, 23, 238, - 24, 158, 159, 160, 161, 162, 163, 164, 165, 166, + 16, 107, 144, 31, 136, 332, 263, 137, 6, 16, + 268, 26, 19, 20, 371, 333, 334, 1, 2, 3, + 4, 5, 35, 36, 6, 38, 33, 178, 21, 6, + 131, 132, 133, 95, 273, 96, 99, 27, 134, 22, + 30, 300, 372, 56, 97, 100, 301, 302, 108, 93, + 260, 315, 6, 318, 94, 156, 156, 107, 156, 7, + 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, + 313, 366, 28, 138, 17, 53, 156, 6, 179, 17, + 53, 29, 139, 17, 18, 326, 98, 30, 374, 35, + 36, 113, 38, 156, 145, 92, 6, 42, 43, 44, + 45, 101, 142, 7, -207, 203, -194, -194, 141, -194, + 375, 381, 237, -194, 182, 156, 156, 143, 140, 147, + 146, 248, -194, 150, 251, -194, 149, 17, 53, 383, + 407, 420, 421, 156, 156, 156, 156, 156, 238, 116, + 117, 184, 148, 246, 422, 332, 17, 53, 249, 156, + 151, 252, 139, 152, 237, 333, 334, 157, 237, 140, + 111, 112, 181, -194, -194, 129, 130, 131, 132, 133, + 261, 266, 136, 285, 285, 137, 274, 237, 267, 269, + 238, 259, 270, 271, 238, 246, 272, 277, 387, 246, + 389, 278, 282, 283, 139, 281, 276, 329, 139, 286, + 286, 284, 179, 238, 246, 246, 291, 316, 246, 292, + 293, 294, 295, 139, 139, 319, 322, 139, 136, 136, + 344, 137, 137, 57, 129, 130, 131, 132, 133, 423, + 112, 345, 426, 237, 338, 324, 339, 346, 347, 285, + 359, 138, 102, 365, 361, 109, 110, 363, 368, 380, + 139, 370, 436, 437, 382, 384, 341, 342, 408, 238, + 395, 396, 410, 413, 246, 286, 136, 412, 414, 137, + 246, 336, 416, 139, 418, 424, 428, 116, 117, 139, + 429, 430, 394, 122, 123, 124, 125, 138, 138, 431, + 360, 433, 434, 362, 435, 23, 139, 139, 24, 155, + 25, 290, 425, 129, 130, 131, 132, 133, 275, 0, + 0, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 422, 177, 0, 288, 273, 0, 0, 0, 0, 0, - 0, 0, 138, 0, 245, 0, 236, 248, 236, 238, - 251, 139, 252, 238, 254, 0, 237, 0, 237, 0, - 0, 412, 0, 414, 0, 416, 0, 0, 238, 238, - 0, 0, 238, 0, 244, 0, 244, 0, 0, 390, - 0, 0, 263, 139, 0, 139, 0, 236, 0, 284, - 236, 0, 239, 0, 278, 0, 0, 237, 261, 237, - 237, 240, 266, 0, 0, 0, 0, 0, 0, 0, - 236, 236, 180, 0, 0, 244, 0, 244, 244, 246, - 237, 237, 249, 0, 139, 0, 139, 139, 238, 241, - 0, 0, 239, 0, 238, 0, 239, 0, 244, 244, - 0, 240, 0, 0, 0, 240, 0, 139, 139, 0, - 0, 285, 286, 320, 0, 239, 0, 0, 0, 0, - 240, 240, 0, 325, 240, 327, 0, 0, 334, 241, - 0, 0, 0, 241, 242, 0, 0, 323, 0, 0, - 340, 0, 0, 0, 243, 0, 0, 0, 241, 241, - 0, 0, 241, 0, 0, 0, 0, 0, 345, 346, - 347, 348, 349, 350, 351, 352, 353, 354, 355, 0, - 0, 239, 0, 0, 242, 0, 361, 332, 242, 0, - 240, 0, 0, 0, 243, 0, 240, 0, 243, 0, - 238, 321, 238, 242, 242, 0, 0, 242, 0, 373, - 374, 375, 376, 243, 243, 0, 0, 243, 241, 0, - 0, 0, 338, 339, 241, 0, 0, 0, 0, 0, - 0, 0, 0, 385, 0, 387, 389, 0, 0, 0, - 0, 238, 0, 238, 238, 0, 0, 0, 0, 384, - 0, 386, 0, 0, 0, 357, 0, 0, 359, -189, - -189, 0, -189, 242, 238, 238, -189, 0, 0, 242, - 0, 0, 0, 243, 0, -189, 0, 424, -189, 243, - 0, -190, -190, 239, -190, 239, 0, 0, -190, 0, - 420, 0, 240, 423, 240, 0, 0, -190, 0, 0, - -190, 0, 114, 115, 383, 0, 118, 119, 120, 121, - 122, 123, 0, 433, 434, 0, -189, -189, -189, 401, - 241, 402, 241, 403, 239, 0, 332, 239, 127, 128, - 129, 130, 131, 240, 0, 240, 240, 0, -190, -190, - -190, 0, 0, 34, 35, 0, 37, 239, 239, 0, - 132, 0, 0, 0, 0, 0, 240, 240, 0, 133, - 0, 241, 134, 241, 241, 242, 0, 242, 0, 0, - 0, 0, 0, 0, 0, 243, 0, 243, 0, -191, - -191, 0, -191, 0, 241, 241, -191, 0, 0, 0, - 0, 0, 0, 0, 0, -191, 0, 0, -191, 0, - 135, 16, 6, 0, 0, 0, 242, 0, 242, 242, - 0, 0, 0, 0, 0, 0, 243, 0, 243, 243, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 242, - 242, 0, 0, 183, 0, 0, -191, -191, -191, 243, - 243, 184, 0, 0, 185, 186, 0, 187, 188, 189, - 190, 0, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 34, 35, 0, 37, 0, 0, 0, 0, 41, - 42, 43, 44, 0, 0, 143, 200, 201, 0, 183, - 0, 0, 0, 0, 0, 202, 203, 184, 0, 0, - 185, 186, 0, 187, 188, 189, 190, 0, 191, 192, - 193, 194, 195, 196, 197, 198, 199, 34, 35, 0, - 37, 0, 0, 0, 0, 41, 42, 43, 44, 16, - 6, 143, 287, 201, 0, 0, 260, 0, 0, 0, - 0, 202, 203, 184, 0, 0, 185, 186, 0, 187, - 188, 189, 190, 0, 191, 192, 193, 194, 195, 196, - 197, 198, 199, 34, 35, 0, 37, 0, 0, 0, - 0, 41, 42, 43, 44, 16, 6, 143, 0, 201, - 0, 0, 322, 0, 0, 0, 0, 202, 203, 184, - 0, 0, 185, 186, 0, 187, 188, 189, 190, 0, - 191, 192, 193, 194, 195, 196, 197, 198, 199, 34, - 35, 0, 37, 33, 0, 0, 0, 41, 42, 43, - 44, 16, 6, 143, 0, 201, 0, 0, 0, 0, - 0, 0, 0, 202, 203, 0, 34, 35, 36, 37, - 38, 39, 40, 0, 41, 42, 43, 44, 45, 0, - 0, 0, 101, 102, 0, 0, 47, 0, 0, 0, - 34, 35, 0, 37, 0, 0, 0, 16, 6, 0, - 0, 0, 48, 49, 0, 0, 133, 33, 0, 134, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, - 0, 0, 51, 0, 16, 6, 29, 52, 53, 54, - 34, 35, 36, 37, 38, 39, 40, 0, 41, 42, - 43, 44, 45, 0, 0, 0, 46, 135, 16, 6, - 47, 0, 277, 0, -192, -192, 0, -192, 0, 0, - 0, -192, -193, -193, 0, -193, 48, 49, 0, -193, - -192, 33, 0, -192, 0, 0, 0, 0, -193, 0, - 0, -193, 0, 50, 0, 0, 51, 0, 16, 6, - 29, 52, 53, 54, 34, 35, 36, 37, 38, 39, - 40, 0, 41, 42, 43, 44, 45, 0, 0, 0, - 46, -192, -192, -192, 47, 0, 0, 0, 0, -193, - -193, -193, -194, -194, 0, -194, 0, 0, 0, -194, - 48, 49, 0, 0, 0, 33, 0, 0, -194, 0, - 0, -194, 0, 0, 0, 0, 0, 50, 0, 0, - 51, 0, 16, 6, 29, 52, 53, 54, 34, 35, - 36, 37, 38, 39, 40, 0, 41, 42, 43, 44, - 45, 0, 0, 0, 101, 0, 0, 0, 47, -194, - -194, -194, 0, 0, 294, 295, 0, 296, 297, 0, - 0, 0, 0, 0, 48, 49, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 34, 35, 0, 37, - 0, 50, 0, 0, 51, 0, 16, 6, 29, 52, - 53, 54, 133, 0, 0, 134, 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, 0, 0, 0, 0, - 0, 0, 0, 135, 16, 6, 184, 0, 0, 185, - 186, 0, 187, 188, 189, 190, 0, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 34, 35, 0, 37, - 34, 35, 0, 37, 41, 42, 43, 44, 0, 0, - 143, 0, 201, 0, 0, 0, 133, 0, 0, 134, - 202, 203, 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, - 0, 153, 0, 0, 16, 6, 154, 135, 16, 6, - 0, 113, 0, 0, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 124, 125, 126, - 127, 128, 129, 130, 131, 395, 0, 0, 0, 0, - 396, 0, 0, 0, 0, 113, 0, 0, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 0, 0, + 177, 0, 0, 0, 0, 138, 237, 0, 237, 386, + 0, 0, 247, 0, 139, 250, 0, 0, 253, 0, + 254, 239, 256, 415, 404, 417, 405, 419, 406, 0, + 0, 0, 238, 0, 238, 0, 0, 246, 0, 246, + 0, 0, 393, 0, 0, 0, 139, 237, 139, 285, + 237, 0, 265, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 239, 280, 0, 0, 239, 0, 0, + 237, 237, 0, 238, 0, 286, 238, 0, 246, 240, + 246, 246, 239, 239, 0, 0, 239, 139, 0, 139, + 139, 0, 0, 0, 0, 0, 238, 238, 0, 0, + 0, 246, 246, 0, 0, 0, 35, 36, 0, 38, + 139, 139, 0, 6, 42, 43, 44, 45, 0, 241, + 0, 240, 203, 323, 0, 240, 0, 0, 0, 0, + 204, 205, 0, 328, 0, 330, 0, 0, 337, 0, + 240, 240, 239, 0, 240, 0, 0, 0, 239, 0, + 343, 0, 0, 242, 0, 0, 0, 0, 0, 0, + 0, 241, 0, 17, 53, 241, 0, 0, 0, 348, + 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, + 287, 288, 0, 0, 241, -186, -186, 364, -186, 0, + 0, 0, -186, 243, 0, 242, 0, 0, 0, 242, + 240, -186, 244, 0, -186, 0, 240, 245, 0, 0, + 376, 377, 378, 379, 242, 242, 0, 0, 242, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 124, 125, 126, 127, 128, 129, 130, 131, 397, - 0, 0, 0, 0, 398, 0, 0, 0, 0, 113, - 0, 0, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 124, 125, 126, 127, 128, - 129, 130, 131, 399, 0, 0, 0, 0, 400, 0, - 0, 0, 0, 113, 0, 0, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 364, 0, 124, - 125, 126, 127, 128, 129, 130, 131, 113, 0, 0, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, + 0, 0, 0, 0, 388, 243, 390, 392, 0, 243, + 241, 0, -186, -186, 244, 239, 335, 239, 244, 245, + 0, 0, 0, 245, 243, 243, 0, 0, 243, 0, + 0, 0, 0, 244, 244, 0, 0, 244, 245, 245, + 0, 0, 245, 0, 242, 0, 0, 0, 427, 0, + 242, 0, 0, 0, 0, 0, 239, 0, 239, 239, + 0, 0, -187, -187, 0, -187, 0, 0, 0, -187, + 0, 0, 0, 240, 0, 240, 0, 0, -187, 239, + 239, -187, 0, 0, 243, 0, 0, 0, 0, 0, + 243, 0, 0, 244, 0, 0, 0, 0, 245, 244, + 34, 0, 0, 0, 245, 0, 0, 0, 0, 0, + 0, 0, 0, 241, 240, 241, 240, 240, 0, -187, + -187, 0, 0, 35, 36, 37, 38, 39, 40, 41, + 6, 42, 43, 44, 45, 46, 0, 240, 240, 103, + 104, 0, 0, 48, 0, 0, 0, 242, 0, 242, + 0, 0, 0, 0, 241, 0, 335, 241, 0, 49, + 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 51, 241, 241, 52, + 17, 53, 30, 54, 55, 56, 0, 243, 242, 243, + 242, 242, 0, 0, 0, 0, 244, 0, 244, 0, + 0, 245, 0, 245, 0, 0, 0, 0, 0, 0, + 0, 242, 242, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 243, 0, + 243, 243, 0, 0, 0, 0, 0, 244, 0, 244, + 244, 0, 245, 0, 245, 245, 0, 0, 0, 0, + 0, 243, 243, 0, 0, 0, 185, 0, 0, 0, + 244, 244, 0, 0, 186, 245, 245, 187, 188, 0, + 189, 190, 191, 192, 0, 193, 194, 195, 196, 197, + 198, 199, 200, 201, 35, 36, 0, 38, 0, 0, + 0, 6, 42, 43, 44, 45, 0, 0, 143, 202, + 203, 0, 0, 0, 0, 0, 0, 0, 204, 205, + 0, 0, 0, 0, 0, -188, -188, 0, -188, 0, + -189, -189, -188, -189, 0, 0, 0, -189, 0, 0, + 0, -188, 185, 0, -188, 0, -189, 0, 0, -189, + 186, 17, 53, 187, 188, 0, 189, 190, 191, 192, + 0, 193, 194, 195, 196, 197, 198, 199, 200, 201, + 35, 36, 0, 38, 0, 0, 0, 6, 42, 43, + 44, 45, -188, -188, 143, 289, 203, -189, -189, 0, + 0, 0, 0, 0, 204, 205, 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, 35, 36, 0, 38, 17, 53, 0, + 6, 42, 43, 44, 45, 0, 0, 143, 0, 203, + 0, 0, 0, 0, 0, 0, 0, 204, 205, 325, + 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, 35, 36, 0, 38, + 17, 53, 34, 6, 42, 43, 44, 45, 0, 0, + 143, 0, 203, 0, 0, 0, 0, 0, 0, 0, + 204, 205, 0, 0, 0, 35, 36, 37, 38, 39, + 40, 41, 6, 42, 43, 44, 45, 46, 0, 0, + 0, 47, 0, 0, 0, 48, 0, 279, 35, 36, + 0, 38, 0, 17, 53, 6, -190, -190, 0, -190, + 0, 49, 50, -190, 134, 34, 0, 135, 0, 0, + 0, 0, -190, 0, 0, -190, 0, 0, 51, 0, + 0, 52, 17, 53, 30, 54, 55, 56, 35, 36, + 37, 38, 39, 40, 41, 6, 42, 43, 44, 45, + 46, 0, 0, 0, 47, 17, 53, 0, 48, 0, + 0, 0, 0, -190, -190, -191, -191, 0, -191, 0, + 0, 0, -191, 0, 49, 50, 0, 0, 34, 0, + 0, -191, 0, 0, -191, 0, 0, 0, 0, 0, + 0, 51, 0, 0, 52, 17, 53, 30, 54, 55, + 56, 35, 36, 37, 38, 39, 40, 41, 6, 42, + 43, 44, 45, 46, 0, 0, 0, 103, 0, 0, + 0, 48, -191, -191, 0, 0, 296, 297, 0, 298, + 299, 0, 0, 0, 0, 0, 0, 49, 50, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 35, 36, + 0, 38, 0, 0, 51, 6, 0, 52, 17, 53, + 30, 54, 55, 56, 134, 0, 0, 300, 0, 0, + 0, 0, 301, 302, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, 313, 0, 0, 0, + 0, 0, 0, 0, 186, 17, 53, 187, 188, 0, + 189, 190, 191, 192, 0, 193, 194, 195, 196, 197, + 198, 199, 200, 201, 35, 36, 0, 38, 0, 0, + 0, 6, 42, 43, 44, 45, -192, -192, 143, -192, + 203, 0, 0, -192, -193, -193, 0, -193, 204, 205, + 0, -193, -192, 0, 0, -192, 0, 0, 35, 36, + -193, 38, 0, -193, 0, 6, 0, 0, 0, 0, + 153, 0, 0, 0, 134, 154, 0, 300, 0, 0, + 115, 17, 53, 116, 117, 118, 119, 120, 121, 122, + 123, 124, 125, -192, -192, 0, 0, 0, 0, 0, + 0, -193, -193, 0, 0, 0, 126, 127, 128, 129, + 130, 131, 132, 133, 398, 17, 53, 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, 0, 0, - 0, 366, 0, 124, 125, 126, 127, 128, 129, 130, - 131, 113, 0, 0, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 370, 0, 124, 125, 126, - 127, 128, 129, 130, 131, 113, 0, 0, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 382, - 0, 124, 125, 126, 127, 128, 129, 130, 131, 113, - 0, 0, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 394, 0, 124, 125, 126, 127, 128, - 129, 130, 131, 113, 0, 0, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 406, 0, 124, - 125, 126, 127, 128, 129, 130, 131, 113, 0, 0, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, + 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, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 367, 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, 408, 0, 124, 125, 126, 127, 128, 129, 130, - 131, 113, 0, 0, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 429, 0, 124, 125, 126, - 127, 128, 129, 130, 131, 113, 0, 0, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 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, 373, 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, 385, 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, 397, 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, 409, 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, 124, 125, 126, 127, 128, 129, 130, 131, 253, - 0, 0, 0, 0, 0, 113, 0, 0, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 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, 432, 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, 124, 125, 126, 127, 128, 129, 130, 131, 256, - 0, 0, 0, 0, 0, 113, 0, 0, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 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, - 0, 124, 125, 126, 127, 128, 129, 130, 131, 311, - 0, 0, 0, 0, 0, 113, 0, 0, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 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, - 0, 124, 125, 126, 127, 128, 129, 130, 131, 314, - 0, 0, 0, 0, 0, 113, 0, 0, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 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, - 0, 124, 125, 126, 127, 128, 129, 130, 131, 317, - 0, 0, 0, 0, 0, 113, 0, 0, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 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, - 0, 124, 125, 126, 127, 128, 129, 130, 131, 318, - 0, 0, 0, 0, 113, 0, 0, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 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, - 124, 125, 126, 127, 128, 129, 130, 131, 255, 0, - 113, 0, 0, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 124, 125, 126, 127, - 128, 129, 130, 131, 112, 113, 0, 0, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 0, 0, + 126, 127, 128, 129, 130, 131, 132, 133, 321, 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, - 0, 124, 125, 126, 127, 128, 129, 130, 131, 324, - 113, 0, 0, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 124, 125, 126, 127, - 128, 129, 130, 131, 337, 113, 0, 0, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 113, 0, - 0, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 0, - 0, 0, 0, 0, 124, 125, 126, 127, 128, 129, - 130, 131, 114, 115, 0, 117, 118, 119, 120, 121, - 122, 123, 114, 115, 0, 0, 118, 119, 120, 121, - 122, 123, 0, 0, 0, 124, 125, 126, 127, 128, - 129, 130, 131, 0, 0, 124, 125, 126, 127, 128, - 129, 130, 131, 114, 115, 0, 0, 118, 119, 120, - 121, 122, 123, 114, 115, 0, 0, 118, 119, 120, - 121, 122, 123, 0, 0, 0, 0, 125, 126, 127, - 128, 129, 130, 131, 0, 0, 0, 125, 0, 127, - 128, 129, 130, 131, 114, 115, 0, 0, 0, 0, - 120, 121, 122, 123, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 127, 128, 129, 130, 131 + 126, 127, 128, 129, 130, 131, 132, 133, 327, 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, 340, 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 }; const short parser::yycheck_[] = { - 0, 46, 143, 3, 4, 91, 268, 268, 8, 20, - 268, 0, 3, 4, 71, 11, 12, 13, 14, 15, - 61, 55, 65, 66, 55, 25, 92, 29, 51, 39, - 40, 71, 42, 99, 34, 35, 102, 47, 48, 49, - 50, 61, 183, 34, 35, 55, 187, 47, 91, 92, - 93, 94, 95, 63, 64, 57, 101, 51, 93, 94, - 95, 202, 203, 97, 98, 206, 97, 98, 51, 101, - 102, 71, 99, 52, 39, 40, 59, 42, 57, 52, - 71, 46, 98, 77, 57, 52, 51, 97, 98, 55, - 55, 98, 92, 58, 59, 39, 40, 59, 42, 97, - 98, 61, 98, 47, 48, 49, 50, 52, 55, 52, - 51, 55, 57, 52, 57, 143, 53, 52, 57, 52, - 51, 262, 57, 52, 57, 143, 51, 268, 57, 59, - 52, 96, 97, 98, 134, 57, 55, 52, 59, 52, - 57, 141, 57, 143, 57, 407, 407, 55, 148, 407, - 56, 151, 143, 97, 98, 183, 59, 61, 52, 187, - 51, 39, 40, 57, 42, 183, 52, 51, 46, 187, - 51, 57, 51, 60, 202, 203, 51, 55, 206, 179, - 58, 192, 239, 183, 202, 203, 51, 187, 206, 61, - 61, 61, 183, 51, 39, 40, 187, 42, 51, 239, - 55, 46, 202, 203, 61, 61, 206, 61, 51, 61, - 55, 202, 203, 58, 26, 206, 51, 56, 96, 97, - 98, 61, 26, 364, 60, 366, 102, 60, 285, 286, - 51, 51, 51, 45, 262, 51, 48, 49, 56, 239, - 268, 56, 56, 51, 262, 285, 286, 24, 239, 51, - 268, 96, 97, 98, 91, 92, 93, 94, 95, 51, - 61, 51, 262, 51, 405, 61, 407, 408, 268, 269, - 61, 262, 61, 29, 61, 332, 61, 268, 61, 61, - 61, 52, 52, 52, 370, 285, 286, 428, 429, 101, - 52, 8, 332, 61, 285, 286, 61, 61, 8, 143, - 8, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 407, 133, -1, 206, 192, -1, -1, -1, -1, -1, - -1, -1, 332, -1, 146, -1, 364, 149, 366, 183, - 152, 332, 154, 187, 156, -1, 364, -1, 366, -1, - -1, 396, -1, 398, -1, 400, -1, -1, 202, 203, - -1, -1, 206, -1, 364, -1, 366, -1, -1, 369, - -1, -1, 184, 364, -1, 366, -1, 405, -1, 407, - 408, -1, 143, -1, 196, -1, -1, 405, 183, 407, - 408, 143, 187, -1, -1, -1, -1, -1, -1, -1, - 428, 429, 140, -1, -1, 405, -1, 407, 408, 147, - 428, 429, 150, -1, 405, -1, 407, 408, 262, 143, - -1, -1, 183, -1, 268, -1, 187, -1, 428, 429, - -1, 183, -1, -1, -1, 187, -1, 428, 429, -1, - -1, 202, 203, 255, -1, 206, -1, -1, -1, -1, - 202, 203, -1, 265, 206, 267, -1, -1, 270, 183, - -1, -1, -1, 187, 143, -1, -1, 262, -1, -1, - 282, -1, -1, -1, 143, -1, -1, -1, 202, 203, - -1, -1, 206, -1, -1, -1, -1, -1, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, -1, - -1, 262, -1, -1, 183, -1, 318, 268, 187, -1, - 262, -1, -1, -1, 183, -1, 268, -1, 187, -1, - 364, 259, 366, 202, 203, -1, -1, 206, -1, 341, - 342, 343, 344, 202, 203, -1, -1, 206, 262, -1, - -1, -1, 280, 281, 268, -1, -1, -1, -1, -1, - -1, -1, -1, 365, -1, 367, 368, -1, -1, -1, - -1, 405, -1, 407, 408, -1, -1, -1, -1, 364, - -1, 366, -1, -1, -1, 313, -1, -1, 316, 39, - 40, -1, 42, 262, 428, 429, 46, -1, -1, 268, - -1, -1, -1, 262, -1, 55, -1, 409, 58, 268, - -1, 39, 40, 364, 42, 366, -1, -1, 46, -1, - 405, -1, 364, 408, 366, -1, -1, 55, -1, -1, - 58, -1, 65, 66, 362, -1, 69, 70, 71, 72, - 73, 74, -1, 428, 429, -1, 96, 97, 98, 377, - 364, 379, 366, 381, 405, -1, 407, 408, 91, 92, - 93, 94, 95, 405, -1, 407, 408, -1, 96, 97, - 98, -1, -1, 39, 40, -1, 42, 428, 429, -1, - 46, -1, -1, -1, -1, -1, 428, 429, -1, 55, - -1, 405, 58, 407, 408, 364, -1, 366, -1, -1, - -1, -1, -1, -1, -1, 364, -1, 366, -1, 39, - 40, -1, 42, -1, 428, 429, 46, -1, -1, -1, - -1, -1, -1, -1, -1, 55, -1, -1, 58, -1, - 96, 97, 98, -1, -1, -1, 405, -1, 407, 408, - -1, -1, -1, -1, -1, -1, 405, -1, 407, 408, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 428, - 429, -1, -1, 11, -1, -1, 96, 97, 98, 428, - 429, 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, -1, -1, 53, 54, 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, -1, 12, -1, -1, -1, - -1, 63, 64, 19, -1, -1, 22, 23, -1, 25, + 0, 47, 93, 21, 73, 270, 185, 73, 46, 9, + 189, 51, 3, 4, 29, 270, 270, 11, 12, 13, + 14, 15, 39, 40, 46, 42, 26, 46, 51, 46, + 93, 94, 95, 55, 92, 35, 36, 77, 55, 0, + 98, 58, 57, 101, 35, 36, 63, 64, 48, 52, + 52, 52, 46, 52, 57, 57, 57, 103, 57, 97, + 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, + 87, 52, 61, 73, 96, 97, 57, 46, 97, 96, + 97, 61, 73, 96, 97, 264, 55, 98, 52, 39, + 40, 97, 42, 57, 94, 52, 46, 47, 48, 49, + 50, 55, 61, 97, 59, 55, 39, 40, 59, 42, + 52, 52, 143, 46, 140, 57, 57, 53, 51, 51, + 55, 147, 55, 51, 150, 58, 55, 96, 97, 52, + 52, 52, 52, 57, 57, 57, 57, 57, 143, 65, + 66, 141, 59, 143, 52, 410, 96, 97, 148, 57, + 59, 151, 143, 55, 185, 410, 410, 56, 189, 51, + 100, 101, 59, 96, 97, 91, 92, 93, 94, 95, + 51, 61, 241, 204, 205, 241, 194, 208, 51, 51, + 185, 181, 51, 51, 189, 185, 51, 61, 367, 189, + 369, 61, 51, 51, 185, 61, 60, 26, 189, 204, + 205, 55, 97, 208, 204, 205, 61, 51, 208, 61, + 61, 61, 61, 204, 205, 51, 56, 208, 287, 288, + 51, 287, 288, 27, 91, 92, 93, 94, 95, 408, + 101, 51, 411, 264, 60, 261, 60, 51, 51, 270, + 56, 241, 46, 51, 56, 49, 50, 56, 51, 51, + 241, 61, 431, 432, 51, 51, 282, 283, 24, 264, + 61, 61, 61, 61, 264, 270, 335, 29, 61, 335, + 270, 271, 61, 264, 61, 61, 52, 65, 66, 270, + 52, 52, 373, 71, 72, 73, 74, 287, 288, 52, + 316, 61, 61, 319, 61, 9, 287, 288, 9, 103, + 9, 208, 410, 91, 92, 93, 94, 95, 194, -1, + -1, 115, 116, 117, 118, 119, 120, 121, 122, 123, + 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, + 134, -1, -1, -1, -1, 335, 367, -1, 369, 365, + -1, -1, 146, -1, 335, 149, -1, -1, 152, -1, + 154, 143, 156, 399, 380, 401, 382, 403, 384, -1, + -1, -1, 367, -1, 369, -1, -1, 367, -1, 369, + -1, -1, 372, -1, -1, -1, 367, 408, 369, 410, + 411, -1, 186, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 185, 198, -1, -1, 189, -1, -1, + 431, 432, -1, 408, -1, 410, 411, -1, 408, 143, + 410, 411, 204, 205, -1, -1, 208, 408, -1, 410, + 411, -1, -1, -1, -1, -1, 431, 432, -1, -1, + -1, 431, 432, -1, -1, -1, 39, 40, -1, 42, + 431, 432, -1, 46, 47, 48, 49, 50, -1, 143, + -1, 185, 55, 257, -1, 189, -1, -1, -1, -1, + 63, 64, -1, 267, -1, 269, -1, -1, 272, -1, + 204, 205, 264, -1, 208, -1, -1, -1, 270, -1, + 284, -1, -1, 143, -1, -1, -1, -1, -1, -1, + -1, 185, -1, 96, 97, 189, -1, -1, -1, 303, + 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, + 204, 205, -1, -1, 208, 39, 40, 321, 42, -1, + -1, -1, 46, 143, -1, 185, -1, -1, -1, 189, + 264, 55, 143, -1, 58, -1, 270, 143, -1, -1, + 344, 345, 346, 347, 204, 205, -1, -1, 208, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 368, 185, 370, 371, -1, 189, + 264, -1, 96, 97, 185, 367, 270, 369, 189, 185, + -1, -1, -1, 189, 204, 205, -1, -1, 208, -1, + -1, -1, -1, 204, 205, -1, -1, 208, 204, 205, + -1, -1, 208, -1, 264, -1, -1, -1, 412, -1, + 270, -1, -1, -1, -1, -1, 408, -1, 410, 411, + -1, -1, 39, 40, -1, 42, -1, -1, -1, 46, + -1, -1, -1, 367, -1, 369, -1, -1, 55, 431, + 432, 58, -1, -1, 264, -1, -1, -1, -1, -1, + 270, -1, -1, 264, -1, -1, -1, -1, 264, 270, + 16, -1, -1, -1, 270, -1, -1, -1, -1, -1, + -1, -1, -1, 367, 408, 369, 410, 411, -1, 96, + 97, -1, -1, 39, 40, 41, 42, 43, 44, 45, + 46, 47, 48, 49, 50, 51, -1, 431, 432, 55, + 56, -1, -1, 59, -1, -1, -1, 367, -1, 369, + -1, -1, -1, -1, 408, -1, 410, 411, -1, 75, + 76, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 92, 431, 432, 95, + 96, 97, 98, 99, 100, 101, -1, 367, 408, 369, + 410, 411, -1, -1, -1, -1, 367, -1, 369, -1, + -1, 367, -1, 369, -1, -1, -1, -1, -1, -1, + -1, 431, 432, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 408, -1, + 410, 411, -1, -1, -1, -1, -1, 408, -1, 410, + 411, -1, 408, -1, 410, 411, -1, -1, -1, -1, + -1, 431, 432, -1, -1, -1, 11, -1, -1, -1, + 431, 432, -1, -1, 19, 431, 432, 22, 23, -1, + 25, 26, 27, 28, -1, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, -1, 42, -1, -1, + -1, 46, 47, 48, 49, 50, -1, -1, 53, 54, + 55, -1, -1, -1, -1, -1, -1, -1, 63, 64, + -1, -1, -1, -1, -1, 39, 40, -1, 42, -1, + 39, 40, 46, 42, -1, -1, -1, 46, -1, -1, + -1, 55, 11, -1, 58, -1, 55, -1, -1, 58, + 19, 96, 97, 22, 23, -1, 25, 26, 27, 28, + -1, 30, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, -1, 42, -1, -1, -1, 46, 47, 48, + 49, 50, 96, 97, 53, 54, 55, 96, 97, -1, + -1, -1, -1, -1, 63, 64, 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, -1, -1, -1, - -1, 47, 48, 49, 50, 97, 98, 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, 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, -1, -1, -1, - 39, 40, -1, 42, -1, -1, -1, 97, 98, -1, - -1, -1, 75, 76, -1, -1, 55, 16, -1, 58, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 92, - -1, -1, 95, -1, 97, 98, 99, 100, 101, 102, - 39, 40, 41, 42, 43, 44, 45, -1, 47, 48, - 49, 50, 51, -1, -1, -1, 55, 96, 97, 98, - 59, -1, 61, -1, 39, 40, -1, 42, -1, -1, - -1, 46, 39, 40, -1, 42, 75, 76, -1, 46, - 55, 16, -1, 58, -1, -1, -1, -1, 55, -1, - -1, 58, -1, 92, -1, -1, 95, -1, 97, 98, - 99, 100, 101, 102, 39, 40, 41, 42, 43, 44, - 45, -1, 47, 48, 49, 50, 51, -1, -1, -1, - 55, 96, 97, 98, 59, -1, -1, -1, -1, 96, - 97, 98, 39, 40, -1, 42, -1, -1, -1, 46, - 75, 76, -1, -1, -1, 16, -1, -1, 55, -1, - -1, 58, -1, -1, -1, -1, -1, 92, -1, -1, - 95, -1, 97, 98, 99, 100, 101, 102, 39, 40, - 41, 42, 43, 44, 45, -1, 47, 48, 49, 50, - 51, -1, -1, -1, 55, -1, -1, -1, 59, 96, - 97, 98, -1, -1, 17, 18, -1, 20, 21, -1, - -1, -1, -1, -1, 75, 76, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 39, 40, -1, 42, - -1, 92, -1, -1, 95, -1, 97, 98, 99, 100, - 101, 102, 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, -1, -1, -1, -1, - -1, -1, -1, 96, 97, 98, 19, -1, -1, 22, + 36, 37, 38, 39, 40, -1, 42, 96, 97, -1, + 46, 47, 48, 49, 50, -1, -1, 53, -1, 55, + -1, -1, -1, -1, -1, -1, -1, 63, 64, 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, - 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, -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, 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, 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, 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, + 96, 97, 16, 46, 47, 48, 49, 50, -1, -1, + 53, -1, 55, -1, -1, -1, -1, -1, -1, -1, + 63, 64, -1, -1, -1, 39, 40, 41, 42, 43, + 44, 45, 46, 47, 48, 49, 50, 51, -1, -1, + -1, 55, -1, -1, -1, 59, -1, 61, 39, 40, + -1, 42, -1, 96, 97, 46, 39, 40, -1, 42, + -1, 75, 76, 46, 55, 16, -1, 58, -1, -1, + -1, -1, 55, -1, -1, 58, -1, -1, 92, -1, + -1, 95, 96, 97, 98, 99, 100, 101, 39, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, + 51, -1, -1, -1, 55, 96, 97, -1, 59, -1, + -1, -1, -1, 96, 97, 39, 40, -1, 42, -1, + -1, -1, 46, -1, 75, 76, -1, -1, 16, -1, + -1, 55, -1, -1, 58, -1, -1, -1, -1, -1, + -1, 92, -1, -1, 95, 96, 97, 98, 99, 100, + 101, 39, 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, -1, -1, -1, 55, -1, -1, + -1, 59, 96, 97, -1, -1, 17, 18, -1, 20, + 21, -1, -1, -1, -1, -1, -1, 75, 76, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 39, 40, + -1, 42, -1, -1, 92, 46, -1, 95, 96, 97, + 98, 99, 100, 101, 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, -1, -1, + -1, -1, -1, -1, 19, 96, 97, 22, 23, -1, + 25, 26, 27, 28, -1, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, -1, 42, -1, -1, + -1, 46, 47, 48, 49, 50, 39, 40, 53, 42, + 55, -1, -1, 46, 39, 40, -1, 42, 63, 64, + -1, 46, 55, -1, -1, 58, -1, -1, 39, 40, + 55, 42, -1, 58, -1, 46, -1, -1, -1, -1, + 52, -1, -1, -1, 55, 57, -1, 58, -1, -1, + 62, 96, 97, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 96, 97, -1, -1, -1, -1, -1, + -1, 96, 97, -1, -1, -1, 88, 89, 90, 91, + 92, 93, 94, 95, 52, 96, 97, -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, 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, + 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, 88, 89, 90, 91, 92, 93, 94, 95, -1, + 74, -1, -1, -1, -1, -1, -1, -1, -1, -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, 88, 89, 90, 91, 92, - 93, 94, 95, 65, 66, -1, -1, 69, 70, 71, - 72, 73, 74, 65, 66, -1, -1, 69, 70, 71, - 72, 73, 74, -1, -1, -1, -1, 89, 90, 91, - 92, 93, 94, 95, -1, -1, -1, 89, -1, 91, - 92, 93, 94, 95, 65, 66, -1, -1, -1, -1, - 71, 72, 73, 74, -1, -1, -1, -1, -1, -1, + 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, 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, - 91, 92, 93, 94, 95 + 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, 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, 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, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 88, 89, 90, 91, 92, + 93, 94, 95, 61, 62, -1, -1, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, 62, -1, -1, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 88, 89, 90, 91, 92, 93, 94, 95, -1, -1, + -1, -1, -1, 88, 89, 90, 91, 92, 93, 94, + 95, 65, 66, -1, 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, 88, 89, 90, 91, 92, 93, + 94, 95, 65, 66, -1, -1, 69, 70, 71, 72, + 73, 74, 65, 66, -1, -1, 69, 70, 71, 72, + 73, 74, -1, -1, -1, -1, 89, 90, 91, 92, + 93, 94, 95, -1, -1, -1, 89, -1, 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, -1, -1, 91, + 92, 93, 94, 95 }; const unsigned char parser::yystos_[] = { - 0, 11, 12, 13, 14, 15, 98, 113, 114, 115, - 116, 117, 118, 119, 120, 184, 97, 184, 185, 185, - 51, 0, 115, 116, 117, 51, 77, 61, 61, 99, - 187, 166, 184, 16, 39, 40, 41, 42, 43, 44, - 45, 47, 48, 49, 50, 51, 55, 59, 75, 76, - 92, 95, 100, 101, 102, 151, 156, 157, 158, 159, - 160, 161, 162, 163, 164, 165, 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, 184, 185, 55, 184, 185, 55, - 151, 55, 56, 151, 167, 168, 184, 151, 151, 101, - 102, 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, 163, 164, 184, 185, - 51, 59, 61, 53, 126, 184, 55, 51, 59, 55, + 0, 11, 12, 13, 14, 15, 46, 97, 113, 114, + 115, 116, 117, 118, 119, 120, 185, 96, 97, 186, + 186, 51, 0, 115, 116, 117, 51, 77, 61, 61, + 98, 188, 166, 185, 16, 39, 40, 41, 42, 43, + 44, 45, 47, 48, 49, 50, 51, 55, 59, 75, + 76, 92, 95, 97, 99, 100, 101, 151, 156, 157, + 158, 159, 160, 161, 162, 163, 164, 165, 169, 170, + 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, + 181, 182, 183, 185, 186, 187, 188, 189, 190, 191, + 192, 193, 52, 52, 57, 55, 185, 186, 55, 185, + 186, 55, 151, 55, 56, 151, 167, 168, 185, 151, + 151, 100, 101, 97, 61, 62, 65, 66, 67, 68, + 69, 70, 71, 72, 73, 74, 88, 89, 90, 91, + 92, 93, 94, 95, 55, 58, 163, 164, 185, 186, + 51, 59, 61, 53, 126, 185, 55, 51, 59, 55, 51, 59, 55, 52, 57, 151, 57, 56, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, - 151, 151, 151, 151, 151, 151, 151, 151, 184, 59, - 167, 168, 184, 11, 19, 22, 23, 25, 26, 27, - 28, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 54, 55, 63, 64, 121, 122, 124, 125, 126, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 153, 154, 155, 161, 162, 170, 171, 174, - 178, 179, 180, 181, 184, 151, 167, 184, 151, 167, - 184, 151, 151, 56, 151, 60, 56, 184, 52, 51, - 12, 121, 123, 151, 61, 51, 121, 51, 51, 51, - 51, 92, 187, 190, 60, 61, 61, 61, 151, 61, - 51, 51, 55, 161, 162, 174, 174, 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, - 151, 167, 12, 121, 61, 151, 26, 151, 127, 153, - 154, 155, 174, 184, 151, 60, 60, 61, 167, 167, - 151, 51, 51, 51, 51, 151, 151, 151, 151, 151, - 151, 151, 151, 151, 151, 151, 56, 167, 56, 167, - 56, 151, 51, 52, 52, 51, 52, 61, 29, 57, - 52, 52, 52, 151, 151, 151, 151, 51, 52, 51, - 52, 51, 52, 167, 121, 151, 121, 151, 152, 151, - 184, 126, 61, 61, 52, 52, 57, 52, 57, 52, - 57, 167, 167, 167, 52, 24, 52, 61, 52, 29, - 61, 61, 168, 61, 168, 61, 168, 52, 52, 52, - 121, 61, 127, 121, 151, 52, 52, 52, 52, 52, - 61, 61, 61, 121, 121 + 151, 151, 151, 151, 151, 151, 151, 151, 46, 97, + 184, 59, 167, 168, 185, 11, 19, 22, 23, 25, + 26, 27, 28, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 54, 55, 63, 64, 121, 122, 124, 125, + 126, 128, 129, 130, 131, 132, 133, 134, 135, 136, + 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, + 147, 148, 149, 150, 153, 154, 155, 161, 162, 170, + 171, 174, 178, 179, 180, 181, 185, 151, 167, 185, + 151, 167, 185, 151, 151, 56, 151, 60, 56, 185, + 52, 51, 12, 121, 123, 151, 61, 51, 121, 51, + 51, 51, 51, 92, 188, 191, 60, 61, 61, 61, + 151, 61, 51, 51, 55, 161, 162, 174, 174, 54, + 122, 61, 61, 61, 61, 61, 17, 18, 20, 21, + 58, 63, 64, 77, 78, 79, 80, 81, 82, 83, + 84, 85, 86, 87, 56, 52, 51, 56, 52, 51, + 56, 57, 56, 151, 167, 12, 121, 61, 151, 26, + 151, 127, 153, 154, 155, 174, 185, 151, 60, 60, + 61, 167, 167, 151, 51, 51, 51, 51, 151, 151, + 151, 151, 151, 151, 151, 151, 151, 151, 151, 56, + 167, 56, 167, 56, 151, 51, 52, 52, 51, 52, + 61, 29, 57, 52, 52, 52, 151, 151, 151, 151, + 51, 52, 51, 52, 51, 52, 167, 121, 151, 121, + 151, 152, 151, 185, 126, 61, 61, 52, 52, 57, + 52, 57, 52, 57, 167, 167, 167, 52, 24, 52, + 61, 52, 29, 61, 61, 168, 61, 168, 61, 168, + 52, 52, 52, 121, 61, 127, 121, 151, 52, 52, + 52, 52, 52, 61, 61, 61, 121, 121 }; const unsigned char @@ -4401,10 +4413,10 @@ namespace xsk { namespace gsc { namespace iw7 { 158, 158, 158, 158, 158, 158, 159, 160, 161, 161, 162, 162, 163, 163, 163, 163, 163, 163, 164, 164, 164, 164, 165, 166, 166, 166, 167, 167, 168, 168, - 169, 169, 170, 171, 171, 172, 173, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 185, 186, 187, - 188, 189, 189, 190, 190, 191, 192 + 169, 169, 170, 171, 172, 173, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 175, 176, 177, 178, 179, + 180, 181, 182, 183, 184, 185, 185, 186, 186, 187, + 188, 189, 190, 190, 191, 191, 192, 193 }; const signed char @@ -4428,10 +4440,10 @@ namespace xsk { namespace gsc { namespace iw7 { 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, - 7, 2, 1, 2, 1, 1, 1 + 2, 3, 4, 3, 3, 3, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, + 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, + 1, 7, 2, 1, 2, 1, 1, 1 }; @@ -4441,28 +4453,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, 331, 332, 336, 338, 343, 345, - 350, 351, 355, 356, 360, 362, 364, 367, 371, 373, - 378, 380, 382, 387, 392, 394, 399, 404, 406, 411, - 413, 418, 423, 428, 433, 438, 443, 448, 450, 455, - 460, 462, 467, 472, 477, 482, 484, 489, 494, 499, - 504, 505, 506, 510, 511, 515, 517, 519, 521, 523, - 525, 527, 529, 531, 533, 535, 540, 542, 547, 549, - 554, 559, 561, 563, 565, 567, 569, 571, 573, 575, - 577, 579, 581, 583, 585, 587, 589, 591, 593, 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, 816, 821, 823, 828, 833 + 0, 253, 253, 254, 258, 260, 262, 264, 266, 268, + 273, 277, 282, 283, 284, 285, 286, 290, 295, 300, + 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, + 325, 326, 327, 328, 332, 333, 337, 339, 344, 346, + 351, 352, 356, 357, 361, 363, 365, 368, 372, 374, + 379, 381, 383, 388, 393, 395, 400, 405, 407, 412, + 414, 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, 629, 634, 639, 640, + 643, 644, 648, 650, 652, 654, 656, 658, 663, 665, + 667, 669, 674, 679, 681, 684, 688, 691, 695, 697, + 702, 704, 709, 714, 719, 724, 729, 730, 731, 732, + 733, 734, 735, 736, 737, 741, 746, 751, 756, 761, + 766, 771, 776, 781, 786, 791, 793, 798, 800, 805, + 810, 815, 820, 822, 827, 829, 834, 839 }; void @@ -4495,9 +4507,9 @@ namespace xsk { namespace gsc { namespace iw7 { #line 13 "parser.ypp" } } } // xsk::gsc::iw7 -#line 4499 "parser.cpp" +#line 4511 "parser.cpp" -#line 837 "parser.ypp" +#line 843 "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 b2c63d7c..80bae2d9 100644 --- a/src/iw7/xsk/parser.hpp +++ b/src/iw7/xsk/parser.hpp @@ -474,6 +474,7 @@ namespace xsk { namespace gsc { namespace iw7 { // expr_game char dummy19[sizeof (ast::expr_game::ptr)]; + // expr_identifier_nosize // expr_identifier char dummy20[sizeof (ast::expr_identifier::ptr)]; @@ -615,7 +616,6 @@ namespace xsk { namespace gsc { namespace iw7 { // stmt_while char dummy65[sizeof (ast::stmt_while::ptr)]; - // "field" // "path" // "identifier" // "string literal" @@ -717,7 +717,7 @@ namespace xsk { namespace gsc { namespace iw7 { TRUE = 43, // "true" FALSE = 44, // "false" UNDEFINED = 45, // "undefined" - SIZE = 46, // ".size" + SIZE = 46, // "size" GAME = 47, // "game" SELF = 48, // "self" ANIM = 49, // "anim" @@ -767,13 +767,13 @@ namespace xsk { namespace gsc { namespace iw7 { MUL = 93, // "*" DIV = 94, // "/" MOD = 95, // "%" - FIELD = 96, // "field" - PATH = 97, // "path" - IDENTIFIER = 98, // "identifier" - STRING = 99, // "string literal" - ISTRING = 100, // "localized string" - FLOAT = 101, // "float" - INTEGER = 102, // "integer" + PATH = 96, // "path" + IDENTIFIER = 97, // "identifier" + STRING = 98, // "string literal" + ISTRING = 99, // "localized string" + FLOAT = 100, // "float" + INTEGER = 101, // "integer" + SIZEOF = 102, // SIZEOF ADD_ARRAY = 103, // ADD_ARRAY THEN = 104, // THEN TERN = 105, // TERN @@ -847,7 +847,7 @@ namespace xsk { namespace gsc { namespace iw7 { S_TRUE = 43, // "true" S_FALSE = 44, // "false" S_UNDEFINED = 45, // "undefined" - S_SIZE = 46, // ".size" + S_SIZE = 46, // "size" S_GAME = 47, // "game" S_SELF = 48, // "self" S_ANIM = 49, // "anim" @@ -897,13 +897,13 @@ namespace xsk { namespace gsc { namespace iw7 { S_MUL = 93, // "*" S_DIV = 94, // "/" S_MOD = 95, // "%" - S_FIELD = 96, // "field" - S_PATH = 97, // "path" - S_IDENTIFIER = 98, // "identifier" - S_STRING = 99, // "string literal" - S_ISTRING = 100, // "localized string" - S_FLOAT = 101, // "float" - S_INTEGER = 102, // "integer" + S_PATH = 96, // "path" + S_IDENTIFIER = 97, // "identifier" + S_STRING = 98, // "string literal" + S_ISTRING = 99, // "localized string" + S_FLOAT = 100, // "float" + S_INTEGER = 101, // "integer" + S_SIZEOF = 102, // SIZEOF S_ADD_ARRAY = 103, // ADD_ARRAY S_THEN = 104, // THEN S_TERN = 105, // TERN @@ -985,15 +985,16 @@ namespace xsk { namespace gsc { namespace iw7 { S_expr_level = 181, // expr_level S_expr_animation = 182, // expr_animation S_expr_animtree = 183, // expr_animtree - S_expr_identifier = 184, // expr_identifier - S_expr_path = 185, // expr_path - S_expr_istring = 186, // expr_istring - S_expr_string = 187, // expr_string - 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_expr_identifier_nosize = 184, // expr_identifier_nosize + 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_vector = 189, // expr_vector + S_expr_float = 190, // expr_float + S_expr_integer = 191, // expr_integer + S_expr_false = 192, // expr_false + S_expr_true = 193 // expr_true }; }; @@ -1116,6 +1117,7 @@ namespace xsk { namespace gsc { namespace iw7 { value.move< ast::expr_game::ptr > (std::move (that.value)); break; + case symbol_kind::S_expr_identifier_nosize: // expr_identifier_nosize case symbol_kind::S_expr_identifier: // expr_identifier value.move< ast::expr_identifier::ptr > (std::move (that.value)); break; @@ -1303,7 +1305,6 @@ namespace xsk { namespace gsc { namespace iw7 { value.move< ast::stmt_while::ptr > (std::move (that.value)); break; - case symbol_kind::S_FIELD: // "field" case symbol_kind::S_PATH: // "path" case symbol_kind::S_IDENTIFIER: // "identifier" case symbol_kind::S_STRING: // "string literal" @@ -2368,6 +2369,7 @@ switch (yykind) value.template destroy< ast::expr_game::ptr > (); break; + case symbol_kind::S_expr_identifier_nosize: // expr_identifier_nosize case symbol_kind::S_expr_identifier: // expr_identifier value.template destroy< ast::expr_identifier::ptr > (); break; @@ -2555,7 +2557,6 @@ switch (yykind) value.template destroy< ast::stmt_while::ptr > (); break; - case symbol_kind::S_FIELD: // "field" case symbol_kind::S_PATH: // "path" case symbol_kind::S_IDENTIFIER: // "identifier" case symbol_kind::S_STRING: // "string literal" @@ -2661,7 +2662,7 @@ switch (yykind) { IW7_ASSERT (tok == token::IW7EOF || (token::IW7error <= tok && tok <= token::MOD) - || (token::ADD_ARRAY <= tok && tok <= token::POSTDEC)); + || (token::SIZEOF <= tok && tok <= token::POSTDEC)); } #if 201103L <= YY_CPLUSPLUS symbol_type (int tok, std::string v, location_type l) @@ -2671,7 +2672,7 @@ switch (yykind) : super_type(token_type (tok), v, l) #endif { - IW7_ASSERT ((token::FIELD <= tok && tok <= token::INTEGER)); + IW7_ASSERT ((token::PATH <= tok && tok <= token::INTEGER)); } }; @@ -4161,21 +4162,6 @@ switch (yykind) return symbol_type (token::MOD, l); } #endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_FIELD (std::string v, location_type l) - { - return symbol_type (token::FIELD, std::move (v), std::move (l)); - } -#else - static - symbol_type - make_FIELD (const std::string& v, const location_type& l) - { - return symbol_type (token::FIELD, v, l); - } -#endif #if 201103L <= YY_CPLUSPLUS static symbol_type @@ -4266,6 +4252,21 @@ switch (yykind) return symbol_type (token::INTEGER, v, l); } #endif +#if 201103L <= YY_CPLUSPLUS + static + symbol_type + make_SIZEOF (location_type l) + { + return symbol_type (token::SIZEOF, std::move (l)); + } +#else + static + symbol_type + make_SIZEOF (const location_type& l) + { + return symbol_type (token::SIZEOF, l); + } +#endif #if 201103L <= YY_CPLUSPLUS static symbol_type @@ -4745,9 +4746,9 @@ switch (yykind) /// Constants. enum { - yylast_ = 2274, ///< Last index in yytable_. - yynnts_ = 81, ///< Number of nonterminal symbols. - yyfinal_ = 21 ///< Termination state number. + yylast_ = 2303, ///< Last index in yytable_. + yynnts_ = 82, ///< Number of nonterminal symbols. + yyfinal_ = 22 ///< Termination state number. }; @@ -4859,6 +4860,7 @@ switch (yykind) value.copy< ast::expr_game::ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_expr_identifier_nosize: // expr_identifier_nosize case symbol_kind::S_expr_identifier: // expr_identifier value.copy< ast::expr_identifier::ptr > (YY_MOVE (that.value)); break; @@ -5046,7 +5048,6 @@ switch (yykind) value.copy< ast::stmt_while::ptr > (YY_MOVE (that.value)); break; - case symbol_kind::S_FIELD: // "field" case symbol_kind::S_PATH: // "path" case symbol_kind::S_IDENTIFIER: // "identifier" case symbol_kind::S_STRING: // "string literal" @@ -5171,6 +5172,7 @@ switch (yykind) value.move< ast::expr_game::ptr > (YY_MOVE (s.value)); break; + case symbol_kind::S_expr_identifier_nosize: // expr_identifier_nosize case symbol_kind::S_expr_identifier: // expr_identifier value.move< ast::expr_identifier::ptr > (YY_MOVE (s.value)); break; @@ -5358,7 +5360,6 @@ switch (yykind) value.move< ast::stmt_while::ptr > (YY_MOVE (s.value)); break; - case symbol_kind::S_FIELD: // "field" case symbol_kind::S_PATH: // "path" case symbol_kind::S_IDENTIFIER: // "identifier" case symbol_kind::S_STRING: // "string literal" @@ -5431,7 +5432,7 @@ switch (yykind) #line 13 "parser.ypp" } } } // xsk::gsc::iw7 -#line 5435 "parser.hpp" +#line 5436 "parser.hpp" diff --git a/src/iw8/xsk/lexer.cpp b/src/iw8/xsk/lexer.cpp index 1d9ddd3c..f51376ff 100644 --- a/src/iw8/xsk/lexer.cpp +++ b/src/iw8/xsk/lexer.cpp @@ -60,6 +60,7 @@ const std::unordered_map keywo { "true", parser::token::TRUE }, { "false", parser::token::FALSE }, { "undefined", parser::token::UNDEFINED }, + { "size", parser::token::SIZE }, { "game", parser::token::GAME }, { "self", parser::token::SELF }, { "anim", parser::token::ANIM }, @@ -87,8 +88,8 @@ bool buffer::push(char c) return true; } -reader::reader() : state(reader::end), buffer_pos(0), bytes_remaining(0), - last_byte(0), current_byte(0) { } +reader::reader() : state(reader::end), buffer_pos(0), + bytes_remaining(0), last_byte(0), current_byte(0) {} void reader::init(const char* data, size_t size) { @@ -176,7 +177,6 @@ auto lexer::lex() -> parser::symbol_type { buffer_.length = 0; state_ = state::start; - loc_.step(); while (true) { @@ -184,6 +184,7 @@ auto lexer::lex() -> parser::symbol_type auto& last = reader_.last_byte; auto& curr = reader_.current_byte; auto path = false; + loc_.step(); if (state == reader::end) { @@ -216,7 +217,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 != '*' && curr != '/') return parser::make_DIV(loc_); advance(); @@ -248,14 +249,35 @@ auto lexer::lex() -> parser::symbol_type } else if (last == '#' && curr == '/') { - reader_.advance(); + advance(); break; } - reader_.advance(); + advance(); } } } + else if (last == '@') + { + while (true) + { + if (state == reader::end) + throw comp_error(loc_, "unmatched script doc comment start ('/@')"); + + if (curr == '\n') + { + loc_.lines(); + loc_.step(); + } + else if (last == '@' && curr == '/') + { + advance(); + break; + } + + advance(); + } + } else if (last == '*') { while (true) @@ -270,11 +292,11 @@ auto lexer::lex() -> parser::symbol_type } else if (last == '*' && curr == '/') { - reader_.advance(); + advance(); break; } - reader_.advance(); + advance(); } } else if (last == '/') @@ -284,30 +306,10 @@ auto lexer::lex() -> parser::symbol_type if (state == reader::end) break; - if (last == '\\' && (curr == '\r' || curr == '\n')) - { - reader_.advance(); - - if (state == reader::end) - break; - - if (last == '\r') - { - if (curr != '\n') - throw comp_error(loc_, "invalid token ('\')"); - - reader_.advance(); - } - - loc_.lines(); - loc_.step(); - continue; - } - if (curr == '\n') break; - reader_.advance(); + advance(); } } continue; @@ -317,8 +319,8 @@ auto lexer::lex() -> parser::symbol_type if (!indev_) throw comp_error(loc_, "unmatched devblock end ('#/')"); - indev_ = false; advance(); + indev_ = false; return parser::make_DEVEND(loc_); } @@ -339,7 +341,7 @@ auto lexer::lex() -> parser::symbol_type state_ = state::preprocessor; goto lex_name; case '*': - if (curr != '/' && curr != '=') + if (curr != '=' && curr != '/') return parser::make_MUL(loc_); advance(); @@ -352,13 +354,9 @@ auto lexer::lex() -> parser::symbol_type state_ = state::string; goto lex_string; case '.': - advance(); - - if (state == reader::end) - throw comp_error(loc_, "unterminated field ('.')"); - - state_ = state::field; - goto lex_name_or_number; + if (curr < '0' || curr > '9') + return parser::make_DOT(loc_); + goto lex_number; case '(': return parser::make_LPAREN(loc_); case ')': @@ -482,7 +480,6 @@ auto lexer::lex() -> parser::symbol_type advance(); return parser::make_ASSIGN_RSHIFT(loc_); default: -lex_name_or_number: if (last >= '0' && last <= '9') goto lex_number; else if (last == '_' || last >= 'A' && last <= 'Z' || last >= 'a' && last <= 'z') @@ -564,23 +561,8 @@ lex_name: advance(); } - if (state_ == state::field) + if (state_ == state::preprocessor) { - if (path) - throw comp_error(loc_, "invalid field token '\\'"); - - if (std::string_view(buffer_.data, buffer_.length) == "size") - { - return parser::make_SIZE(loc_); - } - - return parser::make_FIELD(std::string(buffer_.data, buffer_.length), loc_); - } - else if (state_ == state::preprocessor) - { - if (path) - throw comp_error(loc_, "invalid preprocessor directive"); - auto token = parser::token::IW8UNDEF; if (buffer_.length < 16) @@ -596,7 +578,8 @@ lex_name: } } - preprocessor(token); + preprocessor_run(token); + state_ = state::start; continue; } @@ -633,14 +616,11 @@ lex_name: } lex_number: - if (state_ == state::field) - buffer_.push('.'); - - if (state_ == state::field || last == '.' || last != '0' || (last == '0' && (curr != 'o' && curr != 'b' && curr != 'x'))) + if (last == '.' || last != '0' || (last == '0' && (curr != 'o' && curr != 'b' && curr != 'x'))) { buffer_.push(last); - auto dot = 0; + auto dot = last == '.' ? 1 : 0; auto flt = 0; while (true) @@ -676,10 +656,10 @@ lex_number: if (last == '\'') throw comp_error(loc_, "invalid number literal"); - if (state_ == state::field && dot || dot > 1 || flt > 1 || flt && buffer_.data[buffer_.length - 1] != 'f') + if (dot > 1 || flt > 1 || flt && buffer_.data[buffer_.length - 1] != 'f') throw comp_error(loc_, "invalid number literal"); - if (state_ == state::field || dot || flt) + if (dot || flt) return parser::make_FLOAT(std::string(buffer_.data, buffer_.length), loc_); return parser::make_INTEGER(std::string(buffer_.data, buffer_.length), loc_); @@ -694,7 +674,7 @@ lex_number: break; if (curr == '\'' && (last == '\'' || last == 'o') || (curr == 'o' && last == '\'')) - throw comp_error(loc_, "invalid octal literal"); + throw comp_error(loc_, "invalid octal literal"); if (curr == '\'') { @@ -784,18 +764,22 @@ lex_number: return parser::make_INTEGER(xsk::utils::string::hex_to_dec(buffer_.data), loc_); } - // cant get here! + + throw error("UNEXPECTED LEXER INTERNAL ERROR!"); } } void lexer::advance() { reader_.advance(); + loc_.end.column++; - // dont wrap comment marks '/\/' '/\*' outside strings - if (state_ == state::start && reader_.last_byte == '/') - return; + if (reader_.current_byte == '\\') [[unlikely]] + preprocessor_wrap(); +} +void lexer::preprocessor_wrap() +{ while (reader_.current_byte == '\\') { if (reader_.bytes_remaining == 1) @@ -837,7 +821,7 @@ void lexer::advance() } } -void lexer::preprocessor(parser::token::token_kind_type token) +void lexer::preprocessor_run(parser::token::token_kind_type token) { if (!clean_) throw comp_error(loc_, "invalid token ('#')"); diff --git a/src/iw8/xsk/lexer.hpp b/src/iw8/xsk/lexer.hpp index 3295f083..c6b9c62e 100644 --- a/src/iw8/xsk/lexer.hpp +++ b/src/iw8/xsk/lexer.hpp @@ -44,7 +44,7 @@ struct reader class lexer { - enum class state : std::uint8_t { start, string, localize, field, preprocessor }; + enum class state : std::uint8_t { start, string, localize, preprocessor }; reader reader_; buffer buffer_; @@ -66,7 +66,8 @@ public: private: void advance(); - void preprocessor(parser::token::token_kind_type token); + void preprocessor_wrap(); + void preprocessor_run(parser::token::token_kind_type token); }; } // namespace xsk::gsc::iw8 diff --git a/src/iw8/xsk/parser.cpp b/src/iw8/xsk/parser.cpp index efeef6da..59ccab73 100644 --- a/src/iw8/xsk/parser.cpp +++ b/src/iw8/xsk/parser.cpp @@ -301,6 +301,7 @@ namespace xsk { namespace gsc { namespace iw8 { value.YY_MOVE_OR_COPY< ast::expr_game::ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_expr_identifier_nosize: // expr_identifier_nosize case symbol_kind::S_expr_identifier: // expr_identifier value.YY_MOVE_OR_COPY< ast::expr_identifier::ptr > (YY_MOVE (that.value)); break; @@ -500,7 +501,6 @@ namespace xsk { namespace gsc { namespace iw8 { value.YY_MOVE_OR_COPY< ast::stmt_while::ptr > (YY_MOVE (that.value)); break; - case symbol_kind::S_FIELD: // "field" case symbol_kind::S_PATH: // "path" case symbol_kind::S_IDENTIFIER: // "identifier" case symbol_kind::S_STRING: // "string literal" @@ -611,6 +611,7 @@ namespace xsk { namespace gsc { namespace iw8 { value.move< ast::expr_game::ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_expr_identifier_nosize: // expr_identifier_nosize case symbol_kind::S_expr_identifier: // expr_identifier value.move< ast::expr_identifier::ptr > (YY_MOVE (that.value)); break; @@ -810,7 +811,6 @@ namespace xsk { namespace gsc { namespace iw8 { value.move< ast::stmt_while::ptr > (YY_MOVE (that.value)); break; - case symbol_kind::S_FIELD: // "field" case symbol_kind::S_PATH: // "path" case symbol_kind::S_IDENTIFIER: // "identifier" case symbol_kind::S_STRING: // "string literal" @@ -921,6 +921,7 @@ namespace xsk { namespace gsc { namespace iw8 { value.copy< ast::expr_game::ptr > (that.value); break; + case symbol_kind::S_expr_identifier_nosize: // expr_identifier_nosize case symbol_kind::S_expr_identifier: // expr_identifier value.copy< ast::expr_identifier::ptr > (that.value); break; @@ -1120,7 +1121,6 @@ namespace xsk { namespace gsc { namespace iw8 { value.copy< ast::stmt_while::ptr > (that.value); break; - case symbol_kind::S_FIELD: // "field" case symbol_kind::S_PATH: // "path" case symbol_kind::S_IDENTIFIER: // "identifier" case symbol_kind::S_STRING: // "string literal" @@ -1230,6 +1230,7 @@ namespace xsk { namespace gsc { namespace iw8 { value.move< ast::expr_game::ptr > (that.value); break; + case symbol_kind::S_expr_identifier_nosize: // expr_identifier_nosize case symbol_kind::S_expr_identifier: // expr_identifier value.move< ast::expr_identifier::ptr > (that.value); break; @@ -1429,7 +1430,6 @@ namespace xsk { namespace gsc { namespace iw8 { value.move< ast::stmt_while::ptr > (that.value); break; - case symbol_kind::S_FIELD: // "field" case symbol_kind::S_PATH: // "path" case symbol_kind::S_IDENTIFIER: // "identifier" case symbol_kind::S_STRING: // "string literal" @@ -1794,6 +1794,7 @@ namespace xsk { namespace gsc { namespace iw8 { yylhs.value.emplace< ast::expr_game::ptr > (); break; + case symbol_kind::S_expr_identifier_nosize: // expr_identifier_nosize case symbol_kind::S_expr_identifier: // expr_identifier yylhs.value.emplace< ast::expr_identifier::ptr > (); break; @@ -1993,7 +1994,6 @@ namespace xsk { namespace gsc { namespace iw8 { yylhs.value.emplace< ast::stmt_while::ptr > (); break; - case symbol_kind::S_FIELD: // "field" case symbol_kind::S_PATH: // "path" case symbol_kind::S_IDENTIFIER: // "identifier" case symbol_kind::S_STRING: // "string literal" @@ -2024,1339 +2024,1345 @@ namespace xsk { namespace gsc { namespace iw8 { switch (yyn) { case 2: // root: program -#line 258 "parser.ypp" +#line 259 "parser.ypp" { ast = std::move(yystack_[0].value.as < ast::program::ptr > ()); } #line 2030 "parser.cpp" break; case 3: // root: %empty -#line 259 "parser.ypp" +#line 260 "parser.ypp" { ast = std::make_unique(yylhs.location); } #line 2036 "parser.cpp" break; case 4: // program: program inline -#line 264 "parser.ypp" +#line 265 "parser.ypp" { yylhs.value.as < ast::program::ptr > () = std::move(yystack_[1].value.as < ast::program::ptr > ()); } #line 2042 "parser.cpp" break; case 5: // program: program include -#line 266 "parser.ypp" +#line 267 "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" break; case 6: // program: program declaration -#line 268 "parser.ypp" +#line 269 "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" break; case 7: // program: inline -#line 270 "parser.ypp" +#line 271 "parser.ypp" { yylhs.value.as < ast::program::ptr > () = std::make_unique(yylhs.location); } #line 2060 "parser.cpp" break; case 8: // program: include -#line 272 "parser.ypp" +#line 273 "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" break; case 9: // program: declaration -#line 274 "parser.ypp" +#line 275 "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" break; case 10: // inline: "#inline" expr_path ";" -#line 278 "parser.ypp" +#line 279 "parser.ypp" { lexer.push_header(yystack_[1].value.as < ast::expr_path::ptr > ()->value); } #line 2078 "parser.cpp" break; case 11: // include: "#include" expr_path ";" -#line 283 "parser.ypp" +#line 284 "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" break; case 12: // declaration: "/#" -#line 287 "parser.ypp" +#line 288 "parser.ypp" { yylhs.value.as < ast::decl > ().as_dev_begin = std::make_unique(yylhs.location); } #line 2090 "parser.cpp" break; case 13: // declaration: "#/" -#line 288 "parser.ypp" +#line 289 "parser.ypp" { yylhs.value.as < ast::decl > ().as_dev_end = std::make_unique(yylhs.location); } #line 2096 "parser.cpp" break; case 14: // declaration: decl_usingtree -#line 289 "parser.ypp" +#line 290 "parser.ypp" { yylhs.value.as < ast::decl > ().as_usingtree = std::move(yystack_[0].value.as < ast::decl_usingtree::ptr > ()); } #line 2102 "parser.cpp" break; case 15: // declaration: decl_constant -#line 290 "parser.ypp" +#line 291 "parser.ypp" { yylhs.value.as < ast::decl > ().as_constant = std::move(yystack_[0].value.as < ast::decl_constant::ptr > ()); } #line 2108 "parser.cpp" break; case 16: // declaration: decl_thread -#line 291 "parser.ypp" +#line 292 "parser.ypp" { yylhs.value.as < ast::decl > ().as_thread = std::move(yystack_[0].value.as < ast::decl_thread::ptr > ()); } #line 2114 "parser.cpp" break; case 17: // decl_usingtree: "#using_animtree" "(" expr_string ")" ";" -#line 296 "parser.ypp" +#line 297 "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" break; case 18: // decl_constant: expr_identifier "=" expr ";" -#line 301 "parser.ypp" +#line 302 "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" break; case 19: // decl_thread: expr_identifier "(" expr_parameters ")" stmt_block -#line 306 "parser.ypp" +#line 307 "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" break; case 20: // stmt: stmt_block -#line 310 "parser.ypp" +#line 311 "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_call -#line 311 "parser.ypp" +#line 312 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_call = std::move(yystack_[0].value.as < ast::stmt_call::ptr > ()); } #line 2144 "parser.cpp" break; case 22: // stmt: stmt_assign -#line 312 "parser.ypp" +#line 313 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_assign = std::move(yystack_[0].value.as < ast::stmt_assign::ptr > ()); } #line 2150 "parser.cpp" break; case 23: // stmt: stmt_endon -#line 313 "parser.ypp" +#line 314 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_endon = std::move(yystack_[0].value.as < ast::stmt_endon::ptr > ()); } #line 2156 "parser.cpp" break; case 24: // stmt: stmt_notify -#line 314 "parser.ypp" +#line 315 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_notify = std::move(yystack_[0].value.as < ast::stmt_notify::ptr > ()); } #line 2162 "parser.cpp" break; case 25: // stmt: stmt_wait -#line 315 "parser.ypp" +#line 316 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_wait = std::move(yystack_[0].value.as < ast::stmt_wait::ptr > ()); } #line 2168 "parser.cpp" break; case 26: // stmt: stmt_waittill -#line 316 "parser.ypp" +#line 317 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_waittill = std::move(yystack_[0].value.as < ast::stmt_waittill::ptr > ()); } #line 2174 "parser.cpp" break; case 27: // stmt: stmt_waittillmatch -#line 317 "parser.ypp" +#line 318 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_waittillmatch = std::move(yystack_[0].value.as < ast::stmt_waittillmatch::ptr > ()); } #line 2180 "parser.cpp" break; case 28: // stmt: stmt_waittillframeend -#line 318 "parser.ypp" +#line 319 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_waittillframeend = std::move(yystack_[0].value.as < ast::stmt_waittillframeend::ptr > ()); } #line 2186 "parser.cpp" break; case 29: // stmt: stmt_waitframe -#line 319 "parser.ypp" +#line 320 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_waitframe = std::move(yystack_[0].value.as < ast::stmt_waitframe::ptr > ()); } #line 2192 "parser.cpp" break; case 30: // stmt: stmt_if -#line 320 "parser.ypp" +#line 321 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_if = std::move(yystack_[0].value.as < ast::stmt_if::ptr > ()); } #line 2198 "parser.cpp" break; case 31: // stmt: stmt_ifelse -#line 321 "parser.ypp" +#line 322 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_ifelse = std::move(yystack_[0].value.as < ast::stmt_ifelse::ptr > ()); } #line 2204 "parser.cpp" break; case 32: // stmt: stmt_while -#line 322 "parser.ypp" +#line 323 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_while = std::move(yystack_[0].value.as < ast::stmt_while::ptr > ()); } #line 2210 "parser.cpp" break; case 33: // stmt: stmt_dowhile -#line 323 "parser.ypp" +#line 324 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_dowhile = std::move(yystack_[0].value.as < ast::stmt_dowhile::ptr > ()); } #line 2216 "parser.cpp" break; case 34: // stmt: stmt_for -#line 324 "parser.ypp" +#line 325 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_for = std::move(yystack_[0].value.as < ast::stmt_for::ptr > ()); } #line 2222 "parser.cpp" break; case 35: // stmt: stmt_foreach -#line 325 "parser.ypp" +#line 326 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_foreach = std::move(yystack_[0].value.as < ast::stmt_foreach::ptr > ()); } #line 2228 "parser.cpp" break; case 36: // stmt: stmt_switch -#line 326 "parser.ypp" +#line 327 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_switch = std::move(yystack_[0].value.as < ast::stmt_switch::ptr > ()); } #line 2234 "parser.cpp" break; case 37: // stmt: stmt_case -#line 327 "parser.ypp" +#line 328 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_case = std::move(yystack_[0].value.as < ast::stmt_case::ptr > ()); } #line 2240 "parser.cpp" break; case 38: // stmt: stmt_default -#line 328 "parser.ypp" +#line 329 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_default = std::move(yystack_[0].value.as < ast::stmt_default::ptr > ()); } #line 2246 "parser.cpp" break; case 39: // stmt: stmt_break -#line 329 "parser.ypp" +#line 330 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_break = std::move(yystack_[0].value.as < ast::stmt_break::ptr > ()); } #line 2252 "parser.cpp" break; case 40: // stmt: stmt_continue -#line 330 "parser.ypp" +#line 331 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_continue = std::move(yystack_[0].value.as < ast::stmt_continue::ptr > ()); } #line 2258 "parser.cpp" break; case 41: // stmt: stmt_return -#line 331 "parser.ypp" +#line 332 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_return = std::move(yystack_[0].value.as < ast::stmt_return::ptr > ()); } #line 2264 "parser.cpp" break; case 42: // stmt: stmt_breakpoint -#line 332 "parser.ypp" +#line 333 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_breakpoint = std::move(yystack_[0].value.as < ast::stmt_breakpoint::ptr > ()); } #line 2270 "parser.cpp" break; case 43: // stmt: stmt_prof_begin -#line 333 "parser.ypp" +#line 334 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_prof_begin = std::move(yystack_[0].value.as < ast::stmt_prof_begin::ptr > ()); } #line 2276 "parser.cpp" break; case 44: // stmt: stmt_prof_end -#line 334 "parser.ypp" +#line 335 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_prof_end = std::move(yystack_[0].value.as < ast::stmt_prof_end::ptr > ()); } #line 2282 "parser.cpp" break; case 45: // stmt_or_dev: stmt -#line 338 "parser.ypp" +#line 339 "parser.ypp" { yylhs.value.as < ast::stmt > () = std::move(yystack_[0].value.as < ast::stmt > ()); } #line 2288 "parser.cpp" break; case 46: // stmt_or_dev: stmt_dev -#line 339 "parser.ypp" +#line 340 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_dev = std::move(yystack_[0].value.as < ast::stmt_dev::ptr > ()); } #line 2294 "parser.cpp" break; case 47: // stmt_list: stmt_list stmt -#line 344 "parser.ypp" +#line 345 "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 2300 "parser.cpp" break; case 48: // stmt_list: stmt -#line 346 "parser.ypp" +#line 347 "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 2306 "parser.cpp" break; case 49: // stmt_or_dev_list: stmt_or_dev_list stmt_or_dev -#line 351 "parser.ypp" +#line 352 "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 2312 "parser.cpp" break; case 50: // stmt_or_dev_list: stmt_or_dev -#line 353 "parser.ypp" +#line 354 "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 2318 "parser.cpp" break; case 51: // stmt_dev: "/#" stmt_list "#/" -#line 357 "parser.ypp" +#line 358 "parser.ypp" { yylhs.value.as < ast::stmt_dev::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::stmt_list::ptr > ())); } #line 2324 "parser.cpp" break; case 52: // stmt_dev: "/#" "#/" -#line 358 "parser.ypp" +#line 359 "parser.ypp" { yylhs.value.as < ast::stmt_dev::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } #line 2330 "parser.cpp" break; case 53: // stmt_block: "{" stmt_or_dev_list "}" -#line 362 "parser.ypp" +#line 363 "parser.ypp" { yylhs.value.as < ast::stmt_list::ptr > () = std::move(yystack_[1].value.as < ast::stmt_list::ptr > ()); } #line 2336 "parser.cpp" break; case 54: // stmt_block: "{" "}" -#line 363 "parser.ypp" +#line 364 "parser.ypp" { yylhs.value.as < ast::stmt_list::ptr > () = std::make_unique(yylhs.location); } #line 2342 "parser.cpp" break; case 55: // stmt_expr: expr_assign -#line 368 "parser.ypp" +#line 369 "parser.ypp" { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } #line 2348 "parser.cpp" break; case 56: // stmt_expr: expr_increment -#line 370 "parser.ypp" +#line 371 "parser.ypp" { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } #line 2354 "parser.cpp" break; case 57: // stmt_expr: expr_decrement -#line 372 "parser.ypp" +#line 373 "parser.ypp" { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } #line 2360 "parser.cpp" break; case 58: // stmt_expr: %empty -#line 374 "parser.ypp" +#line 375 "parser.ypp" { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } #line 2366 "parser.cpp" break; case 59: // stmt_call: expr_call ";" -#line 379 "parser.ypp" +#line 380 "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 2372 "parser.cpp" break; case 60: // stmt_call: expr_method ";" -#line 381 "parser.ypp" +#line 382 "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 2378 "parser.cpp" break; case 61: // stmt_assign: expr_assign ";" -#line 386 "parser.ypp" +#line 387 "parser.ypp" { yylhs.value.as < ast::stmt_assign::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } #line 2384 "parser.cpp" break; case 62: // stmt_assign: expr_increment ";" -#line 388 "parser.ypp" +#line 389 "parser.ypp" { yylhs.value.as < ast::stmt_assign::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } #line 2390 "parser.cpp" break; case 63: // stmt_assign: expr_decrement ";" -#line 390 "parser.ypp" +#line 391 "parser.ypp" { yylhs.value.as < ast::stmt_assign::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } #line 2396 "parser.cpp" break; case 64: // stmt_endon: expr_object "endon" "(" expr ")" ";" -#line 395 "parser.ypp" +#line 396 "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 2402 "parser.cpp" break; case 65: // stmt_notify: expr_object "notify" "(" expr "," expr_arguments_no_empty ")" ";" -#line 400 "parser.ypp" +#line 401 "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 2408 "parser.cpp" break; case 66: // stmt_notify: expr_object "notify" "(" expr ")" ";" -#line 402 "parser.ypp" +#line 403 "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 2414 "parser.cpp" break; case 67: // stmt_wait: "wait" expr ";" -#line 407 "parser.ypp" +#line 408 "parser.ypp" { yylhs.value.as < ast::stmt_wait::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } #line 2420 "parser.cpp" break; case 68: // stmt_waittill: expr_object "waittill" "(" expr "," expr_arguments_no_empty ")" ";" -#line 412 "parser.ypp" +#line 413 "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 2426 "parser.cpp" break; case 69: // stmt_waittill: expr_object "waittill" "(" expr ")" ";" -#line 414 "parser.ypp" +#line 415 "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 2432 "parser.cpp" break; case 70: // stmt_waittillmatch: expr_object "waittillmatch" "(" expr "," expr_arguments_no_empty ")" ";" -#line 419 "parser.ypp" +#line 420 "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 2438 "parser.cpp" break; case 71: // stmt_waittillmatch: expr_object "waittillmatch" "(" expr ")" ";" -#line 421 "parser.ypp" +#line 422 "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 2444 "parser.cpp" break; case 72: // stmt_waittillframeend: "waittillframeend" ";" -#line 426 "parser.ypp" +#line 427 "parser.ypp" { yylhs.value.as < ast::stmt_waittillframeend::ptr > () = std::make_unique(yylhs.location); } #line 2450 "parser.cpp" break; case 73: // stmt_waitframe: "waitframe" ";" -#line 431 "parser.ypp" +#line 432 "parser.ypp" { yylhs.value.as < ast::stmt_waitframe::ptr > () = std::make_unique(yylhs.location); } #line 2456 "parser.cpp" break; case 74: // stmt_waitframe: "waitframe" "(" ")" ";" -#line 433 "parser.ypp" +#line 434 "parser.ypp" { yylhs.value.as < ast::stmt_waitframe::ptr > () = std::make_unique(yylhs.location); } #line 2462 "parser.cpp" break; case 75: // stmt_if: "if" "(" expr ")" stmt -#line 438 "parser.ypp" +#line 439 "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 2468 "parser.cpp" break; case 76: // stmt_ifelse: "if" "(" expr ")" stmt "else" stmt -#line 443 "parser.ypp" +#line 444 "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 2474 "parser.cpp" break; case 77: // stmt_while: "while" "(" expr ")" stmt -#line 448 "parser.ypp" +#line 449 "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 2480 "parser.cpp" break; case 78: // stmt_dowhile: "do" stmt "while" "(" expr ")" ";" -#line 453 "parser.ypp" +#line 454 "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 2486 "parser.cpp" break; case 79: // stmt_for: "for" "(" stmt_expr ";" expr_or_empty ";" stmt_expr ")" stmt -#line 458 "parser.ypp" +#line 459 "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 2492 "parser.cpp" break; case 80: // stmt_foreach: "foreach" "(" expr_identifier "in" expr ")" stmt -#line 463 "parser.ypp" +#line 464 "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 2498 "parser.cpp" break; case 81: // stmt_foreach: "foreach" "(" expr_identifier "," expr_identifier "in" expr ")" stmt -#line 465 "parser.ypp" +#line 466 "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 2504 "parser.cpp" break; case 82: // stmt_switch: "switch" "(" expr ")" stmt_block -#line 470 "parser.ypp" +#line 471 "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 2510 "parser.cpp" break; case 83: // stmt_case: "case" expr_integer ":" -#line 475 "parser.ypp" +#line 476 "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 2516 "parser.cpp" break; case 84: // stmt_case: "case" expr_string ":" -#line 477 "parser.ypp" +#line 478 "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 2522 "parser.cpp" break; case 85: // stmt_default: "default" ":" -#line 482 "parser.ypp" +#line 483 "parser.ypp" { yylhs.value.as < ast::stmt_default::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } #line 2528 "parser.cpp" break; case 86: // stmt_break: "break" ";" -#line 487 "parser.ypp" +#line 488 "parser.ypp" { yylhs.value.as < ast::stmt_break::ptr > () = std::make_unique(yylhs.location); } #line 2534 "parser.cpp" break; case 87: // stmt_continue: "continue" ";" -#line 492 "parser.ypp" +#line 493 "parser.ypp" { yylhs.value.as < ast::stmt_continue::ptr > () = std::make_unique(yylhs.location); } #line 2540 "parser.cpp" break; case 88: // stmt_return: "return" expr ";" -#line 497 "parser.ypp" +#line 498 "parser.ypp" { yylhs.value.as < ast::stmt_return::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } #line 2546 "parser.cpp" break; case 89: // stmt_return: "return" ";" -#line 499 "parser.ypp" +#line 500 "parser.ypp" { yylhs.value.as < ast::stmt_return::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } #line 2552 "parser.cpp" break; case 90: // stmt_breakpoint: "breakpoint" ";" -#line 504 "parser.ypp" +#line 505 "parser.ypp" { yylhs.value.as < ast::stmt_breakpoint::ptr > () = std::make_unique(yylhs.location); } #line 2558 "parser.cpp" break; case 91: // stmt_prof_begin: "prof_begin" "(" expr_arguments ")" ";" -#line 509 "parser.ypp" +#line 510 "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 2564 "parser.cpp" break; case 92: // stmt_prof_end: "prof_end" "(" expr_arguments ")" ";" -#line 514 "parser.ypp" +#line 515 "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 2570 "parser.cpp" break; case 93: // expr: expr_ternary -#line 518 "parser.ypp" +#line 519 "parser.ypp" { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } #line 2576 "parser.cpp" break; case 94: // expr: expr_binary -#line 519 "parser.ypp" +#line 520 "parser.ypp" { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } #line 2582 "parser.cpp" break; case 95: // expr: expr_primitive -#line 520 "parser.ypp" +#line 521 "parser.ypp" { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } #line 2588 "parser.cpp" break; case 96: // expr_or_empty: expr -#line 524 "parser.ypp" +#line 525 "parser.ypp" { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } #line 2594 "parser.cpp" break; case 97: // expr_or_empty: %empty -#line 525 "parser.ypp" +#line 526 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location); } #line 2600 "parser.cpp" break; case 98: // expr_assign: expr_object "=" expr -#line 530 "parser.ypp" +#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 2606 "parser.cpp" break; case 99: // expr_assign: expr_object "|=" expr -#line 532 "parser.ypp" +#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 2612 "parser.cpp" break; case 100: // expr_assign: expr_object "&=" expr -#line 534 "parser.ypp" +#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 2618 "parser.cpp" break; case 101: // expr_assign: expr_object "^=" expr -#line 536 "parser.ypp" +#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 2624 "parser.cpp" break; case 102: // expr_assign: expr_object "<<=" expr -#line 538 "parser.ypp" +#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 2630 "parser.cpp" break; case 103: // expr_assign: expr_object ">>=" expr -#line 540 "parser.ypp" +#line 541 "parser.ypp" { yylhs.value.as < ast::expr > ().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 542 "parser.ypp" +#line 543 "parser.ypp" { yylhs.value.as < ast::expr > ().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 544 "parser.ypp" +#line 545 "parser.ypp" { yylhs.value.as < ast::expr > ().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_assign: expr_object "*=" expr -#line 546 "parser.ypp" +#line 547 "parser.ypp" { yylhs.value.as < ast::expr > ().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" break; case 107: // expr_assign: expr_object "/=" expr -#line 548 "parser.ypp" +#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 2660 "parser.cpp" break; case 108: // expr_assign: expr_object "%=" expr -#line 550 "parser.ypp" +#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 2666 "parser.cpp" break; case 109: // expr_increment: "++" expr_object -#line 555 "parser.ypp" +#line 556 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ()), true); } #line 2672 "parser.cpp" break; case 110: // expr_increment: expr_object "++" -#line 557 "parser.ypp" +#line 558 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ()), false); } #line 2678 "parser.cpp" break; case 111: // expr_decrement: "--" expr_object -#line 562 "parser.ypp" +#line 563 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ()), true); } #line 2684 "parser.cpp" break; case 112: // expr_decrement: expr_object "--" -#line 564 "parser.ypp" +#line 565 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ()), false); } #line 2690 "parser.cpp" break; case 113: // expr_ternary: expr "?" expr ":" expr -#line 569 "parser.ypp" +#line 570 "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 2696 "parser.cpp" break; case 114: // expr_binary: expr "||" expr -#line 574 "parser.ypp" +#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 2702 "parser.cpp" break; case 115: // expr_binary: expr "&&" expr -#line 576 "parser.ypp" +#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 2708 "parser.cpp" break; case 116: // expr_binary: expr "==" expr -#line 578 "parser.ypp" +#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 2714 "parser.cpp" break; case 117: // expr_binary: expr "!=" expr -#line 580 "parser.ypp" +#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 2720 "parser.cpp" break; case 118: // expr_binary: expr "<=" expr -#line 582 "parser.ypp" +#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 2726 "parser.cpp" break; case 119: // expr_binary: expr ">=" expr -#line 584 "parser.ypp" +#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 2732 "parser.cpp" break; case 120: // expr_binary: expr "<" expr -#line 586 "parser.ypp" +#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 2738 "parser.cpp" break; case 121: // expr_binary: expr ">" expr -#line 588 "parser.ypp" +#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 2744 "parser.cpp" break; case 122: // expr_binary: expr "|" expr -#line 590 "parser.ypp" +#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 2750 "parser.cpp" break; case 123: // expr_binary: expr "&" expr -#line 592 "parser.ypp" +#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 2756 "parser.cpp" break; case 124: // expr_binary: expr "^" expr -#line 594 "parser.ypp" +#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 2762 "parser.cpp" break; case 125: // expr_binary: expr "<<" expr -#line 596 "parser.ypp" +#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 2768 "parser.cpp" break; case 126: // expr_binary: expr ">>" expr -#line 598 "parser.ypp" +#line 599 "parser.ypp" { yylhs.value.as < ast::expr > ().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 600 "parser.ypp" +#line 601 "parser.ypp" { yylhs.value.as < ast::expr > ().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 602 "parser.ypp" +#line 603 "parser.ypp" { yylhs.value.as < ast::expr > ().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_binary: expr "*" expr -#line 604 "parser.ypp" +#line 605 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } #line 2792 "parser.cpp" break; case 130: // expr_binary: expr "/" expr -#line 606 "parser.ypp" +#line 607 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } #line 2798 "parser.cpp" break; case 131: // expr_binary: expr "%" expr -#line 608 "parser.ypp" +#line 609 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } #line 2804 "parser.cpp" break; case 132: // expr_primitive: expr_complement -#line 612 "parser.ypp" +#line 613 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_complement::ptr > ()); } #line 2810 "parser.cpp" break; case 133: // expr_primitive: expr_not -#line 613 "parser.ypp" +#line 614 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_not::ptr > ()); } #line 2816 "parser.cpp" break; case 134: // expr_primitive: expr_call -#line 614 "parser.ypp" +#line 615 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_call::ptr > ()); } #line 2822 "parser.cpp" break; case 135: // expr_primitive: expr_method -#line 615 "parser.ypp" +#line 616 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_method::ptr > ()); } #line 2828 "parser.cpp" break; case 136: // expr_primitive: expr_add_array -#line 616 "parser.ypp" +#line 617 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_add_array::ptr > ()); } #line 2834 "parser.cpp" break; case 137: // expr_primitive: expr_isdefined -#line 617 "parser.ypp" +#line 618 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_isdefined::ptr > ()); } #line 2840 "parser.cpp" break; case 138: // expr_primitive: expr_istrue -#line 618 "parser.ypp" +#line 619 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_istrue::ptr > ()); } #line 2846 "parser.cpp" break; case 139: // expr_primitive: expr_reference -#line 619 "parser.ypp" +#line 620 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_reference::ptr > ()); } #line 2852 "parser.cpp" break; case 140: // expr_primitive: expr_array -#line 620 "parser.ypp" +#line 621 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_array::ptr > ()); } #line 2858 "parser.cpp" break; case 141: // expr_primitive: expr_field -#line 621 "parser.ypp" +#line 622 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_field::ptr > ()); } #line 2864 "parser.cpp" break; case 142: // expr_primitive: expr_size -#line 622 "parser.ypp" +#line 623 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_size::ptr > ()); } #line 2870 "parser.cpp" break; case 143: // expr_primitive: expr_paren -#line 623 "parser.ypp" +#line 624 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_paren::ptr > ()); } #line 2876 "parser.cpp" break; case 144: // expr_primitive: expr_thisthread -#line 624 "parser.ypp" +#line 625 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_thisthread::ptr > ()); } #line 2882 "parser.cpp" break; case 145: // expr_primitive: expr_empty_array -#line 625 "parser.ypp" +#line 626 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_empty_array::ptr > ()); } #line 2888 "parser.cpp" break; case 146: // expr_primitive: expr_undefined -#line 626 "parser.ypp" +#line 627 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_undefined::ptr > ()); } #line 2894 "parser.cpp" break; case 147: // expr_primitive: expr_game -#line 627 "parser.ypp" +#line 628 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_game::ptr > ()); } #line 2900 "parser.cpp" break; case 148: // expr_primitive: expr_self -#line 628 "parser.ypp" +#line 629 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_self::ptr > ()); } #line 2906 "parser.cpp" break; case 149: // expr_primitive: expr_anim -#line 629 "parser.ypp" +#line 630 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_anim::ptr > ()); } #line 2912 "parser.cpp" break; case 150: // expr_primitive: expr_level -#line 630 "parser.ypp" +#line 631 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_level::ptr > ()); } #line 2918 "parser.cpp" break; case 151: // expr_primitive: expr_animation -#line 631 "parser.ypp" +#line 632 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_animation::ptr > ()); } #line 2924 "parser.cpp" break; case 152: // expr_primitive: expr_animtree -#line 632 "parser.ypp" +#line 633 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_animtree::ptr > ()); } #line 2930 "parser.cpp" break; case 153: // expr_primitive: expr_identifier -#line 633 "parser.ypp" +#line 634 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ()); } #line 2936 "parser.cpp" break; case 154: // expr_primitive: expr_istring -#line 634 "parser.ypp" +#line 635 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_istring::ptr > ()); } #line 2942 "parser.cpp" break; case 155: // expr_primitive: expr_string -#line 635 "parser.ypp" +#line 636 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_string::ptr > ()); } #line 2948 "parser.cpp" break; case 156: // expr_primitive: expr_vector -#line 636 "parser.ypp" +#line 637 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_vector::ptr > ()); } #line 2954 "parser.cpp" break; case 157: // expr_primitive: expr_float -#line 637 "parser.ypp" +#line 638 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_float::ptr > ()); } #line 2960 "parser.cpp" break; case 158: // expr_primitive: expr_integer -#line 638 "parser.ypp" +#line 639 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_integer::ptr > ()); } #line 2966 "parser.cpp" break; case 159: // expr_primitive: expr_false -#line 639 "parser.ypp" +#line 640 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_false::ptr > ()); } #line 2972 "parser.cpp" break; case 160: // expr_primitive: expr_true -#line 640 "parser.ypp" +#line 641 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_true::ptr > ()); } #line 2978 "parser.cpp" break; case 161: // expr_complement: "~" expr -#line 645 "parser.ypp" +#line 646 "parser.ypp" { yylhs.value.as < ast::expr_complement::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } #line 2984 "parser.cpp" break; case 162: // expr_not: "!" expr -#line 650 "parser.ypp" +#line 651 "parser.ypp" { yylhs.value.as < ast::expr_not::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } #line 2990 "parser.cpp" break; case 163: // expr_call: expr_function -#line 654 "parser.ypp" +#line 655 "parser.ypp" { yylhs.value.as < ast::expr_call::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::call > ())); } #line 2996 "parser.cpp" break; case 164: // expr_call: expr_pointer -#line 655 "parser.ypp" +#line 656 "parser.ypp" { yylhs.value.as < ast::expr_call::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::call > ())); } #line 3002 "parser.cpp" break; case 165: // expr_method: expr_object expr_function -#line 658 "parser.ypp" +#line 659 "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 3008 "parser.cpp" break; case 166: // expr_method: expr_object expr_pointer -#line 659 "parser.ypp" +#line 660 "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 3014 "parser.cpp" break; case 167: // expr_function: expr_identifier "(" expr_arguments ")" -#line 664 "parser.ypp" +#line 665 "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 3020 "parser.cpp" break; case 168: // expr_function: expr_path "::" expr_identifier "(" expr_arguments ")" -#line 666 "parser.ypp" +#line 667 "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 3026 "parser.cpp" break; case 169: // expr_function: "thread" expr_identifier "(" expr_arguments ")" -#line 668 "parser.ypp" +#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::thread); } #line 3032 "parser.cpp" break; case 170: // expr_function: "thread" expr_path "::" expr_identifier "(" expr_arguments ")" -#line 670 "parser.ypp" +#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::thread); } #line 3038 "parser.cpp" break; case 171: // expr_function: "childthread" expr_identifier "(" expr_arguments ")" -#line 672 "parser.ypp" +#line 673 "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 3044 "parser.cpp" break; case 172: // expr_function: "childthread" expr_path "::" expr_identifier "(" expr_arguments ")" -#line 674 "parser.ypp" +#line 675 "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 3050 "parser.cpp" break; case 173: // expr_pointer: "[" "[" expr "]" "]" "(" expr_arguments ")" -#line 679 "parser.ypp" +#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::normal); } #line 3056 "parser.cpp" break; case 174: // expr_pointer: "thread" "[" "[" expr "]" "]" "(" expr_arguments ")" -#line 681 "parser.ypp" +#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::thread); } #line 3062 "parser.cpp" break; case 175: // expr_pointer: "childthread" "[" "[" expr "]" "]" "(" expr_arguments ")" -#line 683 "parser.ypp" +#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::childthread); } #line 3068 "parser.cpp" break; case 176: // expr_pointer: "call" "[" "[" expr "]" "]" "(" expr_arguments ")" -#line 685 "parser.ypp" +#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::builtin); } #line 3074 "parser.cpp" break; case 177: // expr_add_array: "[" expr_arguments_no_empty "]" -#line 690 "parser.ypp" +#line 691 "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 3080 "parser.cpp" break; case 178: // expr_parameters: expr_parameters "," expr_identifier -#line 695 "parser.ypp" +#line 696 "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 3086 "parser.cpp" break; case 179: // expr_parameters: expr_identifier -#line 697 "parser.ypp" +#line 698 "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 3092 "parser.cpp" break; case 180: // expr_parameters: %empty -#line 699 "parser.ypp" +#line 700 "parser.ypp" { yylhs.value.as < ast::expr_parameters::ptr > () = std::make_unique(yylhs.location); } #line 3098 "parser.cpp" break; case 181: // expr_arguments: expr_arguments_no_empty -#line 704 "parser.ypp" +#line 705 "parser.ypp" { yylhs.value.as < ast::expr_arguments::ptr > () = std::move(yystack_[0].value.as < ast::expr_arguments::ptr > ()); } #line 3104 "parser.cpp" break; case 182: // expr_arguments: %empty -#line 706 "parser.ypp" +#line 707 "parser.ypp" { yylhs.value.as < ast::expr_arguments::ptr > () = std::make_unique(yylhs.location); } #line 3110 "parser.cpp" break; case 183: // expr_arguments_no_empty: expr_arguments "," expr -#line 711 "parser.ypp" +#line 712 "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 3116 "parser.cpp" break; case 184: // expr_arguments_no_empty: expr -#line 713 "parser.ypp" +#line 714 "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 3122 "parser.cpp" break; case 185: // expr_isdefined: "isdefined" "(" expr ")" -#line 718 "parser.ypp" +#line 719 "parser.ypp" { yylhs.value.as < ast::expr_isdefined::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } #line 3128 "parser.cpp" break; case 186: // expr_istrue: "istrue" "(" expr ")" -#line 723 "parser.ypp" +#line 724 "parser.ypp" { yylhs.value.as < ast::expr_istrue::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } #line 3134 "parser.cpp" break; case 187: // expr_reference: "::" expr_identifier -#line 728 "parser.ypp" +#line 729 "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 3140 "parser.cpp" break; case 188: // expr_reference: expr_path "::" expr_identifier -#line 730 "parser.ypp" +#line 731 "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 3146 "parser.cpp" break; case 189: // expr_array: expr_object "[" expr "]" -#line 735 "parser.ypp" +#line 736 "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 3152 "parser.cpp" break; - case 190: // expr_field: expr_object "." expr_identifier -#line 740 "parser.ypp" + case 190: // expr_field: expr_object "." expr_identifier_nosize +#line 741 "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 3158 "parser.cpp" break; - case 191: // expr_field: expr_object "field" -#line 742 "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 > ())); } + case 191: // expr_size: expr_object "." "size" +#line 746 "parser.ypp" + { yylhs.value.as < ast::expr_size::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ())); } #line 3164 "parser.cpp" break; - case 192: // expr_size: expr_object ".size" -#line 747 "parser.ypp" - { yylhs.value.as < ast::expr_size::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } + case 192: // expr_paren: "(" expr ")" +#line 751 "parser.ypp" + { yylhs.value.as < ast::expr_paren::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } #line 3170 "parser.cpp" break; - case 193: // expr_paren: "(" expr ")" -#line 752 "parser.ypp" - { yylhs.value.as < ast::expr_paren::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } + case 193: // expr_object: expr_call +#line 755 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_call::ptr > ()); } #line 3176 "parser.cpp" break; - case 194: // expr_object: expr_call + case 194: // expr_object: expr_method #line 756 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_call::ptr > ()); } + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_method::ptr > ()); } #line 3182 "parser.cpp" break; - case 195: // expr_object: expr_method + case 195: // expr_object: expr_array #line 757 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_method::ptr > ()); } + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_array::ptr > ()); } #line 3188 "parser.cpp" break; - case 196: // expr_object: expr_array + case 196: // expr_object: expr_field #line 758 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_array::ptr > ()); } + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_field::ptr > ()); } #line 3194 "parser.cpp" break; - case 197: // expr_object: expr_field + case 197: // expr_object: expr_game #line 759 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_field::ptr > ()); } + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_game::ptr > ()); } #line 3200 "parser.cpp" break; - case 198: // expr_object: expr_game + case 198: // expr_object: expr_self #line 760 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_game::ptr > ()); } + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_self::ptr > ()); } #line 3206 "parser.cpp" break; - case 199: // expr_object: expr_self + case 199: // expr_object: expr_anim #line 761 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_self::ptr > ()); } + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_anim::ptr > ()); } #line 3212 "parser.cpp" break; - case 200: // expr_object: expr_anim + case 200: // expr_object: expr_level #line 762 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_anim::ptr > ()); } + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_level::ptr > ()); } #line 3218 "parser.cpp" break; - case 201: // expr_object: expr_level + case 201: // expr_object: expr_identifier #line 763 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_level::ptr > ()); } + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ()); } #line 3224 "parser.cpp" break; - case 202: // expr_object: expr_identifier -#line 764 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ()); } + case 202: // expr_thisthread: "thisthread" +#line 768 "parser.ypp" + { yylhs.value.as < ast::expr_thisthread::ptr > () = std::make_unique(yylhs.location); } #line 3230 "parser.cpp" break; - case 203: // expr_thisthread: "thisthread" -#line 769 "parser.ypp" - { yylhs.value.as < ast::expr_thisthread::ptr > () = std::make_unique(yylhs.location); } + case 203: // expr_empty_array: "[" "]" +#line 773 "parser.ypp" + { yylhs.value.as < ast::expr_empty_array::ptr > () = std::make_unique(yylhs.location); } #line 3236 "parser.cpp" break; - case 204: // expr_empty_array: "[" "]" -#line 774 "parser.ypp" - { yylhs.value.as < ast::expr_empty_array::ptr > () = std::make_unique(yylhs.location); } + case 204: // expr_undefined: "undefined" +#line 778 "parser.ypp" + { yylhs.value.as < ast::expr_undefined::ptr > () = std::make_unique(yylhs.location); } #line 3242 "parser.cpp" break; - case 205: // expr_undefined: "undefined" -#line 779 "parser.ypp" - { yylhs.value.as < ast::expr_undefined::ptr > () = std::make_unique(yylhs.location); } + case 205: // expr_game: "game" +#line 783 "parser.ypp" + { yylhs.value.as < ast::expr_game::ptr > () = std::make_unique(yylhs.location); } #line 3248 "parser.cpp" break; - case 206: // expr_game: "game" -#line 784 "parser.ypp" - { yylhs.value.as < ast::expr_game::ptr > () = std::make_unique(yylhs.location); } + case 206: // expr_self: "self" +#line 788 "parser.ypp" + { yylhs.value.as < ast::expr_self::ptr > () = std::make_unique(yylhs.location); } #line 3254 "parser.cpp" break; - case 207: // expr_self: "self" -#line 789 "parser.ypp" - { yylhs.value.as < ast::expr_self::ptr > () = std::make_unique(yylhs.location); } + case 207: // expr_anim: "anim" +#line 793 "parser.ypp" + { yylhs.value.as < ast::expr_anim::ptr > () = std::make_unique(yylhs.location); } #line 3260 "parser.cpp" break; - case 208: // expr_anim: "anim" -#line 794 "parser.ypp" - { yylhs.value.as < ast::expr_anim::ptr > () = std::make_unique(yylhs.location); } + case 208: // expr_level: "level" +#line 798 "parser.ypp" + { yylhs.value.as < ast::expr_level::ptr > () = std::make_unique(yylhs.location); } #line 3266 "parser.cpp" break; - case 209: // expr_level: "level" -#line 799 "parser.ypp" - { yylhs.value.as < ast::expr_level::ptr > () = std::make_unique(yylhs.location); } + case 209: // expr_animation: "%" "identifier" +#line 803 "parser.ypp" + { yylhs.value.as < ast::expr_animation::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 3272 "parser.cpp" break; - case 210: // expr_animation: "%" "identifier" -#line 804 "parser.ypp" - { yylhs.value.as < ast::expr_animation::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 210: // expr_animtree: "#animtree" +#line 808 "parser.ypp" + { yylhs.value.as < ast::expr_animtree::ptr > () = std::make_unique(yylhs.location); } #line 3278 "parser.cpp" break; - case 211: // expr_animtree: "#animtree" -#line 809 "parser.ypp" - { yylhs.value.as < ast::expr_animtree::ptr > () = std::make_unique(yylhs.location); } + case 211: // expr_identifier_nosize: "identifier" +#line 813 "parser.ypp" + { yylhs.value.as < ast::expr_identifier::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 3284 "parser.cpp" break; case 212: // expr_identifier: "identifier" -#line 814 "parser.ypp" +#line 818 "parser.ypp" { yylhs.value.as < ast::expr_identifier::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 3290 "parser.cpp" break; - case 213: // expr_path: "path" -#line 819 "parser.ypp" - { yylhs.value.as < ast::expr_path::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 213: // expr_identifier: "size" +#line 820 "parser.ypp" + { yylhs.value.as < ast::expr_identifier::ptr > () = std::make_unique(yylhs.location, "size"); } #line 3296 "parser.cpp" break; - case 214: // expr_path: expr_identifier -#line 821 "parser.ypp" - { yylhs.value.as < ast::expr_path::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < ast::expr_identifier::ptr > ()->value); } + case 214: // expr_path: "identifier" +#line 825 "parser.ypp" + { yylhs.value.as < ast::expr_path::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 3302 "parser.cpp" break; - case 215: // expr_istring: "localized string" -#line 826 "parser.ypp" - { yylhs.value.as < ast::expr_istring::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 215: // expr_path: "path" +#line 827 "parser.ypp" + { yylhs.value.as < ast::expr_path::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 3308 "parser.cpp" break; - case 216: // expr_string: "string literal" -#line 831 "parser.ypp" - { yylhs.value.as < ast::expr_string::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 216: // expr_istring: "localized string" +#line 832 "parser.ypp" + { yylhs.value.as < ast::expr_istring::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 3314 "parser.cpp" break; - case 217: // expr_vector: "(" expr "," expr "," expr ")" -#line 836 "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 > ())); } + case 217: // expr_string: "string literal" +#line 837 "parser.ypp" + { yylhs.value.as < ast::expr_string::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 3320 "parser.cpp" break; - case 218: // expr_float: "-" "float" -#line 841 "parser.ypp" - { yylhs.value.as < ast::expr_float::ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } + case 218: // expr_vector: "(" expr "," expr "," expr ")" +#line 842 "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 3326 "parser.cpp" break; - case 219: // expr_float: "float" -#line 843 "parser.ypp" - { yylhs.value.as < ast::expr_float::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 219: // expr_float: "-" "float" +#line 847 "parser.ypp" + { yylhs.value.as < ast::expr_float::ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } #line 3332 "parser.cpp" break; - case 220: // expr_integer: "-" "integer" -#line 848 "parser.ypp" - { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } + 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 3338 "parser.cpp" break; - case 221: // expr_integer: "integer" -#line 850 "parser.ypp" - { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 221: // expr_integer: "-" "integer" +#line 854 "parser.ypp" + { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } #line 3344 "parser.cpp" break; - case 222: // expr_false: "false" -#line 855 "parser.ypp" - { yylhs.value.as < ast::expr_false::ptr > () = std::make_unique(yylhs.location); } + 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 3350 "parser.cpp" break; - case 223: // expr_true: "true" -#line 860 "parser.ypp" - { yylhs.value.as < ast::expr_true::ptr > () = std::make_unique(yylhs.location); } + case 223: // expr_false: "false" +#line 861 "parser.ypp" + { yylhs.value.as < ast::expr_false::ptr > () = std::make_unique(yylhs.location); } #line 3356 "parser.cpp" break; + case 224: // expr_true: "true" +#line 866 "parser.ypp" + { yylhs.value.as < ast::expr_true::ptr > () = std::make_unique(yylhs.location); } +#line 3362 "parser.cpp" + break; -#line 3360 "parser.cpp" + +#line 3366 "parser.cpp" default: break; @@ -3547,32 +3553,33 @@ namespace xsk { namespace gsc { namespace iw8 { "else", "do", "while", "for", "foreach", "in", "switch", "case", "default", "break", "continue", "return", "breakpoint", "prof_begin", "prof_end", "thread", "childthread", "thisthread", "call", "true", - "false", "undefined", ".size", "game", "self", "anim", "level", + "false", "undefined", "size", "game", "self", "anim", "level", "isdefined", "istrue", "(", ")", "{", "}", "[", "]", ",", ".", "::", ":", ";", "?", "++", "--", "<<", ">>", "||", "&&", "==", "!=", "<=", ">=", "<", ">", "!", "~", "=", "+=", "-=", "*=", "/=", "%=", "|=", "&=", "^=", - ">>=", "<<=", "|", "&", "^", "+", "-", "*", "/", "%", "field", "path", + ">>=", "<<=", "|", "&", "^", "+", "-", "*", "/", "%", "path", "identifier", "string literal", "localized string", "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_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_vector", "expr_float", + "SIZEOF", "ADD_ARRAY", "THEN", "TERN", "NEG", "ANIMREF", "PREINC", + "PREDEC", "POSTINC", "POSTDEC", "$accept", "root", "program", "inline", + "include", "declaration", "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_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_nosize", "expr_identifier", + "expr_path", "expr_istring", "expr_string", "expr_vector", "expr_float", "expr_integer", "expr_false", "expr_true", YY_NULLPTR }; return yy_sname[yysymbol]; @@ -3838,539 +3845,517 @@ namespace xsk { namespace gsc { namespace iw8 { } - const short parser::yypact_ninf_ = -276; + const short parser::yypact_ninf_ = -279; const short parser::yytable_ninf_ = -215; const short parser::yypact_[] = { - 4, -276, -276, 25, 25, 10, -276, 45, 4, -276, - -276, -276, -276, -276, -276, -28, -276, -276, -26, -11, - -41, -276, -276, -276, -276, -30, 1074, -276, -276, -276, - 13, -18, -276, -276, -38, -34, -276, 24, -276, -276, - -276, -276, -276, -276, -276, 41, 47, 1074, 644, -30, - 1074, 1074, -77, 2, -276, -276, -276, 2141, -276, -276, - -276, -276, -276, 134, 554, -276, -276, -276, -276, -276, - -276, 716, 726, -276, -276, 1034, -276, -276, -276, 1100, - 1285, 1340, 1348, -276, -276, 59, 22, -276, -276, -276, - -276, -276, -276, -276, 48, 53, -30, 69, 68, 66, - 76, 87, 81, 86, 1074, 1074, 1359, 644, -276, 2224, - 85, 91, -276, -276, -276, -276, -276, -276, -276, 1074, - 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, - 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, -276, 1140, - -30, -276, -276, -276, 102, 106, 1074, -30, -276, 812, - -276, -276, 1074, 1074, -30, 1074, 1074, -30, 1074, 1525, - 1559, -276, 1074, 1871, 1074, -276, 2106, 110, 110, 2255, - 2265, 2306, 2306, 67, 67, 67, 67, 2296, 724, 467, - 35, 35, -276, -276, -276, 1911, -276, -30, -16, -276, - 115, 922, 1074, 107, -32, 118, 1271, 119, 122, 124, - 128, -72, 120, 121, 125, 1008, 126, 139, 140, -276, - 152, 29, 29, -276, -276, 866, -276, -276, -276, -276, - -276, -276, -276, -276, -276, -276, -276, -276, -276, -276, - -276, -276, -276, -276, -276, -276, -276, -276, -276, -276, - -276, -276, 149, 150, 155, 160, 161, -276, -276, 1188, - -276, -276, -276, -276, -33, 1951, -9, 144, 1991, -1, - 162, 2031, -276, -276, 2070, 167, 2224, 1074, -276, 115, - -276, 1074, -276, -276, 978, 2176, -276, 172, -276, 1074, - 201, 1074, 7, -30, 1074, 127, 173, 177, -276, -276, - -276, -276, 2211, -276, 1074, 1074, 1074, -276, -276, 532, - 532, -276, -276, -276, -276, -276, -276, -276, 187, 188, - 189, 191, -276, -276, 1074, 1074, 1074, 1074, 1074, 1074, - 1074, 1074, 1074, 1074, 1074, 192, -276, 1074, 193, -276, - 1074, 194, 1074, 196, 2224, 28, -276, -276, -276, 182, - 1593, 200, 1627, 199, -276, -276, -276, 1275, -17, 1661, - -276, -276, -276, 30, 31, 1871, 1074, 1074, 1074, 1074, - 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, - 2224, 202, 34, 203, 37, 204, 1695, 1074, -276, -276, - 1271, 1074, 1271, 1074, 1074, -30, 53, 207, 208, 1729, - 1403, 1447, 1491, 1074, -276, 1074, -276, 1074, -276, 38, - 235, 1763, -276, 2224, 209, 1797, 237, -276, -276, -276, - 211, 212, 1074, 213, 1074, 215, 1074, 55, 56, 64, - -276, 1271, 217, 7, 1271, 1074, -276, -276, 210, -276, - 232, -276, 234, -276, -276, -276, -276, -276, 236, -276, - 1831, 226, 228, 230, 1271, 1271, -276, -276, -276, -276, - -276 + 8, -279, -279, -75, -75, -49, -279, -279, 16, 8, + -279, -279, -279, -279, -279, -279, -36, -279, -279, -57, + -35, -69, -279, -279, -279, -279, -20, 1152, -279, -279, + -279, -27, -8, -279, -279, 21, 23, -279, -7, -279, + -279, -279, -279, -279, -279, -279, 18, 46, 1152, 1022, + -20, 1152, 1152, -21, -46, 31, -279, -279, -279, 2015, + -279, -279, -279, -279, -279, 123, 207, -279, -279, -279, + -279, -279, -279, 361, 497, -279, -279, 594, -279, -279, + -279, 606, 737, 868, 947, -279, -279, 17, 51, -279, + -279, -279, -279, -279, -279, -279, 37, 68, -20, 57, + 53, 76, 94, 85, 97, 103, 1152, 1152, 1313, 1022, + -279, 2098, 80, 109, -279, -279, -279, -279, -279, -279, + -279, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, + 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, + 1217, -13, -279, -279, 115, 110, 1152, -20, -279, 782, + -279, -279, 1152, 1152, -20, 1152, 1152, -20, 1152, 1479, + 1513, -279, 1152, 1148, 1152, -279, 1980, 177, 177, 2129, + 2139, 822, 822, 166, 166, 166, 166, 2170, 601, 2180, + 78, 78, -279, -279, -279, 1213, -279, -279, -279, -20, + 14, -279, 117, 915, 1152, 113, -5, 125, 1303, 126, + 136, 137, 140, -28, 132, 135, 139, 1087, 142, 147, + 155, -279, 152, -10, -10, -279, -279, 836, -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, 148, 151, 154, 161, 162, -279, + -279, 45, -279, -279, -279, -279, 115, 1825, 36, 165, + 1865, 39, 173, 1905, -279, -279, 1944, 157, 2098, 1152, + -279, 117, -279, 1152, -279, -279, 994, 2050, -279, 181, + -279, 1152, 205, 1152, 561, -20, 1152, 133, 178, 179, + -279, -279, -279, -279, 2085, -279, 1152, 1152, 1152, -279, + -279, 1048, 1048, -279, -279, -279, -279, -279, -279, -279, + 186, 190, 195, 203, 159, -279, -279, 1152, 1152, 1152, + 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 210, -279, + 1152, 220, -279, 1152, 222, 1152, 228, 2098, 42, -279, + -279, -279, 224, 1547, 235, 1581, 226, -279, -279, -279, + 675, -15, 1615, -279, -279, -279, 49, 50, 1148, 1152, + 1152, 1152, 1152, 2098, 2098, 2098, 2098, 2098, 2098, 2098, + 2098, 2098, 2098, 2098, 238, 59, 239, 81, 241, 1649, + 1152, -279, -279, 1303, 1152, 1303, 1152, 1152, -20, 68, + 233, 240, 1683, 1357, 1401, 1445, 1152, -279, 1152, -279, + 1152, -279, 82, 261, 1717, -279, 2098, 248, 1751, 269, + -279, -279, -279, 250, 251, 1152, 252, 1152, 253, 1152, + 91, 98, 105, -279, 1303, 254, 561, 1303, 1152, -279, + -279, 264, -279, 266, -279, 267, -279, -279, -279, -279, + -279, 268, -279, 1785, 256, 260, 282, 1303, 1303, -279, + -279, -279, -279, -279 }; const unsigned char parser::yydefact_[] = { - 3, 12, 13, 0, 0, 0, 212, 0, 2, 7, - 8, 9, 14, 15, 16, 0, 213, 214, 0, 0, - 0, 1, 4, 5, 6, 180, 0, 10, 11, 216, - 0, 0, 179, 211, 0, 0, 203, 0, 223, 222, - 205, 206, 207, 208, 209, 0, 0, 0, 182, 0, - 0, 0, 0, 0, 215, 219, 221, 0, 93, 94, - 95, 132, 133, 134, 135, 163, 164, 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, 0, 0, 0, 0, 214, 0, - 0, 214, 0, 0, 0, 0, 0, 182, 204, 184, - 0, 181, 187, 162, 161, 218, 220, 210, 18, 0, + 3, 12, 13, 0, 0, 0, 213, 212, 0, 2, + 7, 8, 9, 14, 15, 16, 0, 215, 214, 0, + 0, 0, 1, 4, 5, 6, 180, 0, 10, 11, + 217, 0, 0, 179, 210, 0, 0, 202, 0, 224, + 223, 204, 205, 206, 207, 208, 0, 0, 0, 182, + 0, 0, 0, 0, 0, 212, 216, 220, 222, 0, + 93, 94, 95, 132, 133, 134, 135, 163, 164, 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, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 182, + 203, 184, 0, 181, 187, 162, 161, 219, 221, 209, + 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 192, 0, - 0, 191, 165, 166, 214, 0, 182, 0, 17, 0, + 0, 0, 165, 166, 0, 0, 182, 0, 17, 0, 19, 178, 0, 182, 0, 0, 182, 0, 0, 0, - 0, 193, 0, 184, 0, 177, 0, 125, 126, 114, + 0, 192, 0, 184, 0, 177, 0, 125, 126, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 127, 128, 129, 130, 131, 0, 190, 0, 0, 181, - 188, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 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, 194, 195, 196, 197, 0, - 198, 199, 200, 201, 202, 0, 0, 0, 0, 0, - 0, 0, 185, 186, 0, 0, 183, 0, 189, 0, - 167, 182, 52, 48, 0, 0, 72, 0, 73, 0, - 0, 0, 58, 0, 0, 0, 0, 0, 85, 86, - 87, 89, 0, 90, 182, 182, 0, 194, 195, 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, 169, 182, 0, 171, - 182, 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, 182, 168, 74, - 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 182, 170, 182, 172, 182, 217, 0, - 75, 0, 77, 96, 0, 0, 0, 82, 91, 92, - 0, 0, 182, 0, 182, 0, 182, 0, 0, 0, - 173, 0, 0, 58, 0, 0, 64, 66, 181, 69, - 181, 71, 181, 174, 175, 176, 76, 78, 0, 80, - 0, 0, 0, 0, 0, 0, 65, 68, 70, 79, - 81 + 127, 128, 129, 130, 131, 0, 191, 211, 190, 0, + 0, 181, 188, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 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, 193, 194, 195, + 196, 0, 197, 198, 199, 200, 201, 0, 0, 0, + 0, 0, 0, 0, 185, 186, 0, 0, 183, 0, + 189, 0, 167, 182, 52, 48, 0, 0, 72, 0, + 73, 0, 0, 0, 58, 0, 0, 0, 0, 0, + 85, 86, 87, 89, 0, 90, 182, 182, 0, 193, + 194, 109, 111, 53, 49, 61, 62, 63, 59, 60, + 0, 0, 0, 0, 0, 110, 112, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 169, + 182, 0, 171, 182, 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, + 182, 168, 74, 0, 0, 0, 97, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 182, 170, 182, 172, + 182, 218, 0, 75, 0, 77, 96, 0, 0, 0, + 82, 91, 92, 0, 0, 182, 0, 182, 0, 182, + 0, 0, 0, 173, 0, 0, 58, 0, 0, 64, + 66, 181, 69, 181, 71, 181, 174, 175, 176, 76, + 78, 0, 80, 0, 0, 0, 0, 0, 0, 65, + 68, 70, 79, 81 }; const short parser::yypgoto_[] = { - -276, -276, -276, 260, 287, 288, -276, -276, -276, -160, - 82, -276, -276, -276, -93, -125, -276, -276, -276, -276, - -276, -276, -276, -276, -276, -276, -276, -276, -276, -276, - -276, -276, -276, -276, -276, -276, -276, -276, -276, -276, - 197, -276, -275, -271, -270, -276, -276, -276, -276, -276, - -73, -45, -69, -61, -276, -276, 113, -47, -276, -276, - -276, -12, 205, -276, -276, 256, -276, -276, -276, 286, - 292, 337, 388, -276, -276, 0, 6, -276, -15, -276, - -276, 109, -276, -276 + -279, -279, -279, 294, 296, 338, -279, -279, -279, -181, + 131, -279, -279, -279, -95, -77, -279, -279, -279, -279, + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + 204, -279, -278, -276, -271, -279, -279, -279, -279, -279, + -31, -6, -73, -63, -279, -279, -100, -48, -279, -279, + -279, 196, 232, -279, -279, 265, -279, -279, -279, 283, + 301, 319, 355, -279, -279, -279, 0, 7, -279, -18, + -279, -279, 150, -279, -279 }; const short parser::yydefgoto_[] = { - 0, 7, 8, 9, 10, 11, 12, 13, 14, 213, - 214, 274, 215, 216, 217, 343, 218, 219, 220, 221, - 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, - 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 109, 404, 242, 243, 244, 58, 59, 60, 61, 62, - 63, 64, 65, 66, 67, 31, 110, 189, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, - 90, 91, 92, 93 + 0, 8, 9, 10, 11, 12, 13, 14, 15, 215, + 216, 276, 217, 218, 219, 346, 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, 407, 244, 245, 246, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 32, 112, 191, 70, 71, + 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, + 82, 83, 84, 85, 86, 188, 87, 88, 89, 90, + 91, 92, 93, 94, 95 }; const short parser::yytable_[] = { - 15, 111, 150, 17, 17, 30, 142, 344, 15, 18, - 19, 345, 346, 384, 143, 1, 2, 3, 4, 5, - 97, 146, 277, 285, 100, 32, 25, 115, 116, -214, - 29, 273, 278, 56, 98, 101, 280, 95, 27, 270, - 99, 102, 96, 385, 164, 21, 326, 34, 35, 112, - 37, 164, 26, 28, 329, 41, 42, 43, 44, 164, - 111, 29, 16, 6, 20, 210, 16, 6, 94, 34, - 35, 6, 37, 211, 212, 144, 245, 41, 42, 43, - 44, 145, 103, 378, 147, 387, 388, 210, 164, 394, - 164, 164, 396, 420, 164, 104, 151, 164, 164, -202, - -202, 105, -202, 117, 246, 6, -202, 16, 6, 149, - 433, 434, 148, 146, 337, 164, 164, -202, 245, 435, - -202, -214, 153, 245, 164, 16, 6, 152, 154, 16, - 6, 135, 136, 137, 155, 120, 121, 247, 297, 297, - 186, 156, 245, 157, 158, 164, 246, 190, 344, 254, - 165, 246, 345, 346, 257, 145, 146, 260, -202, -202, - -202, 133, 134, 135, 136, 137, 298, 298, 187, 271, - 246, 276, 279, 281, -194, -194, 282, -194, 283, 247, - 142, -194, 284, 288, 247, 289, 286, 269, 143, 290, - 293, 254, -194, 294, 295, -194, 254, 145, 327, 247, - 247, 245, 145, 247, 133, 134, 135, 136, 137, 297, - 296, 254, 254, 303, 304, 254, 330, 145, 145, 305, - 400, 145, 402, 57, 306, 307, 333, 339, 341, 246, - 142, 142, 116, -194, -194, -194, 350, 298, 143, 143, - 351, 356, 357, 358, 106, 359, 379, 113, 114, 144, - 377, 371, 373, 375, 381, 145, 393, 395, 397, 188, - 421, 436, 247, 383, 439, 441, 256, 425, 22, 259, - 247, 408, 409, 423, 254, 426, 427, 429, 142, 431, - 145, 437, 254, 348, 449, 450, 143, 442, 145, 443, - 446, 444, 447, 407, 448, 23, 24, 302, 438, 144, - 144, 159, 160, 0, 163, 145, 145, 245, 0, 245, - 287, 0, 0, 0, 0, 0, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, 246, 185, 246, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 144, 245, 255, - 297, 245, 258, 145, 248, 261, 0, 0, 0, 264, - 0, 266, 0, 0, 0, 428, 0, 430, 247, 432, - 247, 245, 245, 0, 0, 0, 246, 0, 298, 246, - 254, 0, 254, 0, 335, 406, 145, 0, 145, 275, - 0, 0, 0, 0, 0, 0, 248, 0, 0, 246, - 246, 248, 292, 0, 0, 249, 0, 353, 354, 247, - 0, 247, 247, 0, 0, 0, 248, 248, 0, 0, - 248, 254, 0, 254, 254, 0, 0, 145, 0, 145, - 145, 0, 247, 247, 0, 250, 0, 0, 0, 0, - 372, 251, 0, 374, 254, 254, 0, 249, 0, 0, - 145, 145, 249, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 334, 0, 0, 299, 300, 0, - 0, 249, 0, 0, 0, 0, 340, 250, 342, 248, - 0, 349, 250, 251, 0, 0, 252, 248, 251, 0, - 399, 0, 0, 355, 0, 0, 0, 250, 250, 0, - 0, 250, 0, 251, 251, 0, 417, 251, 418, 0, - 419, 360, 361, 362, 363, 364, 365, 366, 367, 368, - 369, 370, 0, 0, 0, 0, 0, 0, 252, 376, - 249, 0, 0, 252, 0, 120, 121, 253, 347, 124, - 125, 126, 127, 128, 129, 0, 0, 0, 252, 252, - 0, 0, 252, 389, 390, 391, 392, 0, 0, 131, - 250, 133, 134, 135, 136, 137, 251, 0, 250, 0, - 0, 0, 34, 35, 251, 37, 0, 0, 401, 253, - 403, 405, 0, 0, 253, 248, 0, 248, 0, 0, - 139, 0, 0, 140, -195, -195, 0, -195, 0, 253, - 253, -195, 0, 253, 0, 0, 0, 0, 0, 0, - 0, 252, -195, 0, 0, -195, 0, 0, 0, 252, - 0, 0, 440, 0, 0, 0, 248, 0, 248, 248, - 0, 141, 16, 6, 0, 0, 249, 0, 249, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 248, - 248, 0, 0, -195, -195, -195, 0, 0, 0, 0, - 33, 0, 253, 0, 0, 0, 250, 0, 250, 0, - 253, 0, 251, 0, 251, 0, 0, 249, 0, 347, - 249, 0, 0, 0, 34, 35, 36, 37, 38, 39, - 40, 0, 41, 42, 43, 44, 45, 46, 47, 0, - 249, 249, 107, 108, 0, 0, 49, 250, 0, 250, - 250, 0, 0, 251, 0, 251, 251, 252, 0, 252, - 0, 0, 50, 51, 0, 0, 0, 0, 0, 0, - 250, 250, 0, 0, 0, 0, 251, 251, 0, 52, - 0, 0, 53, 0, 16, 6, 29, 54, 55, 56, - 0, 0, 0, 0, 0, 0, -196, -196, 252, -196, - 252, 252, 0, -196, 0, 0, -197, -197, 253, -197, - 253, 0, 0, -197, -196, 0, 0, -196, 0, 0, - 0, 252, 252, 0, -197, 0, 0, -197, 0, 0, - 0, 0, 120, 121, 0, 0, 124, 125, 126, 127, - 128, 129, 0, 0, 0, 0, 0, 0, 0, 253, - 0, 253, 253, 0, 0, -196, -196, -196, 133, 134, - 135, 136, 137, 191, 0, -197, -197, -197, 0, 0, - 0, 192, 253, 253, 193, 194, 195, 0, 196, 197, - 198, 199, 0, 200, 201, 202, 203, 204, 205, 206, - 207, 208, 34, 35, 0, 37, 0, 0, 0, 0, - 41, 42, 43, 44, 0, 0, 0, 0, 149, 209, - 210, 0, 0, 0, 0, 0, 0, 191, 211, 212, - 0, 0, 0, 0, 0, 192, 0, 0, 193, 194, - 195, 0, 196, 197, 198, 199, 0, 200, 201, 202, - 203, 204, 205, 206, 207, 208, 34, 35, 0, 37, - 0, 0, 16, 6, 41, 42, 43, 44, 0, 0, - 0, 0, 149, 301, 210, 0, 0, 0, 0, 0, - 0, 0, 211, 212, 272, 0, 0, 0, 0, 0, - 0, 192, 0, 0, 193, 194, 195, 0, 196, 197, - 198, 199, 0, 200, 201, 202, 203, 204, 205, 206, - 207, 208, 34, 35, 0, 37, 16, 6, 0, 0, - 41, 42, 43, 44, 0, 0, 0, 0, 149, 0, - 210, 0, 0, 0, 0, 0, 0, 0, 211, 212, - 336, 0, 0, 0, 0, 0, 0, 192, 0, 0, - 193, 194, 195, 0, 196, 197, 198, 199, 0, 200, - 201, 202, 203, 204, 205, 206, 207, 208, 34, 35, - 0, 37, 16, 6, 33, 0, 41, 42, 43, 44, - 0, 0, 0, 0, 149, 0, 210, 0, 0, 0, - 0, 0, 0, 0, 211, 212, 0, 0, 34, 35, - 36, 37, 38, 39, 40, 0, 41, 42, 43, 44, - 45, 46, 47, 0, 0, 0, 48, 0, 0, 0, - 49, 0, 291, 0, 34, 35, 0, 37, 16, 6, - 0, 138, 0, 0, 0, 0, 50, 51, 0, 0, - 33, 0, 139, 0, 0, 140, 0, 0, 0, 0, - 0, 0, 0, 52, 0, 0, 53, 0, 16, 6, - 29, 54, 55, 56, 34, 35, 36, 37, 38, 39, - 40, 0, 41, 42, 43, 44, 45, 46, 47, 0, - 0, 0, 48, 141, 16, 6, 49, 0, 0, 0, - -198, -198, 0, -198, 0, 0, 0, -198, 0, 0, - 0, 0, 50, 51, 0, 0, 33, 0, -198, 0, - 0, -198, 0, 0, 0, 0, 0, 0, 0, 52, - 0, 0, 53, 0, 16, 6, 29, 54, 55, 56, - 34, 35, 36, 37, 38, 39, 40, 0, 41, 42, - 43, 44, 45, 46, 47, 0, 0, 0, 107, -198, - -198, -198, 49, 0, 0, 308, 309, 0, 310, 311, - 0, 0, 0, 0, 0, 0, 0, 0, 50, 51, - 0, 0, 0, 0, 0, 0, 0, 0, 34, 35, - 0, 37, 0, 0, 0, 52, 0, 0, 53, 0, - 16, 6, 29, 54, 55, 56, 139, 0, 0, 140, - 0, 0, 0, 0, 312, 313, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 314, 315, - 316, 317, 318, 319, 320, 321, 322, 323, 324, 0, - 0, 0, 0, 0, 0, 0, 0, 141, 16, 6, - 192, 0, 0, 193, 194, 195, 0, 196, 197, 198, - 199, 0, 200, 201, 202, 203, 204, 205, 206, 207, - 208, 34, 35, 0, 37, 34, 35, 0, 37, 41, - 42, 43, 44, 0, 0, -199, -199, 149, -199, 210, - 0, 0, -199, 139, 0, 0, 140, 211, 212, 0, - 0, 312, 313, -199, 0, 0, -199, 0, 0, 0, - 0, 0, 0, 0, 0, 314, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 324, 0, 0, 0, 0, - 0, 16, 6, 0, 141, 16, 6, 0, 0, 0, - -200, -200, 0, -200, -199, -199, -199, -200, -201, -201, - 0, -201, 0, 0, 0, -201, 0, 0, -200, 0, - 0, -200, 0, 0, 0, 0, -201, 0, 0, -201, - 0, 0, 0, 0, 161, 0, 0, 0, 0, 162, - 0, 0, 0, 0, 119, 0, 0, 120, 121, 122, - 123, 124, 125, 126, 127, 128, 129, 0, 0, -200, - -200, -200, 0, 0, 0, 0, 0, -201, -201, -201, - 130, 131, 132, 133, 134, 135, 136, 137, 411, 0, - 0, 0, 0, 412, 0, 0, 0, 0, 119, 0, - 0, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 130, 131, 132, 133, 134, 135, - 136, 137, 413, 0, 0, 0, 0, 414, 0, 0, - 0, 0, 119, 0, 0, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 130, 131, - 132, 133, 134, 135, 136, 137, 415, 0, 0, 0, - 0, 416, 0, 0, 0, 0, 119, 0, 0, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 0, + 16, 113, 150, 31, 142, 21, 347, 28, 348, 16, + 19, 20, 275, 349, 143, 387, 22, 282, 26, 1, + 2, 3, 4, 5, 17, 18, 33, 6, 96, 29, + 35, 36, 30, 38, 186, 100, 103, 6, 42, 43, + 44, 45, 101, 104, 27, 388, 190, 97, 212, 279, + 114, 105, 98, 258, 119, 6, 261, -201, -201, 280, + -201, 113, 310, 311, -201, 312, 313, 287, 6, 272, + 6, 146, 106, 30, 164, -201, 58, 144, -201, 99, + 7, 102, 117, 118, 145, 35, 36, 187, 38, 17, + 55, 329, 6, -214, 332, 340, 164, 381, 151, 164, + 107, 148, 164, 140, 390, 391, 314, 153, 7, 164, + 164, 315, 316, 147, 397, 152, -201, -201, 247, 164, + 17, 55, 17, 55, 149, 317, 318, 319, 320, 321, + 322, 323, 324, 325, 326, 327, 399, 423, 154, 156, + 164, 164, 164, 248, 17, 55, 436, 192, 347, 256, + 348, 164, 155, 437, 259, 349, 145, 262, 164, 157, + 438, 158, 247, -193, -193, 164, -193, 247, 165, 146, + -193, 273, 189, 338, 137, 138, 139, 278, 142, 281, + 283, -193, 299, 299, -193, 288, 247, 248, 143, 271, + 284, 285, 248, 256, 286, 290, 356, 357, 256, 291, + 145, 296, 403, 292, 405, 145, 295, 300, 300, 297, + 298, 248, 305, 256, 256, 306, 336, 256, 307, 330, + 145, 145, -193, -193, 145, 308, 309, 333, 142, 142, + 375, 59, 344, 377, 122, 123, 342, 118, 143, 143, + 359, 353, 354, 439, 360, 247, 442, -194, -194, 361, + -194, 144, 108, 299, -194, 115, 116, 362, 145, 187, + 135, 136, 137, 138, 139, -194, 452, 453, -194, 374, + 248, 135, 136, 137, 138, 139, 256, 142, 300, 376, + 402, 378, 380, 145, 256, 351, 424, 143, 382, 384, + 386, 145, 396, 398, 410, 400, 420, 411, 421, 428, + 422, 144, 144, 23, 412, 24, -194, -194, 145, 145, + 159, 160, 426, 163, 429, 430, 432, 434, 440, 444, + 449, 445, 446, 447, 450, 166, 167, 168, 169, 170, + 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, + 181, 182, 183, 184, 185, 249, 451, 25, 304, 441, + 144, 0, 247, 289, 247, 0, 257, 145, 0, 260, + 0, 0, 263, 0, 0, 0, 266, 431, 268, 433, + 0, 435, 0, 0, 0, 0, 0, 248, 0, 248, + 0, 250, 0, 256, 0, 256, 0, 0, 409, 249, + 145, 0, 145, 247, 249, 299, 247, 0, 277, 0, + 0, -195, -195, 0, -195, 0, 0, 0, -195, 249, + 249, 294, 0, 249, 251, 0, 247, 247, 248, -195, + 300, 248, -195, 0, 256, 250, 256, 256, 0, 0, + 250, 145, 252, 145, 145, 0, 0, 0, 0, 0, + 0, 248, 248, 0, 0, 250, 250, 256, 256, 250, + 253, 0, 0, 0, 145, 145, 0, 0, 251, 0, + -195, -195, 0, 251, 0, 0, 0, 0, 254, 0, + 0, 0, 249, 337, 0, 0, 252, 0, 301, 302, + 249, 252, 251, 0, 0, 343, 0, 345, 0, 0, + 352, 0, 0, 0, 253, 0, 252, 252, 0, 253, + 252, 0, 358, 0, 255, 0, 0, 0, 250, 0, + 0, 0, 254, 0, 253, 253, 250, 254, 253, 0, + 0, 363, 364, 365, 366, 367, 368, 369, 370, 371, + 372, 373, 254, 254, 0, 0, 254, -196, -196, 379, + -196, 251, 0, 0, -196, 0, 0, 0, 255, 350, + 0, 0, 0, 255, 0, -196, 0, 0, -196, 252, + 0, 0, 0, 392, 393, 394, 395, 252, 255, 255, + 0, 0, 255, 0, 0, 0, 0, 253, 0, 249, + 0, 249, 0, 0, 0, 253, 0, 0, 404, 0, + 406, 408, 0, 0, 0, 254, -196, -196, 0, 0, + 0, 35, 36, 254, 38, 0, 0, 0, 6, 42, + 43, 44, 45, 0, 0, 250, 0, 250, 0, 212, + 249, 0, 249, 249, 0, 0, 0, 213, 214, 0, + 0, 255, 443, 0, 35, 36, 0, 38, 0, 255, + 0, 6, 0, 249, 249, 0, -197, -197, 251, -197, + 251, 0, 140, -197, 0, 141, 250, 0, 250, 250, + 17, 55, 0, 0, -197, 0, 252, -197, 252, 122, + 123, 0, 0, 126, 127, 128, 129, 130, 131, 250, + 250, 0, 0, 0, 253, 0, 253, 0, 0, 251, + 0, 350, 251, 17, 55, 135, 136, 137, 138, 139, + 0, 0, 254, 0, 254, -197, -197, 252, 0, 252, + 252, 0, 251, 251, 0, 35, 36, 0, 38, 0, + 0, 0, 6, 0, 0, 253, 0, 253, 253, 0, + 252, 252, 0, 140, 0, 0, 314, 0, 255, 0, + 255, 315, 316, 254, 0, 254, 254, 0, 253, 253, + 0, 0, 0, 0, 0, 317, 318, 319, 320, 321, + 322, 323, 324, 325, 326, 327, 254, 254, 0, 0, + 0, 0, 0, 0, 17, 55, 0, -198, -198, 255, + -198, 255, 255, 0, -198, 0, 0, 0, 0, 0, + 0, 0, 0, 193, 0, -198, 0, 0, -198, 0, + 0, 194, 255, 255, 195, 196, 197, 0, 198, 199, + 200, 201, 0, 202, 203, 204, 205, 206, 207, 208, + 209, 210, 35, 36, 0, 38, 0, 0, 0, 6, + 42, 43, 44, 45, 0, 0, -198, -198, 149, 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, 35, 36, 0, 38, + 0, 17, 55, 6, 42, 43, 44, 45, 0, 0, + 122, 123, 149, 303, 212, 0, 128, 129, 130, 131, + 0, 0, 213, 214, 0, 0, 0, 0, -199, -199, + 0, -199, 0, 0, 0, -199, 135, 136, 137, 138, + 139, 0, 0, 0, 0, 0, -199, 274, 0, -199, + 0, 0, 0, 0, 194, 17, 55, 195, 196, 197, + 0, 198, 199, 200, 201, 0, 202, 203, 204, 205, + 206, 207, 208, 209, 210, 35, 36, 0, 38, 0, + 0, 0, 6, 42, 43, 44, 45, -199, -199, 0, + 0, 149, 0, 212, 0, 0, 0, 0, 0, 0, + 0, 213, 214, 0, 0, 0, 0, -200, -200, 0, + -200, 0, 0, 0, -200, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, -200, 339, 0, -200, 0, + 0, 0, 0, 194, 17, 55, 195, 196, 197, 0, + 198, 199, 200, 201, 0, 202, 203, 204, 205, 206, + 207, 208, 209, 210, 35, 36, 0, 38, 34, 0, + 0, 6, 42, 43, 44, 45, -200, -200, 0, 0, + 149, 0, 212, 0, 0, 0, 0, 0, 0, 0, + 213, 214, 35, 36, 37, 38, 39, 40, 41, 6, + 42, 43, 44, 45, 46, 47, 48, 0, 0, 0, + 109, 110, 0, 0, 50, 0, 0, 0, 35, 36, + 0, 38, 0, 17, 55, 6, 0, 0, 0, 0, + 51, 52, 0, 34, 0, 0, 140, 0, 0, 314, + 0, 0, 0, 0, 0, 0, 0, 53, 0, 0, + 54, 17, 55, 30, 56, 57, 58, 35, 36, 37, + 38, 39, 40, 41, 6, 42, 43, 44, 45, 46, + 47, 48, 0, 0, 0, 49, 0, 17, 55, 50, + 0, 293, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 51, 52, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 262, 0, 130, 131, 132, 133, 134, 135, 136, 137, - 119, 0, 0, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 263, 0, 130, 131, 132, 133, - 134, 135, 136, 137, 119, 0, 0, 120, 121, 122, - 123, 124, 125, 126, 127, 128, 129, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 380, 0, - 130, 131, 132, 133, 134, 135, 136, 137, 119, 0, - 0, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 382, 0, 130, 131, 132, 133, 134, 135, - 136, 137, 119, 0, 0, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 386, 0, 130, 131, - 132, 133, 134, 135, 136, 137, 119, 0, 0, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 0, + 0, 0, 53, 0, 0, 54, 17, 55, 30, 56, + 57, 58, 35, 36, 37, 38, 39, 40, 41, 6, + 42, 43, 44, 45, 46, 47, 48, 267, 0, 0, + 49, 0, 0, 121, 50, 0, 122, 123, 124, 125, + 126, 127, 128, 129, 130, 131, 0, 0, 0, 0, + 51, 52, 0, 34, 0, 0, 0, 0, 0, 132, + 133, 134, 135, 136, 137, 138, 139, 53, 0, 0, + 54, 17, 55, 30, 56, 57, 58, 35, 36, 37, + 38, 39, 40, 41, 6, 42, 43, 44, 45, 46, + 47, 48, 270, 0, 0, 109, 0, 0, 121, 50, + 0, 122, 123, 124, 125, 126, 127, 128, 129, 130, + 131, 0, 0, 0, 0, 51, 52, 0, 0, 0, + 0, 0, 0, 0, 132, 133, 134, 135, 136, 137, + 138, 139, 53, 0, 0, 54, 17, 55, 30, 56, + 57, 58, 194, 0, 0, 195, 196, 197, 0, 198, + 199, 200, 201, 0, 202, 203, 204, 205, 206, 207, + 208, 209, 210, 35, 36, 0, 38, 0, 0, 0, + 6, 42, 43, 44, 45, 0, 0, 0, 0, 149, + 0, 212, 0, 0, 0, 0, 0, 0, 161, 213, + 214, 0, 0, 162, 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, 17, 55, 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, 0, 0, 132, 133, + 134, 135, 136, 137, 138, 139, 416, 0, 0, 0, + 0, 417, 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, - 398, 0, 130, 131, 132, 133, 134, 135, 136, 137, - 119, 0, 0, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 410, 0, 130, 131, 132, 133, - 134, 135, 136, 137, 119, 0, 0, 120, 121, 122, - 123, 124, 125, 126, 127, 128, 129, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 422, 0, - 130, 131, 132, 133, 134, 135, 136, 137, 119, 0, - 0, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 424, 0, 130, 131, 132, 133, 134, 135, - 136, 137, 119, 0, 0, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 445, 0, 130, 131, - 132, 133, 134, 135, 136, 137, 119, 0, 0, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 0, + 0, 0, 132, 133, 134, 135, 136, 137, 138, 139, + 418, 0, 0, 0, 0, 419, 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, 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, 383, 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, - 0, 0, 130, 131, 132, 133, 134, 135, 136, 137, - 265, 0, 0, 0, 0, 0, 119, 0, 0, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 0, + 389, 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, 401, 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, 413, 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, 425, 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, 427, 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, 130, 131, 132, 133, 134, 135, 136, 137, - 268, 0, 0, 0, 0, 0, 119, 0, 0, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 0, + 448, 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, 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, 334, 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, 335, 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, 0, 130, 131, 132, 133, 134, 135, 136, 137, - 325, 0, 0, 0, 0, 0, 119, 0, 0, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 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, 341, 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, 130, 131, 132, 133, 134, 135, 136, 137, - 328, 0, 0, 0, 0, 0, 119, 0, 0, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 130, 131, 132, 133, 134, 135, 136, 137, - 331, 0, 0, 0, 0, 0, 119, 0, 0, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 130, 131, 132, 133, 134, 135, 136, 137, - 332, 0, 0, 0, 0, 119, 0, 0, 120, 121, - 122, 123, 124, 125, 126, 127, 128, 129, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 130, 131, 132, 133, 134, 135, 136, 137, 267, - 0, 119, 0, 0, 120, 121, 122, 123, 124, 125, - 126, 127, 128, 129, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 130, 131, 132, - 133, 134, 135, 136, 137, 118, 119, 0, 0, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 130, 131, 132, 133, 134, 135, 136, 137, - 338, 119, 0, 0, 120, 121, 122, 123, 124, 125, - 126, 127, 128, 129, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 130, 131, 132, - 133, 134, 135, 136, 137, 352, 119, 0, 0, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 119, - 0, 0, 120, 121, 122, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, - 0, 0, 0, 0, 0, 130, 131, 132, 133, 134, - 135, 136, 137, 120, 121, 0, 123, 124, 125, 126, - 127, 128, 129, 120, 121, 0, 0, 124, 125, 126, - 127, 128, 129, 0, 0, 0, 130, 131, 132, 133, - 134, 135, 136, 137, 0, 0, 130, 131, 132, 133, - 134, 135, 136, 137, 120, 121, 0, 0, 124, 125, - 126, 127, 128, 129, 120, 121, 0, 0, 0, 0, - 126, 127, 128, 129, 0, 0, 0, 0, 131, 132, - 133, 134, 135, 136, 137, 0, 0, 0, 0, 0, - 133, 134, 135, 136, 137 + 0, 132, 133, 134, 135, 136, 137, 138, 139, 355, + 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, 95, 3, 4, 20, 75, 282, 8, 3, - 4, 282, 282, 30, 75, 11, 12, 13, 14, 15, - 58, 54, 54, 95, 58, 25, 54, 104, 105, 62, - 102, 191, 64, 105, 34, 35, 196, 55, 64, 55, - 34, 35, 60, 60, 60, 0, 55, 40, 41, 49, - 43, 60, 80, 64, 55, 48, 49, 50, 51, 60, - 107, 102, 100, 101, 54, 58, 100, 101, 55, 40, - 41, 101, 43, 66, 67, 75, 149, 48, 49, 50, - 51, 75, 58, 55, 62, 55, 55, 58, 60, 55, - 60, 60, 55, 55, 60, 54, 96, 60, 60, 40, - 41, 54, 43, 101, 149, 101, 47, 100, 101, 56, - 55, 55, 64, 54, 274, 60, 60, 58, 191, 55, - 61, 62, 54, 196, 60, 100, 101, 58, 62, 100, - 101, 96, 97, 98, 58, 68, 69, 149, 211, 212, - 140, 54, 215, 62, 58, 60, 191, 147, 423, 149, - 59, 196, 423, 423, 154, 149, 54, 157, 99, 100, - 101, 94, 95, 96, 97, 98, 211, 212, 62, 54, - 215, 64, 54, 54, 40, 41, 54, 43, 54, 191, - 249, 47, 54, 63, 196, 64, 201, 187, 249, 64, - 64, 191, 58, 54, 54, 61, 196, 191, 54, 211, - 212, 274, 196, 215, 94, 95, 96, 97, 98, 282, - 58, 211, 212, 64, 64, 215, 54, 211, 212, 64, - 380, 215, 382, 26, 64, 64, 59, 55, 27, 274, - 299, 300, 105, 99, 100, 101, 63, 282, 299, 300, - 63, 54, 54, 54, 47, 54, 64, 50, 51, 249, - 54, 59, 59, 59, 54, 249, 54, 54, 54, 146, - 25, 421, 274, 64, 424, 55, 153, 30, 8, 156, - 282, 64, 64, 64, 274, 64, 64, 64, 347, 64, - 274, 64, 282, 283, 444, 445, 347, 55, 282, 55, - 64, 55, 64, 386, 64, 8, 8, 215, 423, 299, - 300, 104, 105, -1, 107, 299, 300, 380, -1, 382, - 201, -1, -1, -1, -1, -1, 119, 120, 121, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 135, 136, 137, 380, 139, 382, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 347, 421, 152, - 423, 424, 155, 347, 149, 158, -1, -1, -1, 162, - -1, 164, -1, -1, -1, 412, -1, 414, 380, 416, - 382, 444, 445, -1, -1, -1, 421, -1, 423, 424, - 380, -1, 382, -1, 271, 385, 380, -1, 382, 192, - -1, -1, -1, -1, -1, -1, 191, -1, -1, 444, - 445, 196, 205, -1, -1, 149, -1, 294, 295, 421, - -1, 423, 424, -1, -1, -1, 211, 212, -1, -1, - 215, 421, -1, 423, 424, -1, -1, 421, -1, 423, - 424, -1, 444, 445, -1, 149, -1, -1, -1, -1, - 327, 149, -1, 330, 444, 445, -1, 191, -1, -1, - 444, 445, 196, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 267, -1, -1, 211, 212, -1, - -1, 215, -1, -1, -1, -1, 279, 191, 281, 274, - -1, 284, 196, 191, -1, -1, 149, 282, 196, -1, - 377, -1, -1, 296, -1, -1, -1, 211, 212, -1, - -1, 215, -1, 211, 212, -1, 393, 215, 395, -1, - 397, 314, 315, 316, 317, 318, 319, 320, 321, 322, - 323, 324, -1, -1, -1, -1, -1, -1, 191, 332, - 274, -1, -1, 196, -1, 68, 69, 149, 282, 72, - 73, 74, 75, 76, 77, -1, -1, -1, 211, 212, - -1, -1, 215, 356, 357, 358, 359, -1, -1, 92, - 274, 94, 95, 96, 97, 98, 274, -1, 282, -1, - -1, -1, 40, 41, 282, 43, -1, -1, 381, 191, - 383, 384, -1, -1, 196, 380, -1, 382, -1, -1, - 58, -1, -1, 61, 40, 41, -1, 43, -1, 211, - 212, 47, -1, 215, -1, -1, -1, -1, -1, -1, - -1, 274, 58, -1, -1, 61, -1, -1, -1, 282, - -1, -1, 425, -1, -1, -1, 421, -1, 423, 424, - -1, 99, 100, 101, -1, -1, 380, -1, 382, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 444, - 445, -1, -1, 99, 100, 101, -1, -1, -1, -1, - 16, -1, 274, -1, -1, -1, 380, -1, 382, -1, - 282, -1, 380, -1, 382, -1, -1, 421, -1, 423, - 424, -1, -1, -1, 40, 41, 42, 43, 44, 45, - 46, -1, 48, 49, 50, 51, 52, 53, 54, -1, - 444, 445, 58, 59, -1, -1, 62, 421, -1, 423, - 424, -1, -1, 421, -1, 423, 424, 380, -1, 382, - -1, -1, 78, 79, -1, -1, -1, -1, -1, -1, - 444, 445, -1, -1, -1, -1, 444, 445, -1, 95, - -1, -1, 98, -1, 100, 101, 102, 103, 104, 105, - -1, -1, -1, -1, -1, -1, 40, 41, 421, 43, - 423, 424, -1, 47, -1, -1, 40, 41, 380, 43, - 382, -1, -1, 47, 58, -1, -1, 61, -1, -1, - -1, 444, 445, -1, 58, -1, -1, 61, -1, -1, - -1, -1, 68, 69, -1, -1, 72, 73, 74, 75, - 76, 77, -1, -1, -1, -1, -1, -1, -1, 421, - -1, 423, 424, -1, -1, 99, 100, 101, 94, 95, - 96, 97, 98, 11, -1, 99, 100, 101, -1, -1, - -1, 19, 444, 445, 22, 23, 24, -1, 26, 27, + 0, 49, 97, 21, 77, 54, 284, 64, 284, 9, + 3, 4, 193, 284, 77, 30, 0, 198, 54, 11, + 12, 13, 14, 15, 99, 100, 26, 47, 55, 64, + 40, 41, 101, 43, 47, 35, 36, 47, 48, 49, + 50, 51, 35, 36, 80, 60, 146, 55, 58, 54, + 50, 58, 60, 153, 100, 47, 156, 40, 41, 64, + 43, 109, 17, 18, 47, 20, 21, 95, 47, 55, + 47, 54, 54, 101, 60, 58, 104, 77, 61, 58, + 100, 58, 103, 104, 77, 40, 41, 100, 43, 99, + 100, 55, 47, 62, 55, 276, 60, 55, 98, 60, + 54, 64, 60, 58, 55, 55, 61, 54, 100, 60, + 60, 66, 67, 62, 55, 58, 99, 100, 149, 60, + 99, 100, 99, 100, 56, 80, 81, 82, 83, 84, + 85, 86, 87, 88, 89, 90, 55, 55, 62, 54, + 60, 60, 60, 149, 99, 100, 55, 147, 426, 149, + 426, 60, 58, 55, 154, 426, 149, 157, 60, 62, + 55, 58, 193, 40, 41, 60, 43, 198, 59, 54, + 47, 54, 62, 273, 96, 97, 98, 64, 251, 54, + 54, 58, 213, 214, 61, 203, 217, 193, 251, 189, + 54, 54, 198, 193, 54, 63, 296, 297, 198, 64, + 193, 54, 383, 64, 385, 198, 64, 213, 214, 54, + 58, 217, 64, 213, 214, 64, 59, 217, 64, 54, + 213, 214, 99, 100, 217, 64, 64, 54, 301, 302, + 330, 27, 27, 333, 68, 69, 55, 104, 301, 302, + 54, 63, 63, 424, 54, 276, 427, 40, 41, 54, + 43, 251, 48, 284, 47, 51, 52, 54, 251, 100, + 94, 95, 96, 97, 98, 58, 447, 448, 61, 59, + 276, 94, 95, 96, 97, 98, 276, 350, 284, 59, + 380, 59, 54, 276, 284, 285, 25, 350, 64, 54, + 64, 284, 54, 54, 389, 54, 396, 64, 398, 30, + 400, 301, 302, 9, 64, 9, 99, 100, 301, 302, + 106, 107, 64, 109, 64, 64, 64, 64, 64, 55, + 64, 55, 55, 55, 64, 121, 122, 123, 124, 125, + 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, + 136, 137, 138, 139, 140, 149, 64, 9, 217, 426, + 350, -1, 383, 203, 385, -1, 152, 350, -1, 155, + -1, -1, 158, -1, -1, -1, 162, 415, 164, 417, + -1, 419, -1, -1, -1, -1, -1, 383, -1, 385, + -1, 149, -1, 383, -1, 385, -1, -1, 388, 193, + 383, -1, 385, 424, 198, 426, 427, -1, 194, -1, + -1, 40, 41, -1, 43, -1, -1, -1, 47, 213, + 214, 207, -1, 217, 149, -1, 447, 448, 424, 58, + 426, 427, 61, -1, 424, 193, 426, 427, -1, -1, + 198, 424, 149, 426, 427, -1, -1, -1, -1, -1, + -1, 447, 448, -1, -1, 213, 214, 447, 448, 217, + 149, -1, -1, -1, 447, 448, -1, -1, 193, -1, + 99, 100, -1, 198, -1, -1, -1, -1, 149, -1, + -1, -1, 276, 269, -1, -1, 193, -1, 213, 214, + 284, 198, 217, -1, -1, 281, -1, 283, -1, -1, + 286, -1, -1, -1, 193, -1, 213, 214, -1, 198, + 217, -1, 298, -1, 149, -1, -1, -1, 276, -1, + -1, -1, 193, -1, 213, 214, 284, 198, 217, -1, + -1, 317, 318, 319, 320, 321, 322, 323, 324, 325, + 326, 327, 213, 214, -1, -1, 217, 40, 41, 335, + 43, 276, -1, -1, 47, -1, -1, -1, 193, 284, + -1, -1, -1, 198, -1, 58, -1, -1, 61, 276, + -1, -1, -1, 359, 360, 361, 362, 284, 213, 214, + -1, -1, 217, -1, -1, -1, -1, 276, -1, 383, + -1, 385, -1, -1, -1, 284, -1, -1, 384, -1, + 386, 387, -1, -1, -1, 276, 99, 100, -1, -1, + -1, 40, 41, 284, 43, -1, -1, -1, 47, 48, + 49, 50, 51, -1, -1, 383, -1, 385, -1, 58, + 424, -1, 426, 427, -1, -1, -1, 66, 67, -1, + -1, 276, 428, -1, 40, 41, -1, 43, -1, 284, + -1, 47, -1, 447, 448, -1, 40, 41, 383, 43, + 385, -1, 58, 47, -1, 61, 424, -1, 426, 427, + 99, 100, -1, -1, 58, -1, 383, 61, 385, 68, + 69, -1, -1, 72, 73, 74, 75, 76, 77, 447, + 448, -1, -1, -1, 383, -1, 385, -1, -1, 424, + -1, 426, 427, 99, 100, 94, 95, 96, 97, 98, + -1, -1, 383, -1, 385, 99, 100, 424, -1, 426, + 427, -1, 447, 448, -1, 40, 41, -1, 43, -1, + -1, -1, 47, -1, -1, 424, -1, 426, 427, -1, + 447, 448, -1, 58, -1, -1, 61, -1, 383, -1, + 385, 66, 67, 424, -1, 426, 427, -1, 447, 448, + -1, -1, -1, -1, -1, 80, 81, 82, 83, 84, + 85, 86, 87, 88, 89, 90, 447, 448, -1, -1, + -1, -1, -1, -1, 99, 100, -1, 40, 41, 424, + 43, 426, 427, -1, 47, -1, -1, -1, -1, -1, + -1, -1, -1, 11, -1, 58, -1, -1, 61, -1, + -1, 19, 447, 448, 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, + 38, 39, 40, 41, -1, 43, -1, -1, -1, 47, + 48, 49, 50, 51, -1, -1, 99, 100, 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, - -1, -1, 100, 101, 48, 49, 50, 51, -1, -1, - -1, -1, 56, 57, 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, -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, 16, -1, 48, 49, 50, 51, - -1, -1, -1, -1, 56, -1, 58, -1, -1, -1, - -1, -1, -1, -1, 66, 67, -1, -1, 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, 40, 41, -1, 43, 100, 101, - -1, 47, -1, -1, -1, -1, 78, 79, -1, -1, - 16, -1, 58, -1, -1, 61, -1, -1, -1, -1, - -1, -1, -1, 95, -1, -1, 98, -1, 100, 101, - 102, 103, 104, 105, 40, 41, 42, 43, 44, 45, - 46, -1, 48, 49, 50, 51, 52, 53, 54, -1, - -1, -1, 58, 99, 100, 101, 62, -1, -1, -1, - 40, 41, -1, 43, -1, -1, -1, 47, -1, -1, - -1, -1, 78, 79, -1, -1, 16, -1, 58, -1, - -1, 61, -1, -1, -1, -1, -1, -1, -1, 95, - -1, -1, 98, -1, 100, 101, 102, 103, 104, 105, - 40, 41, 42, 43, 44, 45, 46, -1, 48, 49, - 50, 51, 52, 53, 54, -1, -1, -1, 58, 99, - 100, 101, 62, -1, -1, 17, 18, -1, 20, 21, - -1, -1, -1, -1, -1, -1, -1, -1, 78, 79, - -1, -1, -1, -1, -1, -1, -1, -1, 40, 41, - -1, 43, -1, -1, -1, 95, -1, -1, 98, -1, - 100, 101, 102, 103, 104, 105, 58, -1, -1, 61, - -1, -1, -1, -1, 66, 67, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, -1, - -1, -1, -1, -1, -1, -1, -1, 99, 100, 101, - 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, 40, 41, 56, 43, 58, - -1, -1, 47, 58, -1, -1, 61, 66, 67, -1, - -1, 66, 67, 58, -1, -1, 61, -1, -1, -1, - -1, -1, -1, -1, -1, 80, 81, 82, 83, 84, - 85, 86, 87, 88, 89, 90, -1, -1, -1, -1, - -1, 100, 101, -1, 99, 100, 101, -1, -1, -1, - 40, 41, -1, 43, 99, 100, 101, 47, 40, 41, - -1, 43, -1, -1, -1, 47, -1, -1, 58, -1, - -1, 61, -1, -1, -1, -1, 58, -1, -1, 61, - -1, -1, -1, -1, 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, 99, - 100, 101, -1, -1, -1, -1, -1, 99, 100, 101, - 91, 92, 93, 94, 95, 96, 97, 98, 55, -1, - -1, -1, -1, 60, -1, -1, -1, -1, 65, -1, + -1, 99, 100, 47, 48, 49, 50, 51, -1, -1, + 68, 69, 56, 57, 58, -1, 74, 75, 76, 77, + -1, -1, 66, 67, -1, -1, -1, -1, 40, 41, + -1, 43, -1, -1, -1, 47, 94, 95, 96, 97, + 98, -1, -1, -1, -1, -1, 58, 12, -1, 61, + -1, -1, -1, -1, 19, 99, 100, 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, 47, 48, 49, 50, 51, 99, 100, -1, + -1, 56, -1, 58, -1, -1, -1, -1, -1, -1, + -1, 66, 67, -1, -1, -1, -1, 40, 41, -1, + 43, -1, -1, -1, 47, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 58, 12, -1, 61, -1, + -1, -1, -1, 19, 99, 100, 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, 47, 48, 49, 50, 51, 99, 100, -1, -1, + 56, -1, 58, -1, -1, -1, -1, -1, -1, -1, + 66, 67, 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, -1, -1, -1, + 58, 59, -1, -1, 62, -1, -1, -1, 40, 41, + -1, 43, -1, 99, 100, 47, -1, -1, -1, -1, + 78, 79, -1, 16, -1, -1, 58, -1, -1, 61, + -1, -1, -1, -1, -1, -1, -1, 95, -1, -1, + 98, 99, 100, 101, 102, 103, 104, 40, 41, 42, + 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, + 53, 54, -1, -1, -1, 58, -1, 99, 100, 62, + -1, 64, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 78, 79, -1, 16, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 95, -1, -1, 98, 99, 100, 101, 102, + 103, 104, 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 59, -1, -1, + 58, -1, -1, 65, 62, -1, 68, 69, 70, 71, + 72, 73, 74, 75, 76, 77, -1, -1, -1, -1, + 78, 79, -1, 16, -1, -1, -1, -1, -1, 91, + 92, 93, 94, 95, 96, 97, 98, 95, -1, -1, + 98, 99, 100, 101, 102, 103, 104, 40, 41, 42, + 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 59, -1, -1, 58, -1, -1, 65, 62, + -1, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 77, -1, -1, -1, -1, 78, 79, -1, -1, -1, + -1, -1, -1, -1, 91, 92, 93, 94, 95, 96, + 97, 98, 95, -1, -1, 98, 99, 100, 101, 102, + 103, 104, 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, + 47, 48, 49, 50, 51, -1, -1, -1, -1, 56, + -1, 58, -1, -1, -1, -1, -1, -1, 55, 66, + 67, -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, + -1, -1, 99, 100, 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, @@ -4379,7 +4364,8 @@ namespace xsk { namespace gsc { namespace iw8 { -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, + -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, @@ -4413,106 +4399,101 @@ namespace xsk { namespace gsc { namespace iw8 { 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, + 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, 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, 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, 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, -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, -1, -1, - 74, 75, 76, 77, -1, -1, -1, -1, 92, 93, - 94, 95, 96, 97, 98, -1, -1, -1, -1, -1, - 94, 95, 96, 97, 98 + -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, 116, 117, 118, - 119, 120, 121, 122, 123, 190, 100, 190, 191, 191, - 54, 0, 118, 119, 120, 54, 80, 64, 64, 102, - 193, 170, 190, 16, 40, 41, 42, 43, 44, 45, - 46, 48, 49, 50, 51, 52, 53, 54, 58, 62, - 78, 79, 95, 98, 103, 104, 105, 155, 160, 161, - 162, 163, 164, 165, 166, 167, 168, 169, 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, 190, 191, - 58, 190, 191, 58, 54, 54, 155, 58, 59, 155, - 171, 172, 190, 155, 155, 104, 105, 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, 167, 168, 190, 191, 54, 62, 64, 56, - 129, 190, 58, 54, 62, 58, 54, 62, 58, 155, + 0, 11, 12, 13, 14, 15, 47, 100, 116, 117, + 118, 119, 120, 121, 122, 123, 191, 99, 100, 192, + 192, 54, 0, 118, 119, 120, 54, 80, 64, 64, + 101, 194, 170, 191, 16, 40, 41, 42, 43, 44, + 45, 46, 48, 49, 50, 51, 52, 53, 54, 58, + 62, 78, 79, 95, 98, 100, 102, 103, 104, 155, + 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, + 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, + 183, 184, 185, 186, 187, 188, 189, 191, 192, 193, + 194, 195, 196, 197, 198, 199, 55, 55, 60, 58, + 191, 192, 58, 191, 192, 58, 54, 54, 155, 58, + 59, 155, 171, 172, 191, 155, 155, 103, 104, 100, + 64, 65, 68, 69, 70, 71, 72, 73, 74, 75, + 76, 77, 91, 92, 93, 94, 95, 96, 97, 98, + 58, 61, 167, 168, 191, 192, 54, 62, 64, 56, + 129, 191, 58, 54, 62, 58, 54, 62, 58, 155, 155, 55, 60, 155, 60, 59, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, - 155, 155, 155, 155, 155, 155, 190, 62, 171, 172, - 190, 11, 19, 22, 23, 24, 26, 27, 28, 29, - 31, 32, 33, 34, 35, 36, 37, 38, 39, 57, - 58, 66, 67, 124, 125, 127, 128, 129, 131, 132, - 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, - 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, 157, 158, 159, 165, 166, 176, 177, 180, - 184, 185, 186, 187, 190, 155, 171, 190, 155, 171, - 190, 155, 55, 55, 155, 59, 155, 63, 59, 190, - 55, 54, 12, 124, 126, 155, 64, 54, 64, 54, - 124, 54, 54, 54, 54, 95, 193, 196, 63, 64, - 64, 64, 155, 64, 54, 54, 58, 165, 166, 180, - 180, 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, 155, 171, 12, 124, 64, 55, - 155, 27, 155, 130, 157, 158, 159, 180, 190, 155, - 63, 63, 64, 171, 171, 155, 54, 54, 54, 54, - 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, - 155, 59, 171, 59, 171, 59, 155, 54, 55, 64, - 55, 54, 55, 64, 30, 60, 55, 55, 55, 155, - 155, 155, 155, 54, 55, 54, 55, 54, 55, 171, - 124, 155, 124, 155, 156, 155, 190, 129, 64, 64, - 55, 55, 60, 55, 60, 55, 60, 171, 171, 171, - 55, 25, 55, 64, 55, 30, 64, 64, 172, 64, - 172, 64, 172, 55, 55, 55, 124, 64, 130, 124, - 155, 55, 55, 55, 55, 55, 64, 64, 64, 124, - 124 + 155, 155, 155, 155, 155, 155, 47, 100, 190, 62, + 171, 172, 191, 11, 19, 22, 23, 24, 26, 27, + 28, 29, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 57, 58, 66, 67, 124, 125, 127, 128, 129, + 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, + 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, + 151, 152, 153, 154, 157, 158, 159, 165, 166, 176, + 177, 180, 184, 185, 186, 187, 191, 155, 171, 191, + 155, 171, 191, 155, 55, 55, 155, 59, 155, 63, + 59, 191, 55, 54, 12, 124, 126, 155, 64, 54, + 64, 54, 124, 54, 54, 54, 54, 95, 194, 197, + 63, 64, 64, 64, 155, 64, 54, 54, 58, 165, + 166, 180, 180, 57, 125, 64, 64, 64, 64, 64, + 17, 18, 20, 21, 61, 66, 67, 80, 81, 82, + 83, 84, 85, 86, 87, 88, 89, 90, 59, 55, + 54, 59, 55, 54, 59, 60, 59, 155, 171, 12, + 124, 64, 55, 155, 27, 155, 130, 157, 158, 159, + 180, 191, 155, 63, 63, 64, 171, 171, 155, 54, + 54, 54, 54, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 59, 171, 59, 171, 59, 155, + 54, 55, 64, 55, 54, 55, 64, 30, 60, 55, + 55, 55, 155, 155, 155, 155, 54, 55, 54, 55, + 54, 55, 171, 124, 155, 124, 155, 156, 155, 191, + 129, 64, 64, 55, 55, 60, 55, 60, 55, 60, + 171, 171, 171, 55, 25, 55, 64, 55, 30, 64, + 64, 172, 64, 172, 64, 172, 55, 55, 55, 124, + 64, 130, 124, 155, 55, 55, 55, 55, 55, 64, + 64, 64, 124, 124 }; const unsigned char @@ -4537,10 +4518,10 @@ namespace xsk { namespace gsc { namespace iw8 { 162, 163, 164, 165, 165, 166, 166, 167, 167, 167, 167, 167, 167, 168, 168, 168, 168, 169, 170, 170, 170, 171, 171, 172, 172, 173, 174, 175, 175, 176, - 177, 177, 178, 179, 180, 180, 180, 180, 180, 180, - 180, 180, 180, 181, 182, 183, 184, 185, 186, 187, - 188, 189, 190, 191, 191, 192, 193, 194, 195, 195, - 196, 196, 197, 198 + 177, 178, 179, 180, 180, 180, 180, 180, 180, 180, + 180, 180, 181, 182, 183, 184, 185, 186, 187, 188, + 189, 190, 191, 191, 192, 192, 193, 194, 195, 196, + 196, 197, 197, 198, 199 }; const signed char @@ -4565,10 +4546,10 @@ namespace xsk { namespace gsc { namespace iw8 { 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, 7, 2, 1, - 2, 1, 1, 1 + 3, 3, 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, 1, 7, 2, + 1, 2, 1, 1, 1 }; @@ -4578,29 +4559,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, 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, - 640, 644, 649, 654, 655, 658, 659, 663, 665, 667, - 669, 671, 673, 678, 680, 682, 684, 689, 694, 696, - 699, 703, 706, 710, 712, 717, 722, 727, 729, 734, - 739, 741, 746, 751, 756, 757, 758, 759, 760, 761, - 762, 763, 764, 768, 773, 778, 783, 788, 793, 798, - 803, 808, 813, 818, 820, 825, 830, 835, 840, 842, - 847, 849, 854, 859 + 0, 259, 259, 260, 264, 266, 268, 270, 272, 274, + 279, 283, 288, 289, 290, 291, 292, 296, 301, 306, + 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, 346, 351, + 353, 358, 359, 363, 364, 368, 370, 372, 375, 379, + 381, 386, 388, 390, 395, 400, 402, 407, 412, 414, + 419, 421, 426, 431, 433, 438, 443, 448, 453, 458, + 463, 465, 470, 475, 477, 482, 487, 492, 497, 499, + 504, 509, 514, 519, 520, 521, 525, 526, 530, 532, + 534, 536, 538, 540, 542, 544, 546, 548, 550, 555, + 557, 562, 564, 569, 574, 576, 578, 580, 582, 584, + 586, 588, 590, 592, 594, 596, 598, 600, 602, 604, + 606, 608, 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, 640, + 641, 645, 650, 655, 656, 659, 660, 664, 666, 668, + 670, 672, 674, 679, 681, 683, 685, 690, 695, 697, + 700, 704, 707, 711, 713, 718, 723, 728, 730, 735, + 740, 745, 750, 755, 756, 757, 758, 759, 760, 761, + 762, 763, 767, 772, 777, 782, 787, 792, 797, 802, + 807, 812, 817, 819, 824, 826, 831, 836, 841, 846, + 848, 853, 855, 860, 865 }; void @@ -4633,9 +4614,9 @@ namespace xsk { namespace gsc { namespace iw8 { #line 13 "parser.ypp" } } } // xsk::gsc::iw8 -#line 4637 "parser.cpp" +#line 4618 "parser.cpp" -#line 863 "parser.ypp" +#line 869 "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 e144fd56..440f60a8 100644 --- a/src/iw8/xsk/parser.hpp +++ b/src/iw8/xsk/parser.hpp @@ -474,6 +474,7 @@ namespace xsk { namespace gsc { namespace iw8 { // expr_game char dummy19[sizeof (ast::expr_game::ptr)]; + // expr_identifier_nosize // expr_identifier char dummy20[sizeof (ast::expr_identifier::ptr)]; @@ -624,7 +625,6 @@ namespace xsk { namespace gsc { namespace iw8 { // stmt_while char dummy68[sizeof (ast::stmt_while::ptr)]; - // "field" // "path" // "identifier" // "string literal" @@ -727,7 +727,7 @@ namespace xsk { namespace gsc { namespace iw8 { TRUE = 44, // "true" FALSE = 45, // "false" UNDEFINED = 46, // "undefined" - SIZE = 47, // ".size" + SIZE = 47, // "size" GAME = 48, // "game" SELF = 49, // "self" ANIM = 50, // "anim" @@ -779,13 +779,13 @@ namespace xsk { namespace gsc { namespace iw8 { MUL = 96, // "*" DIV = 97, // "/" MOD = 98, // "%" - FIELD = 99, // "field" - PATH = 100, // "path" - IDENTIFIER = 101, // "identifier" - STRING = 102, // "string literal" - ISTRING = 103, // "localized string" - FLOAT = 104, // "float" - INTEGER = 105, // "integer" + PATH = 99, // "path" + IDENTIFIER = 100, // "identifier" + STRING = 101, // "string literal" + ISTRING = 102, // "localized string" + FLOAT = 103, // "float" + INTEGER = 104, // "integer" + SIZEOF = 105, // SIZEOF ADD_ARRAY = 106, // ADD_ARRAY THEN = 107, // THEN TERN = 108, // TERN @@ -860,7 +860,7 @@ namespace xsk { namespace gsc { namespace iw8 { S_TRUE = 44, // "true" S_FALSE = 45, // "false" S_UNDEFINED = 46, // "undefined" - S_SIZE = 47, // ".size" + S_SIZE = 47, // "size" S_GAME = 48, // "game" S_SELF = 49, // "self" S_ANIM = 50, // "anim" @@ -912,13 +912,13 @@ namespace xsk { namespace gsc { namespace iw8 { S_MUL = 96, // "*" S_DIV = 97, // "/" S_MOD = 98, // "%" - S_FIELD = 99, // "field" - S_PATH = 100, // "path" - S_IDENTIFIER = 101, // "identifier" - S_STRING = 102, // "string literal" - S_ISTRING = 103, // "localized string" - S_FLOAT = 104, // "float" - S_INTEGER = 105, // "integer" + S_PATH = 99, // "path" + S_IDENTIFIER = 100, // "identifier" + S_STRING = 101, // "string literal" + S_ISTRING = 102, // "localized string" + S_FLOAT = 103, // "float" + S_INTEGER = 104, // "integer" + S_SIZEOF = 105, // SIZEOF S_ADD_ARRAY = 106, // ADD_ARRAY S_THEN = 107, // THEN S_TERN = 108, // TERN @@ -1003,15 +1003,16 @@ namespace xsk { namespace gsc { namespace iw8 { S_expr_level = 187, // expr_level S_expr_animation = 188, // expr_animation S_expr_animtree = 189, // expr_animtree - S_expr_identifier = 190, // expr_identifier - S_expr_path = 191, // expr_path - S_expr_istring = 192, // expr_istring - S_expr_string = 193, // expr_string - 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_expr_identifier_nosize = 190, // expr_identifier_nosize + 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_vector = 195, // expr_vector + S_expr_float = 196, // expr_float + S_expr_integer = 197, // expr_integer + S_expr_false = 198, // expr_false + S_expr_true = 199 // expr_true }; }; @@ -1134,6 +1135,7 @@ namespace xsk { namespace gsc { namespace iw8 { value.move< ast::expr_game::ptr > (std::move (that.value)); break; + case symbol_kind::S_expr_identifier_nosize: // expr_identifier_nosize case symbol_kind::S_expr_identifier: // expr_identifier value.move< ast::expr_identifier::ptr > (std::move (that.value)); break; @@ -1333,7 +1335,6 @@ namespace xsk { namespace gsc { namespace iw8 { value.move< ast::stmt_while::ptr > (std::move (that.value)); break; - case symbol_kind::S_FIELD: // "field" case symbol_kind::S_PATH: // "path" case symbol_kind::S_IDENTIFIER: // "identifier" case symbol_kind::S_STRING: // "string literal" @@ -2440,6 +2441,7 @@ switch (yykind) value.template destroy< ast::expr_game::ptr > (); break; + case symbol_kind::S_expr_identifier_nosize: // expr_identifier_nosize case symbol_kind::S_expr_identifier: // expr_identifier value.template destroy< ast::expr_identifier::ptr > (); break; @@ -2639,7 +2641,6 @@ switch (yykind) value.template destroy< ast::stmt_while::ptr > (); break; - case symbol_kind::S_FIELD: // "field" case symbol_kind::S_PATH: // "path" case symbol_kind::S_IDENTIFIER: // "identifier" case symbol_kind::S_STRING: // "string literal" @@ -2745,7 +2746,7 @@ switch (yykind) { IW8_ASSERT (tok == token::IW8EOF || (token::IW8error <= tok && tok <= token::MOD) - || (token::ADD_ARRAY <= tok && tok <= token::POSTDEC)); + || (token::SIZEOF <= tok && tok <= token::POSTDEC)); } #if 201103L <= YY_CPLUSPLUS symbol_type (int tok, std::string v, location_type l) @@ -2755,7 +2756,7 @@ switch (yykind) : super_type(token_type (tok), v, l) #endif { - IW8_ASSERT ((token::FIELD <= tok && tok <= token::INTEGER)); + IW8_ASSERT ((token::PATH <= tok && tok <= token::INTEGER)); } }; @@ -4290,21 +4291,6 @@ switch (yykind) return symbol_type (token::MOD, l); } #endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_FIELD (std::string v, location_type l) - { - return symbol_type (token::FIELD, std::move (v), std::move (l)); - } -#else - static - symbol_type - make_FIELD (const std::string& v, const location_type& l) - { - return symbol_type (token::FIELD, v, l); - } -#endif #if 201103L <= YY_CPLUSPLUS static symbol_type @@ -4395,6 +4381,21 @@ switch (yykind) return symbol_type (token::INTEGER, v, l); } #endif +#if 201103L <= YY_CPLUSPLUS + static + symbol_type + make_SIZEOF (location_type l) + { + return symbol_type (token::SIZEOF, std::move (l)); + } +#else + static + symbol_type + make_SIZEOF (const location_type& l) + { + return symbol_type (token::SIZEOF, l); + } +#endif #if 201103L <= YY_CPLUSPLUS static symbol_type @@ -4874,9 +4875,9 @@ switch (yykind) /// Constants. enum { - yylast_ = 2404, ///< Last index in yytable_. - yynnts_ = 84, ///< Number of nonterminal symbols. - yyfinal_ = 21 ///< Termination state number. + yylast_ = 2278, ///< Last index in yytable_. + yynnts_ = 85, ///< Number of nonterminal symbols. + yyfinal_ = 22 ///< Termination state number. }; @@ -4988,6 +4989,7 @@ switch (yykind) value.copy< ast::expr_game::ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_expr_identifier_nosize: // expr_identifier_nosize case symbol_kind::S_expr_identifier: // expr_identifier value.copy< ast::expr_identifier::ptr > (YY_MOVE (that.value)); break; @@ -5187,7 +5189,6 @@ switch (yykind) value.copy< ast::stmt_while::ptr > (YY_MOVE (that.value)); break; - case symbol_kind::S_FIELD: // "field" case symbol_kind::S_PATH: // "path" case symbol_kind::S_IDENTIFIER: // "identifier" case symbol_kind::S_STRING: // "string literal" @@ -5312,6 +5313,7 @@ switch (yykind) value.move< ast::expr_game::ptr > (YY_MOVE (s.value)); break; + case symbol_kind::S_expr_identifier_nosize: // expr_identifier_nosize case symbol_kind::S_expr_identifier: // expr_identifier value.move< ast::expr_identifier::ptr > (YY_MOVE (s.value)); break; @@ -5511,7 +5513,6 @@ switch (yykind) value.move< ast::stmt_while::ptr > (YY_MOVE (s.value)); break; - case symbol_kind::S_FIELD: // "field" case symbol_kind::S_PATH: // "path" case symbol_kind::S_IDENTIFIER: // "identifier" case symbol_kind::S_STRING: // "string literal" @@ -5584,7 +5585,7 @@ switch (yykind) #line 13 "parser.ypp" } } } // xsk::gsc::iw8 -#line 5588 "parser.hpp" +#line 5589 "parser.hpp" diff --git a/src/s1/xsk/lexer.cpp b/src/s1/xsk/lexer.cpp index 5dadb9cd..af0f0caa 100644 --- a/src/s1/xsk/lexer.cpp +++ b/src/s1/xsk/lexer.cpp @@ -60,6 +60,7 @@ const std::unordered_map keywo { "true", parser::token::TRUE }, { "false", parser::token::FALSE }, { "undefined", parser::token::UNDEFINED }, + { "size", parser::token::SIZE }, { "game", parser::token::GAME }, { "self", parser::token::SELF }, { "anim", parser::token::ANIM }, @@ -85,8 +86,8 @@ bool buffer::push(char c) return true; } -reader::reader() : state(reader::end), buffer_pos(0), bytes_remaining(0), - last_byte(0), current_byte(0) { } +reader::reader() : state(reader::end), buffer_pos(0), + bytes_remaining(0), last_byte(0), current_byte(0) {} void reader::init(const char* data, size_t size) { @@ -174,7 +175,6 @@ auto lexer::lex() -> parser::symbol_type { buffer_.length = 0; state_ = state::start; - loc_.step(); while (true) { @@ -182,6 +182,7 @@ auto lexer::lex() -> parser::symbol_type auto& last = reader_.last_byte; auto& curr = reader_.current_byte; auto path = false; + loc_.step(); if (state == reader::end) { @@ -214,7 +215,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 != '*' && curr != '/') return parser::make_DIV(loc_); advance(); @@ -246,14 +247,35 @@ auto lexer::lex() -> parser::symbol_type } else if (last == '#' && curr == '/') { - reader_.advance(); + advance(); break; } - reader_.advance(); + advance(); } } } + else if (last == '@') + { + while (true) + { + if (state == reader::end) + throw comp_error(loc_, "unmatched script doc comment start ('/@')"); + + if (curr == '\n') + { + loc_.lines(); + loc_.step(); + } + else if (last == '@' && curr == '/') + { + advance(); + break; + } + + advance(); + } + } else if (last == '*') { while (true) @@ -268,11 +290,11 @@ auto lexer::lex() -> parser::symbol_type } else if (last == '*' && curr == '/') { - reader_.advance(); + advance(); break; } - reader_.advance(); + advance(); } } else if (last == '/') @@ -282,30 +304,10 @@ auto lexer::lex() -> parser::symbol_type if (state == reader::end) break; - if (last == '\\' && (curr == '\r' || curr == '\n')) - { - reader_.advance(); - - if (state == reader::end) - break; - - if (last == '\r') - { - if (curr != '\n') - throw comp_error(loc_, "invalid token ('\')"); - - reader_.advance(); - } - - loc_.lines(); - loc_.step(); - continue; - } - if (curr == '\n') break; - reader_.advance(); + advance(); } } continue; @@ -315,8 +317,8 @@ auto lexer::lex() -> parser::symbol_type if (!indev_) throw comp_error(loc_, "unmatched devblock end ('#/')"); - indev_ = false; advance(); + indev_ = false; return parser::make_DEVEND(loc_); } @@ -337,7 +339,7 @@ auto lexer::lex() -> parser::symbol_type state_ = state::preprocessor; goto lex_name; case '*': - if (curr != '/' && curr != '=') + if (curr != '=' && curr != '/') return parser::make_MUL(loc_); advance(); @@ -350,13 +352,9 @@ auto lexer::lex() -> parser::symbol_type state_ = state::string; goto lex_string; case '.': - advance(); - - if (state == reader::end) - throw comp_error(loc_, "unterminated field ('.')"); - - state_ = state::field; - goto lex_name_or_number; + if (curr < '0' || curr > '9') + return parser::make_DOT(loc_); + goto lex_number; case '(': return parser::make_LPAREN(loc_); case ')': @@ -480,7 +478,6 @@ auto lexer::lex() -> parser::symbol_type advance(); return parser::make_ASSIGN_RSHIFT(loc_); default: -lex_name_or_number: if (last >= '0' && last <= '9') goto lex_number; else if (last == '_' || last >= 'A' && last <= 'Z' || last >= 'a' && last <= 'z') @@ -562,23 +559,8 @@ lex_name: advance(); } - if (state_ == state::field) + if (state_ == state::preprocessor) { - if (path) - throw comp_error(loc_, "invalid field token '\\'"); - - if (std::string_view(buffer_.data, buffer_.length) == "size") - { - return parser::make_SIZE(loc_); - } - - return parser::make_FIELD(std::string(buffer_.data, buffer_.length), loc_); - } - else if (state_ == state::preprocessor) - { - if (path) - throw comp_error(loc_, "invalid preprocessor directive"); - auto token = parser::token::S1UNDEF; if (buffer_.length < 16) @@ -594,7 +576,8 @@ lex_name: } } - preprocessor(token); + preprocessor_run(token); + state_ = state::start; continue; } @@ -620,14 +603,11 @@ lex_name: } lex_number: - if (state_ == state::field) - buffer_.push('.'); - - if (state_ == state::field || last == '.' || last != '0' || (last == '0' && (curr != 'o' && curr != 'b' && curr != 'x'))) + if (last == '.' || last != '0' || (last == '0' && (curr != 'o' && curr != 'b' && curr != 'x'))) { buffer_.push(last); - auto dot = 0; + auto dot = last == '.' ? 1 : 0; auto flt = 0; while (true) @@ -663,10 +643,10 @@ lex_number: if (last == '\'') throw comp_error(loc_, "invalid number literal"); - if (state_ == state::field && dot || dot > 1 || flt > 1 || flt && buffer_.data[buffer_.length - 1] != 'f') + if (dot > 1 || flt > 1 || flt && buffer_.data[buffer_.length - 1] != 'f') throw comp_error(loc_, "invalid number literal"); - if (state_ == state::field || dot || flt) + if (dot || flt) return parser::make_FLOAT(std::string(buffer_.data, buffer_.length), loc_); return parser::make_INTEGER(std::string(buffer_.data, buffer_.length), loc_); @@ -681,7 +661,7 @@ lex_number: break; if (curr == '\'' && (last == '\'' || last == 'o') || (curr == 'o' && last == '\'')) - throw comp_error(loc_, "invalid octal literal"); + throw comp_error(loc_, "invalid octal literal"); if (curr == '\'') { @@ -771,18 +751,22 @@ lex_number: return parser::make_INTEGER(xsk::utils::string::hex_to_dec(buffer_.data), loc_); } - // cant get here! + + throw error("UNEXPECTED LEXER INTERNAL ERROR!"); } } void lexer::advance() { reader_.advance(); + loc_.end.column++; - // dont wrap comment marks '/\/' '/\*' outside strings - if (state_ == state::start && reader_.last_byte == '/') - return; + if (reader_.current_byte == '\\') [[unlikely]] + preprocessor_wrap(); +} +void lexer::preprocessor_wrap() +{ while (reader_.current_byte == '\\') { if (reader_.bytes_remaining == 1) @@ -824,7 +808,7 @@ void lexer::advance() } } -void lexer::preprocessor(parser::token::token_kind_type token) +void lexer::preprocessor_run(parser::token::token_kind_type token) { if (!clean_) throw comp_error(loc_, "invalid token ('#')"); diff --git a/src/s1/xsk/lexer.hpp b/src/s1/xsk/lexer.hpp index 34d4ddf8..a25c47ae 100644 --- a/src/s1/xsk/lexer.hpp +++ b/src/s1/xsk/lexer.hpp @@ -44,7 +44,7 @@ struct reader class lexer { - enum class state : std::uint8_t { start, string, localize, field, preprocessor }; + enum class state : std::uint8_t { start, string, localize, preprocessor }; reader reader_; buffer buffer_; @@ -66,7 +66,8 @@ public: private: void advance(); - void preprocessor(parser::token::token_kind_type token); + void preprocessor_wrap(); + void preprocessor_run(parser::token::token_kind_type token); }; } // namespace xsk::gsc::s1 diff --git a/src/s1/xsk/parser.cpp b/src/s1/xsk/parser.cpp index 0c280e5d..4a88b707 100644 --- a/src/s1/xsk/parser.cpp +++ b/src/s1/xsk/parser.cpp @@ -301,6 +301,7 @@ namespace xsk { namespace gsc { namespace s1 { value.YY_MOVE_OR_COPY< ast::expr_game::ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_expr_identifier_nosize: // expr_identifier_nosize case symbol_kind::S_expr_identifier: // expr_identifier value.YY_MOVE_OR_COPY< ast::expr_identifier::ptr > (YY_MOVE (that.value)); break; @@ -492,7 +493,6 @@ namespace xsk { namespace gsc { namespace s1 { value.YY_MOVE_OR_COPY< ast::stmt_while::ptr > (YY_MOVE (that.value)); break; - case symbol_kind::S_FIELD: // "field" case symbol_kind::S_PATH: // "path" case symbol_kind::S_IDENTIFIER: // "identifier" case symbol_kind::S_STRING: // "string literal" @@ -603,6 +603,7 @@ namespace xsk { namespace gsc { namespace s1 { value.move< ast::expr_game::ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_expr_identifier_nosize: // expr_identifier_nosize case symbol_kind::S_expr_identifier: // expr_identifier value.move< ast::expr_identifier::ptr > (YY_MOVE (that.value)); break; @@ -794,7 +795,6 @@ namespace xsk { namespace gsc { namespace s1 { value.move< ast::stmt_while::ptr > (YY_MOVE (that.value)); break; - case symbol_kind::S_FIELD: // "field" case symbol_kind::S_PATH: // "path" case symbol_kind::S_IDENTIFIER: // "identifier" case symbol_kind::S_STRING: // "string literal" @@ -905,6 +905,7 @@ namespace xsk { namespace gsc { namespace s1 { value.copy< ast::expr_game::ptr > (that.value); break; + case symbol_kind::S_expr_identifier_nosize: // expr_identifier_nosize case symbol_kind::S_expr_identifier: // expr_identifier value.copy< ast::expr_identifier::ptr > (that.value); break; @@ -1096,7 +1097,6 @@ namespace xsk { namespace gsc { namespace s1 { value.copy< ast::stmt_while::ptr > (that.value); break; - case symbol_kind::S_FIELD: // "field" case symbol_kind::S_PATH: // "path" case symbol_kind::S_IDENTIFIER: // "identifier" case symbol_kind::S_STRING: // "string literal" @@ -1206,6 +1206,7 @@ namespace xsk { namespace gsc { namespace s1 { value.move< ast::expr_game::ptr > (that.value); break; + case symbol_kind::S_expr_identifier_nosize: // expr_identifier_nosize case symbol_kind::S_expr_identifier: // expr_identifier value.move< ast::expr_identifier::ptr > (that.value); break; @@ -1397,7 +1398,6 @@ namespace xsk { namespace gsc { namespace s1 { value.move< ast::stmt_while::ptr > (that.value); break; - case symbol_kind::S_FIELD: // "field" case symbol_kind::S_PATH: // "path" case symbol_kind::S_IDENTIFIER: // "identifier" case symbol_kind::S_STRING: // "string literal" @@ -1762,6 +1762,7 @@ namespace xsk { namespace gsc { namespace s1 { yylhs.value.emplace< ast::expr_game::ptr > (); break; + case symbol_kind::S_expr_identifier_nosize: // expr_identifier_nosize case symbol_kind::S_expr_identifier: // expr_identifier yylhs.value.emplace< ast::expr_identifier::ptr > (); break; @@ -1953,7 +1954,6 @@ namespace xsk { namespace gsc { namespace s1 { yylhs.value.emplace< ast::stmt_while::ptr > (); break; - case symbol_kind::S_FIELD: // "field" case symbol_kind::S_PATH: // "path" case symbol_kind::S_IDENTIFIER: // "identifier" case symbol_kind::S_STRING: // "string literal" @@ -1984,1315 +1984,1321 @@ namespace xsk { namespace gsc { namespace s1 { switch (yyn) { case 2: // root: program -#line 254 "parser.ypp" +#line 255 "parser.ypp" { ast = std::move(yystack_[0].value.as < ast::program::ptr > ()); } #line 1990 "parser.cpp" break; case 3: // root: %empty -#line 255 "parser.ypp" +#line 256 "parser.ypp" { ast = std::make_unique(yylhs.location); } #line 1996 "parser.cpp" break; case 4: // program: program inline -#line 260 "parser.ypp" +#line 261 "parser.ypp" { yylhs.value.as < ast::program::ptr > () = std::move(yystack_[1].value.as < ast::program::ptr > ()); } #line 2002 "parser.cpp" break; case 5: // program: program include -#line 262 "parser.ypp" +#line 263 "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" break; case 6: // program: program declaration -#line 264 "parser.ypp" +#line 265 "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" break; case 7: // program: inline -#line 266 "parser.ypp" +#line 267 "parser.ypp" { yylhs.value.as < ast::program::ptr > () = std::make_unique(yylhs.location); } #line 2020 "parser.cpp" break; case 8: // program: include -#line 268 "parser.ypp" +#line 269 "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" break; case 9: // program: declaration -#line 270 "parser.ypp" +#line 271 "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" break; case 10: // inline: "#inline" expr_path ";" -#line 274 "parser.ypp" +#line 275 "parser.ypp" { lexer.push_header(yystack_[1].value.as < ast::expr_path::ptr > ()->value); } #line 2038 "parser.cpp" break; case 11: // include: "#include" expr_path ";" -#line 279 "parser.ypp" +#line 280 "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" break; case 12: // declaration: "/#" -#line 283 "parser.ypp" +#line 284 "parser.ypp" { yylhs.value.as < ast::decl > ().as_dev_begin = std::make_unique(yylhs.location); } #line 2050 "parser.cpp" break; case 13: // declaration: "#/" -#line 284 "parser.ypp" +#line 285 "parser.ypp" { yylhs.value.as < ast::decl > ().as_dev_end = std::make_unique(yylhs.location); } #line 2056 "parser.cpp" break; case 14: // declaration: decl_usingtree -#line 285 "parser.ypp" +#line 286 "parser.ypp" { yylhs.value.as < ast::decl > ().as_usingtree = std::move(yystack_[0].value.as < ast::decl_usingtree::ptr > ()); } #line 2062 "parser.cpp" break; case 15: // declaration: decl_constant -#line 286 "parser.ypp" +#line 287 "parser.ypp" { yylhs.value.as < ast::decl > ().as_constant = std::move(yystack_[0].value.as < ast::decl_constant::ptr > ()); } #line 2068 "parser.cpp" break; case 16: // declaration: decl_thread -#line 287 "parser.ypp" +#line 288 "parser.ypp" { yylhs.value.as < ast::decl > ().as_thread = std::move(yystack_[0].value.as < ast::decl_thread::ptr > ()); } #line 2074 "parser.cpp" break; case 17: // decl_usingtree: "#using_animtree" "(" expr_string ")" ";" -#line 292 "parser.ypp" +#line 293 "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" break; case 18: // decl_constant: expr_identifier "=" expr ";" -#line 297 "parser.ypp" +#line 298 "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" break; case 19: // decl_thread: expr_identifier "(" expr_parameters ")" stmt_block -#line 302 "parser.ypp" +#line 303 "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" break; case 20: // stmt: stmt_block -#line 306 "parser.ypp" +#line 307 "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_call -#line 307 "parser.ypp" +#line 308 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_call = std::move(yystack_[0].value.as < ast::stmt_call::ptr > ()); } #line 2104 "parser.cpp" break; case 22: // stmt: stmt_assign -#line 308 "parser.ypp" +#line 309 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_assign = std::move(yystack_[0].value.as < ast::stmt_assign::ptr > ()); } #line 2110 "parser.cpp" break; case 23: // stmt: stmt_endon -#line 309 "parser.ypp" +#line 310 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_endon = std::move(yystack_[0].value.as < ast::stmt_endon::ptr > ()); } #line 2116 "parser.cpp" break; case 24: // stmt: stmt_notify -#line 310 "parser.ypp" +#line 311 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_notify = std::move(yystack_[0].value.as < ast::stmt_notify::ptr > ()); } #line 2122 "parser.cpp" break; case 25: // stmt: stmt_wait -#line 311 "parser.ypp" +#line 312 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_wait = std::move(yystack_[0].value.as < ast::stmt_wait::ptr > ()); } #line 2128 "parser.cpp" break; case 26: // stmt: stmt_waittill -#line 312 "parser.ypp" +#line 313 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_waittill = std::move(yystack_[0].value.as < ast::stmt_waittill::ptr > ()); } #line 2134 "parser.cpp" break; case 27: // stmt: stmt_waittillmatch -#line 313 "parser.ypp" +#line 314 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_waittillmatch = std::move(yystack_[0].value.as < ast::stmt_waittillmatch::ptr > ()); } #line 2140 "parser.cpp" break; case 28: // stmt: stmt_waittillframeend -#line 314 "parser.ypp" +#line 315 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_waittillframeend = std::move(yystack_[0].value.as < ast::stmt_waittillframeend::ptr > ()); } #line 2146 "parser.cpp" break; case 29: // stmt: stmt_waitframe -#line 315 "parser.ypp" +#line 316 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_waitframe = std::move(yystack_[0].value.as < ast::stmt_waitframe::ptr > ()); } #line 2152 "parser.cpp" break; case 30: // stmt: stmt_if -#line 316 "parser.ypp" +#line 317 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_if = std::move(yystack_[0].value.as < ast::stmt_if::ptr > ()); } #line 2158 "parser.cpp" break; case 31: // stmt: stmt_ifelse -#line 317 "parser.ypp" +#line 318 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_ifelse = std::move(yystack_[0].value.as < ast::stmt_ifelse::ptr > ()); } #line 2164 "parser.cpp" break; case 32: // stmt: stmt_while -#line 318 "parser.ypp" +#line 319 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_while = std::move(yystack_[0].value.as < ast::stmt_while::ptr > ()); } #line 2170 "parser.cpp" break; case 33: // stmt: stmt_dowhile -#line 319 "parser.ypp" +#line 320 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_dowhile = std::move(yystack_[0].value.as < ast::stmt_dowhile::ptr > ()); } #line 2176 "parser.cpp" break; case 34: // stmt: stmt_for -#line 320 "parser.ypp" +#line 321 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_for = std::move(yystack_[0].value.as < ast::stmt_for::ptr > ()); } #line 2182 "parser.cpp" break; case 35: // stmt: stmt_foreach -#line 321 "parser.ypp" +#line 322 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_foreach = std::move(yystack_[0].value.as < ast::stmt_foreach::ptr > ()); } #line 2188 "parser.cpp" break; case 36: // stmt: stmt_switch -#line 322 "parser.ypp" +#line 323 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_switch = std::move(yystack_[0].value.as < ast::stmt_switch::ptr > ()); } #line 2194 "parser.cpp" break; case 37: // stmt: stmt_case -#line 323 "parser.ypp" +#line 324 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_case = std::move(yystack_[0].value.as < ast::stmt_case::ptr > ()); } #line 2200 "parser.cpp" break; case 38: // stmt: stmt_default -#line 324 "parser.ypp" +#line 325 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_default = std::move(yystack_[0].value.as < ast::stmt_default::ptr > ()); } #line 2206 "parser.cpp" break; case 39: // stmt: stmt_break -#line 325 "parser.ypp" +#line 326 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_break = std::move(yystack_[0].value.as < ast::stmt_break::ptr > ()); } #line 2212 "parser.cpp" break; case 40: // stmt: stmt_continue -#line 326 "parser.ypp" +#line 327 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_continue = std::move(yystack_[0].value.as < ast::stmt_continue::ptr > ()); } #line 2218 "parser.cpp" break; case 41: // stmt: stmt_return -#line 327 "parser.ypp" +#line 328 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_return = std::move(yystack_[0].value.as < ast::stmt_return::ptr > ()); } #line 2224 "parser.cpp" break; case 42: // stmt: stmt_breakpoint -#line 328 "parser.ypp" +#line 329 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_breakpoint = std::move(yystack_[0].value.as < ast::stmt_breakpoint::ptr > ()); } #line 2230 "parser.cpp" break; case 43: // stmt: stmt_prof_begin -#line 329 "parser.ypp" +#line 330 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_prof_begin = std::move(yystack_[0].value.as < ast::stmt_prof_begin::ptr > ()); } #line 2236 "parser.cpp" break; case 44: // stmt: stmt_prof_end -#line 330 "parser.ypp" +#line 331 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_prof_end = std::move(yystack_[0].value.as < ast::stmt_prof_end::ptr > ()); } #line 2242 "parser.cpp" break; case 45: // stmt_or_dev: stmt -#line 334 "parser.ypp" +#line 335 "parser.ypp" { yylhs.value.as < ast::stmt > () = std::move(yystack_[0].value.as < ast::stmt > ()); } #line 2248 "parser.cpp" break; case 46: // stmt_or_dev: stmt_dev -#line 335 "parser.ypp" +#line 336 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_dev = std::move(yystack_[0].value.as < ast::stmt_dev::ptr > ()); } #line 2254 "parser.cpp" break; case 47: // stmt_list: stmt_list stmt -#line 340 "parser.ypp" +#line 341 "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 2260 "parser.cpp" break; case 48: // stmt_list: stmt -#line 342 "parser.ypp" +#line 343 "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 2266 "parser.cpp" break; case 49: // stmt_or_dev_list: stmt_or_dev_list stmt_or_dev -#line 347 "parser.ypp" +#line 348 "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 2272 "parser.cpp" break; case 50: // stmt_or_dev_list: stmt_or_dev -#line 349 "parser.ypp" +#line 350 "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 2278 "parser.cpp" break; case 51: // stmt_dev: "/#" stmt_list "#/" -#line 353 "parser.ypp" +#line 354 "parser.ypp" { yylhs.value.as < ast::stmt_dev::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::stmt_list::ptr > ())); } #line 2284 "parser.cpp" break; case 52: // stmt_dev: "/#" "#/" -#line 354 "parser.ypp" +#line 355 "parser.ypp" { yylhs.value.as < ast::stmt_dev::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } #line 2290 "parser.cpp" break; case 53: // stmt_block: "{" stmt_or_dev_list "}" -#line 358 "parser.ypp" +#line 359 "parser.ypp" { yylhs.value.as < ast::stmt_list::ptr > () = std::move(yystack_[1].value.as < ast::stmt_list::ptr > ()); } #line 2296 "parser.cpp" break; case 54: // stmt_block: "{" "}" -#line 359 "parser.ypp" +#line 360 "parser.ypp" { yylhs.value.as < ast::stmt_list::ptr > () = std::make_unique(yylhs.location); } #line 2302 "parser.cpp" break; case 55: // stmt_expr: expr_assign -#line 364 "parser.ypp" +#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 2308 "parser.cpp" break; case 56: // stmt_expr: expr_increment -#line 366 "parser.ypp" +#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 2314 "parser.cpp" break; case 57: // stmt_expr: expr_decrement -#line 368 "parser.ypp" +#line 369 "parser.ypp" { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } #line 2320 "parser.cpp" break; case 58: // stmt_expr: %empty -#line 370 "parser.ypp" +#line 371 "parser.ypp" { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } #line 2326 "parser.cpp" break; case 59: // stmt_call: expr_call ";" -#line 375 "parser.ypp" +#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_call::ptr > ()))); } #line 2332 "parser.cpp" break; case 60: // stmt_call: expr_method ";" -#line 377 "parser.ypp" +#line 378 "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 2338 "parser.cpp" break; case 61: // stmt_assign: expr_assign ";" -#line 382 "parser.ypp" +#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 2344 "parser.cpp" break; case 62: // stmt_assign: expr_increment ";" -#line 384 "parser.ypp" +#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 2350 "parser.cpp" break; case 63: // stmt_assign: expr_decrement ";" -#line 386 "parser.ypp" +#line 387 "parser.ypp" { yylhs.value.as < ast::stmt_assign::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } #line 2356 "parser.cpp" break; case 64: // stmt_endon: expr_object "endon" "(" expr ")" ";" -#line 391 "parser.ypp" +#line 392 "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 2362 "parser.cpp" break; case 65: // stmt_notify: expr_object "notify" "(" expr "," expr_arguments_no_empty ")" ";" -#line 396 "parser.ypp" +#line 397 "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 2368 "parser.cpp" break; case 66: // stmt_notify: expr_object "notify" "(" expr ")" ";" -#line 398 "parser.ypp" +#line 399 "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 2374 "parser.cpp" break; case 67: // stmt_wait: "wait" expr ";" -#line 403 "parser.ypp" +#line 404 "parser.ypp" { yylhs.value.as < ast::stmt_wait::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } #line 2380 "parser.cpp" break; case 68: // stmt_waittill: expr_object "waittill" "(" expr "," expr_arguments_no_empty ")" ";" -#line 408 "parser.ypp" +#line 409 "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 2386 "parser.cpp" break; case 69: // stmt_waittill: expr_object "waittill" "(" expr ")" ";" -#line 410 "parser.ypp" +#line 411 "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 2392 "parser.cpp" break; case 70: // stmt_waittillmatch: expr_object "waittillmatch" "(" expr "," expr_arguments_no_empty ")" ";" -#line 415 "parser.ypp" +#line 416 "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 2398 "parser.cpp" break; case 71: // stmt_waittillmatch: expr_object "waittillmatch" "(" expr ")" ";" -#line 417 "parser.ypp" +#line 418 "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 2404 "parser.cpp" break; case 72: // stmt_waittillframeend: "waittillframeend" ";" -#line 422 "parser.ypp" +#line 423 "parser.ypp" { yylhs.value.as < ast::stmt_waittillframeend::ptr > () = std::make_unique(yylhs.location); } #line 2410 "parser.cpp" break; case 73: // stmt_waitframe: "waitframe" ";" -#line 427 "parser.ypp" +#line 428 "parser.ypp" { yylhs.value.as < ast::stmt_waitframe::ptr > () = std::make_unique(yylhs.location); } #line 2416 "parser.cpp" break; case 74: // stmt_waitframe: "waitframe" "(" ")" ";" -#line 429 "parser.ypp" +#line 430 "parser.ypp" { yylhs.value.as < ast::stmt_waitframe::ptr > () = std::make_unique(yylhs.location); } #line 2422 "parser.cpp" break; case 75: // stmt_if: "if" "(" expr ")" stmt -#line 434 "parser.ypp" +#line 435 "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 2428 "parser.cpp" break; case 76: // stmt_ifelse: "if" "(" expr ")" stmt "else" stmt -#line 439 "parser.ypp" +#line 440 "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 2434 "parser.cpp" break; case 77: // stmt_while: "while" "(" expr ")" stmt -#line 444 "parser.ypp" +#line 445 "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 2440 "parser.cpp" break; case 78: // stmt_dowhile: "do" stmt "while" "(" expr ")" ";" -#line 449 "parser.ypp" +#line 450 "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 2446 "parser.cpp" break; case 79: // stmt_for: "for" "(" stmt_expr ";" expr_or_empty ";" stmt_expr ")" stmt -#line 454 "parser.ypp" +#line 455 "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 2452 "parser.cpp" break; case 80: // stmt_foreach: "foreach" "(" expr_identifier "in" expr ")" stmt -#line 459 "parser.ypp" +#line 460 "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 2458 "parser.cpp" break; case 81: // stmt_foreach: "foreach" "(" expr_identifier "," expr_identifier "in" expr ")" stmt -#line 461 "parser.ypp" +#line 462 "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 2464 "parser.cpp" break; case 82: // stmt_switch: "switch" "(" expr ")" stmt_block -#line 466 "parser.ypp" +#line 467 "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 2470 "parser.cpp" break; case 83: // stmt_case: "case" expr_integer ":" -#line 471 "parser.ypp" +#line 472 "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 2476 "parser.cpp" break; case 84: // stmt_case: "case" expr_string ":" -#line 473 "parser.ypp" +#line 474 "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 2482 "parser.cpp" break; case 85: // stmt_default: "default" ":" -#line 478 "parser.ypp" +#line 479 "parser.ypp" { yylhs.value.as < ast::stmt_default::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } #line 2488 "parser.cpp" break; case 86: // stmt_break: "break" ";" -#line 483 "parser.ypp" +#line 484 "parser.ypp" { yylhs.value.as < ast::stmt_break::ptr > () = std::make_unique(yylhs.location); } #line 2494 "parser.cpp" break; case 87: // stmt_continue: "continue" ";" -#line 488 "parser.ypp" +#line 489 "parser.ypp" { yylhs.value.as < ast::stmt_continue::ptr > () = std::make_unique(yylhs.location); } #line 2500 "parser.cpp" break; case 88: // stmt_return: "return" expr ";" -#line 493 "parser.ypp" +#line 494 "parser.ypp" { yylhs.value.as < ast::stmt_return::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } #line 2506 "parser.cpp" break; case 89: // stmt_return: "return" ";" -#line 495 "parser.ypp" +#line 496 "parser.ypp" { yylhs.value.as < ast::stmt_return::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } #line 2512 "parser.cpp" break; case 90: // stmt_breakpoint: "breakpoint" ";" -#line 500 "parser.ypp" +#line 501 "parser.ypp" { yylhs.value.as < ast::stmt_breakpoint::ptr > () = std::make_unique(yylhs.location); } #line 2518 "parser.cpp" break; case 91: // stmt_prof_begin: "prof_begin" "(" expr_arguments ")" ";" -#line 505 "parser.ypp" +#line 506 "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 2524 "parser.cpp" break; case 92: // stmt_prof_end: "prof_end" "(" expr_arguments ")" ";" -#line 510 "parser.ypp" +#line 511 "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 2530 "parser.cpp" break; case 93: // expr: expr_ternary -#line 514 "parser.ypp" +#line 515 "parser.ypp" { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } #line 2536 "parser.cpp" break; case 94: // expr: expr_binary -#line 515 "parser.ypp" +#line 516 "parser.ypp" { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } #line 2542 "parser.cpp" break; case 95: // expr: expr_primitive -#line 516 "parser.ypp" +#line 517 "parser.ypp" { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } #line 2548 "parser.cpp" break; case 96: // expr_or_empty: expr -#line 520 "parser.ypp" +#line 521 "parser.ypp" { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } #line 2554 "parser.cpp" break; case 97: // expr_or_empty: %empty -#line 521 "parser.ypp" +#line 522 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location); } #line 2560 "parser.cpp" break; case 98: // expr_assign: expr_object "=" expr -#line 526 "parser.ypp" +#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 2566 "parser.cpp" break; case 99: // expr_assign: expr_object "|=" expr -#line 528 "parser.ypp" +#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 2572 "parser.cpp" break; case 100: // expr_assign: expr_object "&=" expr -#line 530 "parser.ypp" +#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 2578 "parser.cpp" break; case 101: // expr_assign: expr_object "^=" expr -#line 532 "parser.ypp" +#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 2584 "parser.cpp" break; case 102: // expr_assign: expr_object "<<=" expr -#line 534 "parser.ypp" +#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 2590 "parser.cpp" break; case 103: // expr_assign: expr_object ">>=" expr -#line 536 "parser.ypp" +#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 2596 "parser.cpp" break; case 104: // expr_assign: expr_object "+=" expr -#line 538 "parser.ypp" +#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 2602 "parser.cpp" break; case 105: // expr_assign: expr_object "-=" expr -#line 540 "parser.ypp" +#line 541 "parser.ypp" { yylhs.value.as < ast::expr > ().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_assign: expr_object "*=" expr -#line 542 "parser.ypp" +#line 543 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } #line 2614 "parser.cpp" break; case 107: // expr_assign: expr_object "/=" expr -#line 544 "parser.ypp" +#line 545 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } #line 2620 "parser.cpp" break; case 108: // expr_assign: expr_object "%=" expr -#line 546 "parser.ypp" +#line 547 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } #line 2626 "parser.cpp" break; case 109: // expr_increment: "++" expr_object -#line 551 "parser.ypp" +#line 552 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ()), true); } #line 2632 "parser.cpp" break; case 110: // expr_increment: expr_object "++" -#line 553 "parser.ypp" +#line 554 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ()), false); } #line 2638 "parser.cpp" break; case 111: // expr_decrement: "--" expr_object -#line 558 "parser.ypp" +#line 559 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ()), true); } #line 2644 "parser.cpp" break; case 112: // expr_decrement: expr_object "--" -#line 560 "parser.ypp" +#line 561 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ()), false); } #line 2650 "parser.cpp" break; case 113: // expr_ternary: expr "?" expr ":" expr -#line 565 "parser.ypp" +#line 566 "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 2656 "parser.cpp" break; case 114: // expr_binary: expr "||" expr -#line 570 "parser.ypp" +#line 571 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } #line 2662 "parser.cpp" break; case 115: // expr_binary: expr "&&" expr -#line 572 "parser.ypp" +#line 573 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } #line 2668 "parser.cpp" break; case 116: // expr_binary: expr "==" expr -#line 574 "parser.ypp" +#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 2674 "parser.cpp" break; case 117: // expr_binary: expr "!=" expr -#line 576 "parser.ypp" +#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 2680 "parser.cpp" break; case 118: // expr_binary: expr "<=" expr -#line 578 "parser.ypp" +#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 2686 "parser.cpp" break; case 119: // expr_binary: expr ">=" expr -#line 580 "parser.ypp" +#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 2692 "parser.cpp" break; case 120: // expr_binary: expr "<" expr -#line 582 "parser.ypp" +#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 2698 "parser.cpp" break; case 121: // expr_binary: expr ">" expr -#line 584 "parser.ypp" +#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 2704 "parser.cpp" break; case 122: // expr_binary: expr "|" expr -#line 586 "parser.ypp" +#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 2710 "parser.cpp" break; case 123: // expr_binary: expr "&" expr -#line 588 "parser.ypp" +#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 2716 "parser.cpp" break; case 124: // expr_binary: expr "^" expr -#line 590 "parser.ypp" +#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 2722 "parser.cpp" break; case 125: // expr_binary: expr "<<" expr -#line 592 "parser.ypp" +#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 2728 "parser.cpp" break; case 126: // expr_binary: expr ">>" expr -#line 594 "parser.ypp" +#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 2734 "parser.cpp" break; case 127: // expr_binary: expr "+" expr -#line 596 "parser.ypp" +#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 2740 "parser.cpp" break; case 128: // expr_binary: expr "-" expr -#line 598 "parser.ypp" +#line 599 "parser.ypp" { yylhs.value.as < ast::expr > ().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_binary: expr "*" expr -#line 600 "parser.ypp" +#line 601 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } #line 2752 "parser.cpp" break; case 130: // expr_binary: expr "/" expr -#line 602 "parser.ypp" +#line 603 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } #line 2758 "parser.cpp" break; case 131: // expr_binary: expr "%" expr -#line 604 "parser.ypp" +#line 605 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } #line 2764 "parser.cpp" break; case 132: // expr_primitive: expr_complement -#line 608 "parser.ypp" +#line 609 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_complement::ptr > ()); } #line 2770 "parser.cpp" break; case 133: // expr_primitive: expr_not -#line 609 "parser.ypp" +#line 610 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_not::ptr > ()); } #line 2776 "parser.cpp" break; case 134: // expr_primitive: expr_call -#line 610 "parser.ypp" +#line 611 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_call::ptr > ()); } #line 2782 "parser.cpp" break; case 135: // expr_primitive: expr_method -#line 611 "parser.ypp" +#line 612 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_method::ptr > ()); } #line 2788 "parser.cpp" break; case 136: // expr_primitive: expr_add_array -#line 612 "parser.ypp" +#line 613 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_add_array::ptr > ()); } #line 2794 "parser.cpp" break; case 137: // expr_primitive: expr_reference -#line 613 "parser.ypp" +#line 614 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_reference::ptr > ()); } #line 2800 "parser.cpp" break; case 138: // expr_primitive: expr_array -#line 614 "parser.ypp" +#line 615 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_array::ptr > ()); } #line 2806 "parser.cpp" break; case 139: // expr_primitive: expr_field -#line 615 "parser.ypp" +#line 616 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_field::ptr > ()); } #line 2812 "parser.cpp" break; case 140: // expr_primitive: expr_size -#line 616 "parser.ypp" +#line 617 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_size::ptr > ()); } #line 2818 "parser.cpp" break; case 141: // expr_primitive: expr_paren -#line 617 "parser.ypp" +#line 618 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_paren::ptr > ()); } #line 2824 "parser.cpp" break; case 142: // expr_primitive: expr_thisthread -#line 618 "parser.ypp" +#line 619 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_thisthread::ptr > ()); } #line 2830 "parser.cpp" break; case 143: // expr_primitive: expr_empty_array -#line 619 "parser.ypp" +#line 620 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_empty_array::ptr > ()); } #line 2836 "parser.cpp" break; case 144: // expr_primitive: expr_undefined -#line 620 "parser.ypp" +#line 621 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_undefined::ptr > ()); } #line 2842 "parser.cpp" break; case 145: // expr_primitive: expr_game -#line 621 "parser.ypp" +#line 622 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_game::ptr > ()); } #line 2848 "parser.cpp" break; case 146: // expr_primitive: expr_self -#line 622 "parser.ypp" +#line 623 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_self::ptr > ()); } #line 2854 "parser.cpp" break; case 147: // expr_primitive: expr_anim -#line 623 "parser.ypp" +#line 624 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_anim::ptr > ()); } #line 2860 "parser.cpp" break; case 148: // expr_primitive: expr_level -#line 624 "parser.ypp" +#line 625 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_level::ptr > ()); } #line 2866 "parser.cpp" break; case 149: // expr_primitive: expr_animation -#line 625 "parser.ypp" +#line 626 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_animation::ptr > ()); } #line 2872 "parser.cpp" break; case 150: // expr_primitive: expr_animtree -#line 626 "parser.ypp" +#line 627 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_animtree::ptr > ()); } #line 2878 "parser.cpp" break; case 151: // expr_primitive: expr_identifier -#line 627 "parser.ypp" +#line 628 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ()); } #line 2884 "parser.cpp" break; case 152: // expr_primitive: expr_istring -#line 628 "parser.ypp" +#line 629 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_istring::ptr > ()); } #line 2890 "parser.cpp" break; case 153: // expr_primitive: expr_string -#line 629 "parser.ypp" +#line 630 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_string::ptr > ()); } #line 2896 "parser.cpp" break; case 154: // expr_primitive: expr_vector -#line 630 "parser.ypp" +#line 631 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_vector::ptr > ()); } #line 2902 "parser.cpp" break; case 155: // expr_primitive: expr_float -#line 631 "parser.ypp" +#line 632 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_float::ptr > ()); } #line 2908 "parser.cpp" break; case 156: // expr_primitive: expr_integer -#line 632 "parser.ypp" +#line 633 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_integer::ptr > ()); } #line 2914 "parser.cpp" break; case 157: // expr_primitive: expr_false -#line 633 "parser.ypp" +#line 634 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_false::ptr > ()); } #line 2920 "parser.cpp" break; case 158: // expr_primitive: expr_true -#line 634 "parser.ypp" +#line 635 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_true::ptr > ()); } #line 2926 "parser.cpp" break; case 159: // expr_complement: "~" expr -#line 639 "parser.ypp" +#line 640 "parser.ypp" { yylhs.value.as < ast::expr_complement::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } #line 2932 "parser.cpp" break; case 160: // expr_not: "!" expr -#line 644 "parser.ypp" +#line 645 "parser.ypp" { yylhs.value.as < ast::expr_not::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } #line 2938 "parser.cpp" break; case 161: // expr_call: expr_function -#line 648 "parser.ypp" +#line 649 "parser.ypp" { yylhs.value.as < ast::expr_call::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::call > ())); } #line 2944 "parser.cpp" break; case 162: // expr_call: expr_pointer -#line 649 "parser.ypp" +#line 650 "parser.ypp" { yylhs.value.as < ast::expr_call::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::call > ())); } #line 2950 "parser.cpp" break; case 163: // expr_method: expr_object expr_function -#line 652 "parser.ypp" +#line 653 "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 2956 "parser.cpp" break; case 164: // expr_method: expr_object expr_pointer -#line 653 "parser.ypp" +#line 654 "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 2962 "parser.cpp" break; case 165: // expr_function: expr_identifier "(" expr_arguments ")" -#line 658 "parser.ypp" +#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::normal); } #line 2968 "parser.cpp" break; case 166: // expr_function: expr_path "::" expr_identifier "(" expr_arguments ")" -#line 660 "parser.ypp" +#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::normal); } #line 2974 "parser.cpp" break; case 167: // expr_function: "thread" expr_identifier "(" expr_arguments ")" -#line 662 "parser.ypp" +#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::thread); } #line 2980 "parser.cpp" break; case 168: // expr_function: "thread" expr_path "::" expr_identifier "(" expr_arguments ")" -#line 664 "parser.ypp" +#line 665 "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 2986 "parser.cpp" break; case 169: // expr_function: "childthread" expr_identifier "(" expr_arguments ")" -#line 666 "parser.ypp" +#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::childthread); } #line 2992 "parser.cpp" break; case 170: // expr_function: "childthread" expr_path "::" expr_identifier "(" expr_arguments ")" -#line 668 "parser.ypp" +#line 669 "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 2998 "parser.cpp" break; case 171: // expr_pointer: "[" "[" expr "]" "]" "(" expr_arguments ")" -#line 673 "parser.ypp" +#line 674 "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 3004 "parser.cpp" break; case 172: // expr_pointer: "thread" "[" "[" expr "]" "]" "(" expr_arguments ")" -#line 675 "parser.ypp" +#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::thread); } #line 3010 "parser.cpp" break; case 173: // expr_pointer: "childthread" "[" "[" expr "]" "]" "(" expr_arguments ")" -#line 677 "parser.ypp" +#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::childthread); } #line 3016 "parser.cpp" break; case 174: // expr_pointer: "call" "[" "[" expr "]" "]" "(" expr_arguments ")" -#line 679 "parser.ypp" +#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::builtin); } #line 3022 "parser.cpp" break; case 175: // expr_add_array: "[" expr_arguments_no_empty "]" -#line 684 "parser.ypp" +#line 685 "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 3028 "parser.cpp" break; case 176: // expr_parameters: expr_parameters "," expr_identifier -#line 689 "parser.ypp" +#line 690 "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 3034 "parser.cpp" break; case 177: // expr_parameters: expr_identifier -#line 691 "parser.ypp" +#line 692 "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 3040 "parser.cpp" break; case 178: // expr_parameters: %empty -#line 693 "parser.ypp" +#line 694 "parser.ypp" { yylhs.value.as < ast::expr_parameters::ptr > () = std::make_unique(yylhs.location); } #line 3046 "parser.cpp" break; case 179: // expr_arguments: expr_arguments_no_empty -#line 698 "parser.ypp" +#line 699 "parser.ypp" { yylhs.value.as < ast::expr_arguments::ptr > () = std::move(yystack_[0].value.as < ast::expr_arguments::ptr > ()); } #line 3052 "parser.cpp" break; case 180: // expr_arguments: %empty -#line 700 "parser.ypp" +#line 701 "parser.ypp" { yylhs.value.as < ast::expr_arguments::ptr > () = std::make_unique(yylhs.location); } #line 3058 "parser.cpp" break; case 181: // expr_arguments_no_empty: expr_arguments "," expr -#line 705 "parser.ypp" +#line 706 "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 3064 "parser.cpp" break; case 182: // expr_arguments_no_empty: expr -#line 707 "parser.ypp" +#line 708 "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 3070 "parser.cpp" break; case 183: // expr_reference: "::" expr_identifier -#line 712 "parser.ypp" +#line 713 "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 3076 "parser.cpp" break; case 184: // expr_reference: expr_path "::" expr_identifier -#line 714 "parser.ypp" +#line 715 "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 3082 "parser.cpp" break; case 185: // expr_array: expr_object "[" expr "]" -#line 719 "parser.ypp" +#line 720 "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 3088 "parser.cpp" break; - case 186: // expr_field: expr_object "." expr_identifier -#line 724 "parser.ypp" + case 186: // expr_field: expr_object "." expr_identifier_nosize +#line 725 "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 3094 "parser.cpp" break; - case 187: // expr_field: expr_object "field" -#line 726 "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 > ())); } + case 187: // expr_size: expr_object "." "size" +#line 730 "parser.ypp" + { yylhs.value.as < ast::expr_size::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ())); } #line 3100 "parser.cpp" break; - case 188: // expr_size: expr_object ".size" -#line 731 "parser.ypp" - { yylhs.value.as < ast::expr_size::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } + case 188: // expr_paren: "(" expr ")" +#line 735 "parser.ypp" + { yylhs.value.as < ast::expr_paren::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } #line 3106 "parser.cpp" break; - case 189: // expr_paren: "(" expr ")" -#line 736 "parser.ypp" - { yylhs.value.as < ast::expr_paren::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } + case 189: // expr_object: expr_call +#line 739 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_call::ptr > ()); } #line 3112 "parser.cpp" break; - case 190: // expr_object: expr_call + case 190: // expr_object: expr_method #line 740 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_call::ptr > ()); } + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_method::ptr > ()); } #line 3118 "parser.cpp" break; - case 191: // expr_object: expr_method + case 191: // expr_object: expr_array #line 741 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_method::ptr > ()); } + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_array::ptr > ()); } #line 3124 "parser.cpp" break; - case 192: // expr_object: expr_array + case 192: // expr_object: expr_field #line 742 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_array::ptr > ()); } + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_field::ptr > ()); } #line 3130 "parser.cpp" break; - case 193: // expr_object: expr_field + case 193: // expr_object: expr_game #line 743 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_field::ptr > ()); } + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_game::ptr > ()); } #line 3136 "parser.cpp" break; - case 194: // expr_object: expr_game + case 194: // expr_object: expr_self #line 744 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_game::ptr > ()); } + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_self::ptr > ()); } #line 3142 "parser.cpp" break; - case 195: // expr_object: expr_self + case 195: // expr_object: expr_anim #line 745 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_self::ptr > ()); } + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_anim::ptr > ()); } #line 3148 "parser.cpp" break; - case 196: // expr_object: expr_anim + case 196: // expr_object: expr_level #line 746 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_anim::ptr > ()); } + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_level::ptr > ()); } #line 3154 "parser.cpp" break; - case 197: // expr_object: expr_level + case 197: // expr_object: expr_identifier #line 747 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_level::ptr > ()); } + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ()); } #line 3160 "parser.cpp" break; - case 198: // expr_object: expr_identifier -#line 748 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ()); } + case 198: // expr_thisthread: "thisthread" +#line 752 "parser.ypp" + { yylhs.value.as < ast::expr_thisthread::ptr > () = std::make_unique(yylhs.location); } #line 3166 "parser.cpp" break; - case 199: // expr_thisthread: "thisthread" -#line 753 "parser.ypp" - { yylhs.value.as < ast::expr_thisthread::ptr > () = std::make_unique(yylhs.location); } + case 199: // expr_empty_array: "[" "]" +#line 757 "parser.ypp" + { yylhs.value.as < ast::expr_empty_array::ptr > () = std::make_unique(yylhs.location); } #line 3172 "parser.cpp" break; - case 200: // expr_empty_array: "[" "]" -#line 758 "parser.ypp" - { yylhs.value.as < ast::expr_empty_array::ptr > () = std::make_unique(yylhs.location); } + case 200: // expr_undefined: "undefined" +#line 762 "parser.ypp" + { yylhs.value.as < ast::expr_undefined::ptr > () = std::make_unique(yylhs.location); } #line 3178 "parser.cpp" break; - case 201: // expr_undefined: "undefined" -#line 763 "parser.ypp" - { yylhs.value.as < ast::expr_undefined::ptr > () = std::make_unique(yylhs.location); } + case 201: // expr_game: "game" +#line 767 "parser.ypp" + { yylhs.value.as < ast::expr_game::ptr > () = std::make_unique(yylhs.location); } #line 3184 "parser.cpp" break; - case 202: // expr_game: "game" -#line 768 "parser.ypp" - { yylhs.value.as < ast::expr_game::ptr > () = std::make_unique(yylhs.location); } + case 202: // expr_self: "self" +#line 772 "parser.ypp" + { yylhs.value.as < ast::expr_self::ptr > () = std::make_unique(yylhs.location); } #line 3190 "parser.cpp" break; - case 203: // expr_self: "self" -#line 773 "parser.ypp" - { yylhs.value.as < ast::expr_self::ptr > () = std::make_unique(yylhs.location); } + case 203: // expr_anim: "anim" +#line 777 "parser.ypp" + { yylhs.value.as < ast::expr_anim::ptr > () = std::make_unique(yylhs.location); } #line 3196 "parser.cpp" break; - case 204: // expr_anim: "anim" -#line 778 "parser.ypp" - { yylhs.value.as < ast::expr_anim::ptr > () = std::make_unique(yylhs.location); } + case 204: // expr_level: "level" +#line 782 "parser.ypp" + { yylhs.value.as < ast::expr_level::ptr > () = std::make_unique(yylhs.location); } #line 3202 "parser.cpp" break; - case 205: // expr_level: "level" -#line 783 "parser.ypp" - { yylhs.value.as < ast::expr_level::ptr > () = std::make_unique(yylhs.location); } + case 205: // expr_animation: "%" "identifier" +#line 787 "parser.ypp" + { yylhs.value.as < ast::expr_animation::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 3208 "parser.cpp" break; - case 206: // expr_animation: "%" "identifier" -#line 788 "parser.ypp" - { yylhs.value.as < ast::expr_animation::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 206: // expr_animtree: "#animtree" +#line 792 "parser.ypp" + { yylhs.value.as < ast::expr_animtree::ptr > () = std::make_unique(yylhs.location); } #line 3214 "parser.cpp" break; - case 207: // expr_animtree: "#animtree" -#line 793 "parser.ypp" - { yylhs.value.as < ast::expr_animtree::ptr > () = std::make_unique(yylhs.location); } + case 207: // expr_identifier_nosize: "identifier" +#line 797 "parser.ypp" + { yylhs.value.as < ast::expr_identifier::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 3220 "parser.cpp" break; case 208: // expr_identifier: "identifier" -#line 798 "parser.ypp" +#line 802 "parser.ypp" { yylhs.value.as < ast::expr_identifier::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 3226 "parser.cpp" break; - case 209: // expr_path: "path" -#line 803 "parser.ypp" - { yylhs.value.as < ast::expr_path::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 209: // expr_identifier: "size" +#line 804 "parser.ypp" + { yylhs.value.as < ast::expr_identifier::ptr > () = std::make_unique(yylhs.location, "size"); } #line 3232 "parser.cpp" break; - case 210: // expr_path: expr_identifier -#line 805 "parser.ypp" - { yylhs.value.as < ast::expr_path::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < ast::expr_identifier::ptr > ()->value); } + case 210: // expr_path: "identifier" +#line 809 "parser.ypp" + { yylhs.value.as < ast::expr_path::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 3238 "parser.cpp" break; - case 211: // expr_istring: "localized string" -#line 810 "parser.ypp" - { yylhs.value.as < ast::expr_istring::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 211: // expr_path: "path" +#line 811 "parser.ypp" + { yylhs.value.as < ast::expr_path::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 3244 "parser.cpp" break; - case 212: // expr_string: "string literal" -#line 815 "parser.ypp" - { yylhs.value.as < ast::expr_string::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 212: // expr_istring: "localized string" +#line 816 "parser.ypp" + { yylhs.value.as < ast::expr_istring::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 3250 "parser.cpp" break; - case 213: // expr_vector: "(" expr "," expr "," expr ")" -#line 820 "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 > ())); } + case 213: // expr_string: "string literal" +#line 821 "parser.ypp" + { yylhs.value.as < ast::expr_string::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 3256 "parser.cpp" break; - 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 > ()); } + case 214: // expr_vector: "(" expr "," expr "," expr ")" +#line 826 "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 3262 "parser.cpp" break; - case 215: // expr_float: "float" -#line 827 "parser.ypp" - { yylhs.value.as < ast::expr_float::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 215: // expr_float: "-" "float" +#line 831 "parser.ypp" + { yylhs.value.as < ast::expr_float::ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } #line 3268 "parser.cpp" break; - 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 > ()); } + 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 3274 "parser.cpp" break; - case 217: // expr_integer: "integer" -#line 834 "parser.ypp" - { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 217: // expr_integer: "-" "integer" +#line 838 "parser.ypp" + { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } #line 3280 "parser.cpp" break; - case 218: // expr_false: "false" -#line 839 "parser.ypp" - { yylhs.value.as < ast::expr_false::ptr > () = std::make_unique(yylhs.location); } + 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 3286 "parser.cpp" break; - case 219: // expr_true: "true" -#line 844 "parser.ypp" - { yylhs.value.as < ast::expr_true::ptr > () = std::make_unique(yylhs.location); } + case 219: // expr_false: "false" +#line 845 "parser.ypp" + { yylhs.value.as < ast::expr_false::ptr > () = std::make_unique(yylhs.location); } #line 3292 "parser.cpp" break; + case 220: // expr_true: "true" +#line 850 "parser.ypp" + { yylhs.value.as < ast::expr_true::ptr > () = std::make_unique(yylhs.location); } +#line 3298 "parser.cpp" + break; -#line 3296 "parser.cpp" + +#line 3302 "parser.cpp" default: break; @@ -3483,30 +3489,31 @@ namespace xsk { namespace gsc { namespace s1 { "else", "do", "while", "for", "foreach", "in", "switch", "case", "default", "break", "continue", "return", "breakpoint", "prof_begin", "prof_end", "thread", "childthread", "thisthread", "call", "true", - "false", "undefined", ".size", "game", "self", "anim", "level", "(", ")", + "false", "undefined", "size", "game", "self", "anim", "level", "(", ")", "{", "}", "[", "]", ",", ".", "::", ":", ";", "?", "++", "--", "<<", ">>", "||", "&&", "==", "!=", "<=", ">=", "<", ">", "!", "~", "=", "+=", "-=", "*=", "/=", "%=", "|=", "&=", "^=", ">>=", "<<=", "|", "&", "^", - "+", "-", "*", "/", "%", "field", "path", "identifier", "string literal", - "localized string", "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_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", + "+", "-", "*", "/", "%", "path", "identifier", "string literal", + "localized string", "float", "integer", "SIZEOF", "ADD_ARRAY", "THEN", + "TERN", "NEG", "ANIMREF", "PREINC", "PREDEC", "POSTINC", "POSTDEC", + "$accept", "root", "program", "inline", "include", "declaration", + "decl_usingtree", "decl_constant", "decl_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_nosize", "expr_identifier", "expr_path", "expr_istring", "expr_string", "expr_vector", "expr_float", "expr_integer", "expr_false", "expr_true", YY_NULLPTR }; @@ -3773,516 +3780,510 @@ namespace xsk { namespace gsc { namespace s1 { } - const short parser::yypact_ninf_ = -267; + const short parser::yypact_ninf_ = -271; const short parser::yytable_ninf_ = -211; const short parser::yypact_[] = { - 4, -267, -267, -69, -69, -28, -267, 26, 4, -267, - -267, -267, -267, -267, -267, -40, -267, -267, -16, -3, - 5, -267, -267, -267, -267, -27, 1039, -267, -267, -267, - 23, -26, -267, -267, -36, -34, -267, 42, -267, -267, - -267, -267, -267, -267, -267, 1039, 625, -27, 1039, 1039, - -24, 14, -267, -267, -267, 2008, -267, -267, -267, -267, - -267, 291, 431, -267, -267, -267, -267, 592, 663, -267, - -267, 1003, -267, -267, -267, 1013, 1077, 1244, 1252, -267, - -267, 67, 44, -267, -267, -267, -267, -267, -267, -267, - 50, 68, -27, 60, 80, 76, 89, 90, 78, 94, - 1294, 625, -267, 2091, 88, 95, -267, -267, -267, -267, - -267, -267, -267, 1039, 1039, 1039, 1039, 1039, 1039, 1039, - 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, - 1039, 1039, -267, 1103, -27, -267, -267, -267, 104, 101, - 1039, -27, -267, 789, -267, -267, 1039, 1039, -27, 1039, - 1039, -27, 1039, -267, 1039, 1738, 1039, -267, 1973, 126, - 126, 1243, 2122, 2204, 2204, 415, 415, 415, 415, 2132, - 2173, 2163, 63, 63, -267, -267, -267, 1778, -267, -27, - -5, -267, 110, 895, 1039, 105, -2, 116, 1232, 117, - 118, 120, 121, -49, 113, 122, 123, 975, 125, 138, - 141, -267, 140, 548, 548, -267, -267, 841, -267, -267, - -267, -267, -267, -267, -267, -267, -267, -267, -267, -267, - -267, -267, -267, -267, -267, -267, -267, -267, -267, -267, - -267, -267, -267, -267, 137, 143, 144, 146, 149, -267, - -267, 1151, -267, -267, -267, -267, -29, 1818, 15, 148, - 1858, 16, 150, 1898, 1937, 155, 2091, 1039, -267, 110, - -267, 1039, -267, -267, 949, 2043, -267, 161, -267, 1039, - 198, 1039, 690, -27, 1039, 124, 165, 167, -267, -267, - -267, -267, 2078, -267, 1039, 1039, 1039, -267, -267, -4, - -4, -267, -267, -267, -267, -267, -267, -267, 180, 181, - 182, 184, -267, -267, 1039, 1039, 1039, 1039, 1039, 1039, - 1039, 1039, 1039, 1039, 1039, 174, -267, 1039, 183, -267, - 1039, 185, 1039, 191, 2091, 17, -267, -267, -267, 175, - 1460, 192, 1494, 186, -267, -267, -267, 2, -9, 1528, - -267, -267, -267, 38, 53, 1738, 1039, 1039, 1039, 1039, - 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, - 2091, 193, 62, 194, 71, 197, 1562, 1039, -267, -267, - 1232, 1039, 1232, 1039, 1039, -27, 68, 188, 189, 1596, - 1338, 1382, 1426, 1039, -267, 1039, -267, 1039, -267, 72, - 228, 1630, -267, 2091, 195, 1664, 224, -267, -267, -267, - 199, 200, 1039, 201, 1039, 203, 1039, 75, 82, 86, - -267, 1232, 205, 690, 1232, 1039, -267, -267, 202, -267, - 215, -267, 216, -267, -267, -267, -267, -267, 222, -267, - 1698, 214, 219, 220, 1232, 1232, -267, -267, -267, -267, - -267 + 9, -271, -271, -48, -48, -34, -271, -271, 29, 9, + -271, -271, -271, -271, -271, -271, -44, -271, -271, -30, + -9, -85, -271, -271, -271, -271, -20, 684, -271, -271, + -271, -6, 21, -271, -271, -28, 39, -271, 15, -271, + -271, -271, -271, -271, -271, -271, 684, 1024, -20, 684, + 684, -38, 2, 43, -271, -271, -271, 1959, -271, -271, + -271, -271, -271, 42, 72, -271, -271, -271, -271, 86, + 186, -271, -271, 427, -271, -271, -271, 490, 615, 712, + 876, -271, -271, 25, 50, -271, -271, -271, -271, -271, + -271, -271, 44, 62, -20, 64, 82, 78, 68, 92, + 96, 103, 1284, 1024, -271, 2042, 118, 132, -271, -271, + -271, -271, -271, -271, -271, 684, 684, 684, 684, 684, + 684, 684, 684, 684, 684, 684, 684, 684, 684, 684, + 684, 684, 684, 684, 1150, -2, -271, -271, 141, 147, + 684, -20, -271, 792, -271, -271, 684, 684, -20, 684, + 684, -20, 684, -271, 684, 1728, 684, -271, 1924, 315, + 315, 2073, 2083, 1078, 1078, 165, 165, 165, 165, 2114, + 2155, 2124, -4, -4, -271, -271, -271, 1768, -271, -271, + -271, -20, 46, -271, 158, 921, 684, 149, -37, 162, + 1274, 163, 166, 167, 168, 12, 164, 172, 173, 1087, + 175, 176, 178, -271, 191, -10, -10, -271, -271, 844, + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271, 184, 187, 189, 192, + 200, -271, -271, 1197, -271, -271, -271, -271, 141, 1808, + 77, 201, 1848, 94, 215, 1888, 1019, 181, 2042, 684, + -271, 158, -271, 684, -271, -271, 998, 1994, -271, 199, + -271, 684, 241, 684, 11, -20, 684, 169, 208, 217, + -271, -271, -271, -271, 2029, -271, 684, 684, 684, -271, + -271, 953, 953, -271, -271, -271, -271, -271, -271, -271, + 224, 227, 228, 230, 188, -271, -271, 684, 684, 684, + 684, 684, 684, 684, 684, 684, 684, 684, 232, -271, + 684, 233, -271, 684, 237, 684, 243, 2042, 100, -271, + -271, -271, 234, 1450, 245, 1484, 240, -271, -271, -271, + 550, -14, 1518, -271, -271, -271, 104, 107, 1728, 684, + 684, 684, 684, 2042, 2042, 2042, 2042, 2042, 2042, 2042, + 2042, 2042, 2042, 2042, 251, 110, 252, 113, 275, 1552, + 684, -271, -271, 1274, 684, 1274, 684, 684, -20, 62, + 268, 269, 1586, 1328, 1372, 1416, 684, -271, 684, -271, + 684, -271, 124, 307, 1620, -271, 2042, 271, 1654, 305, + -271, -271, -271, 276, 281, 684, 283, 684, 286, 684, + 143, 146, 150, -271, 1274, 289, 11, 1274, 684, -271, + -271, 288, -271, 299, -271, 300, -271, -271, -271, -271, + -271, 301, -271, 1688, 294, 296, 298, 1274, 1274, -271, + -271, -271, -271, -271 }; const unsigned char parser::yydefact_[] = { - 3, 12, 13, 0, 0, 0, 208, 0, 2, 7, - 8, 9, 14, 15, 16, 0, 209, 210, 0, 0, - 0, 1, 4, 5, 6, 178, 0, 10, 11, 212, - 0, 0, 177, 207, 0, 0, 199, 0, 219, 218, - 201, 202, 203, 204, 205, 0, 180, 0, 0, 0, - 0, 0, 211, 215, 217, 0, 93, 94, 95, 132, - 133, 134, 135, 161, 162, 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, - 0, 0, 0, 0, 210, 0, 0, 210, 0, 0, - 0, 180, 200, 182, 0, 179, 183, 160, 159, 214, - 216, 206, 18, 0, 0, 0, 0, 0, 0, 0, + 3, 12, 13, 0, 0, 0, 209, 208, 0, 2, + 7, 8, 9, 14, 15, 16, 0, 211, 210, 0, + 0, 0, 1, 4, 5, 6, 178, 0, 10, 11, + 213, 0, 0, 177, 206, 0, 0, 198, 0, 220, + 219, 200, 201, 202, 203, 204, 0, 180, 0, 0, + 0, 0, 0, 208, 212, 216, 218, 0, 93, 94, + 95, 132, 133, 134, 135, 161, 162, 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, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 180, 199, 182, 0, 179, 183, 160, + 159, 215, 217, 205, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 188, 0, 0, 187, 163, 164, 210, 0, + 0, 0, 0, 0, 0, 0, 163, 164, 0, 0, 180, 0, 17, 0, 19, 176, 0, 180, 0, 0, - 180, 0, 0, 189, 0, 182, 0, 175, 0, 125, + 180, 0, 0, 188, 0, 182, 0, 175, 0, 125, 126, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 127, 128, 129, 130, 131, 0, 186, 0, - 0, 179, 184, 0, 0, 0, 0, 0, 0, 0, + 123, 124, 127, 128, 129, 130, 131, 0, 187, 207, + 186, 0, 0, 179, 184, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 190, 191, 192, - 193, 0, 194, 195, 196, 197, 198, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 181, 0, 185, 0, - 165, 180, 52, 48, 0, 0, 72, 0, 73, 0, - 0, 0, 58, 0, 0, 0, 0, 0, 85, 86, - 87, 89, 0, 90, 180, 180, 0, 190, 191, 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, 167, 180, 0, 169, - 180, 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, 180, 166, 74, - 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 180, 168, 180, 170, 180, 213, 0, - 75, 0, 77, 96, 0, 0, 0, 82, 91, 92, - 0, 0, 180, 0, 180, 0, 180, 0, 0, 0, - 171, 0, 0, 58, 0, 0, 64, 66, 179, 69, - 179, 71, 179, 172, 173, 174, 76, 78, 0, 80, - 0, 0, 0, 0, 0, 0, 65, 68, 70, 79, - 81 + 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, 189, + 190, 191, 192, 0, 193, 194, 195, 196, 197, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 181, 0, + 185, 0, 165, 180, 52, 48, 0, 0, 72, 0, + 73, 0, 0, 0, 58, 0, 0, 0, 0, 0, + 85, 86, 87, 89, 0, 90, 180, 180, 0, 189, + 190, 109, 111, 53, 49, 61, 62, 63, 59, 60, + 0, 0, 0, 0, 0, 110, 112, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 167, + 180, 0, 169, 180, 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, + 180, 166, 74, 0, 0, 0, 97, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 180, 168, 180, 170, + 180, 214, 0, 75, 0, 77, 96, 0, 0, 0, + 82, 91, 92, 0, 0, 180, 0, 180, 0, 180, + 0, 0, 0, 171, 0, 0, 58, 0, 0, 64, + 66, 179, 69, 179, 71, 179, 172, 173, 174, 76, + 78, 0, 80, 0, 0, 0, 0, 0, 0, 65, + 68, 70, 79, 81 }; const short parser::yypgoto_[] = { - -267, -267, -267, 275, 277, 280, -267, -267, -267, -155, - 85, -267, -267, -267, -89, -120, -267, -267, -267, -267, - -267, -267, -267, -267, -267, -267, -267, -267, -267, -267, - -267, -267, -267, -267, -267, -267, -267, -267, -267, -267, - 190, -267, -266, -259, -258, -267, -267, -267, -267, -267, - -86, -12, -66, -60, -267, -267, 13, -45, -267, -6, - 179, -267, -267, 249, -267, -267, -267, 282, 337, 362, - 372, -267, -267, 0, 6, -267, -13, -267, -267, 106, - -267, -267 + -271, -271, -271, 356, 357, 359, -271, -271, -271, -173, + 160, -271, -271, -271, -91, -45, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + 190, -271, -270, -267, -261, -271, -271, -271, -271, -271, + -88, -18, -70, -68, -271, -271, 14, -46, -271, -11, + 182, -271, -271, 270, -271, -271, -271, 279, 304, 329, + 375, -271, -271, -271, 0, 7, -271, -15, -271, -271, + 179, -271, -271 }; const short parser::yydefgoto_[] = { - 0, 7, 8, 9, 10, 11, 12, 13, 14, 205, - 206, 264, 207, 208, 209, 333, 210, 211, 212, 213, - 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, - 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, - 103, 394, 234, 235, 236, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, 31, 104, 181, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - 88, 89 + 0, 8, 9, 10, 11, 12, 13, 14, 15, 207, + 208, 266, 209, 210, 211, 336, 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, 397, 236, 237, 238, 58, 59, 60, 61, 62, + 63, 64, 65, 66, 67, 32, 106, 183, 68, 69, + 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 180, 83, 84, 85, 86, 87, 88, + 89, 90, 91 }; const short parser::yytable_[] = { - 15, 105, 144, 17, 17, 136, 334, 30, 15, 18, - 19, 137, 25, 335, 336, 1, 2, 3, 4, 5, - 93, 374, 96, 140, 20, 32, 21, 91, 263, 16, - 6, -210, 92, 270, 94, 97, 34, 35, 26, 37, - 95, 98, 34, 35, 275, 37, 27, 106, 260, 375, - 267, 29, 133, 156, 54, 134, 105, 237, 133, 28, - 268, 134, 16, 6, 16, 6, 302, 303, 316, 319, - 368, 138, 6, 156, 156, 156, 90, 139, 109, 110, - 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 377, 145, 135, 16, 6, 156, 237, 99, 135, - 16, 6, 237, 6, 141, 29, 378, -198, -198, 327, - -198, 156, 142, 111, -198, 384, 146, 287, 287, 140, - 156, 237, 143, -198, 386, 410, -198, -210, 423, 156, - 156, 238, 147, 156, 178, 424, 148, 239, 151, 425, - 156, 182, 150, 246, 156, 149, 156, 334, 249, 139, - 152, 252, 157, 180, 335, 336, 140, 129, 130, 131, - 248, 179, 261, 251, -198, -198, -198, 266, 269, 271, - 272, 238, 273, 274, 278, 136, 238, 239, 237, 259, - 276, 137, 239, 246, 279, 280, 287, 283, 246, 139, - 284, 288, 288, 285, 139, 238, 286, 239, 239, 293, - 317, 239, 320, 246, 246, 294, 295, 246, 296, 139, - 139, 297, 323, 139, 329, 390, 55, 392, 127, 128, - 129, 130, 131, 136, 136, 331, 340, 110, 341, 137, - 137, 361, 346, 347, 348, 100, 349, 369, 107, 108, - 363, 138, 365, 367, 371, 383, 385, 139, 373, 387, - 398, 399, 238, 411, 415, 431, 426, 413, 239, 429, - 288, 416, 417, 419, 246, 421, 239, 427, 432, 433, - 139, 136, 246, 338, 325, 434, 436, 137, 139, 439, - 440, 437, 438, 22, 237, 23, 237, 397, 24, 138, - 138, 155, 292, 428, 0, 139, 139, 343, 344, 277, - 0, 0, 0, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, - 175, 176, 240, 177, 0, 237, 0, 287, 237, 0, - 362, -190, -190, 364, -190, 0, 247, 138, -190, 250, - 0, 0, 253, 139, 254, 0, 256, -190, 237, 237, - -190, 0, 0, 0, 0, 0, 0, 418, 238, 420, - 238, 422, 240, 0, 239, 0, 239, 240, 0, 0, - 246, 0, 246, 0, 265, 396, 139, 0, 139, 0, - 389, 0, 240, 240, 0, 0, 240, 282, -190, -190, - -190, 0, 241, 0, 0, 0, 407, 0, 408, 238, - 409, 288, 238, 0, 0, 239, 0, 239, 239, 0, - 0, 246, 0, 246, 246, 0, 0, 139, 0, 139, - 139, 0, 238, 238, 0, 242, 0, 0, 239, 239, - 0, 0, 241, 0, 246, 246, 0, 241, 0, 0, - 139, 139, 0, 240, 0, 0, 0, 324, 0, 0, - 0, 240, 289, 290, 0, 0, 241, 0, 0, 330, - 0, 332, 0, 0, 339, 242, 0, 0, 0, 0, - 242, -191, -191, 0, -191, 0, 345, 0, -191, 0, - 243, 114, 115, 0, 0, 242, 242, -191, 0, 242, - -191, 0, 0, 0, 350, 351, 352, 353, 354, 355, - 356, 357, 358, 359, 360, 244, 0, 127, 128, 129, - 130, 131, 366, 241, 0, 245, 0, 0, 0, 0, - 243, 337, 0, 0, 0, 243, 0, 0, -191, -191, - -191, 0, 0, 0, 0, 0, 379, 380, 381, 382, - 243, 243, 0, 0, 243, 244, 242, 0, 0, 240, - 244, 240, 0, 0, 242, 245, 0, 0, 0, 0, - 245, 391, 0, 393, 395, 244, 244, 0, 0, 244, - 0, 0, 0, 0, 0, 245, 245, 0, 0, 245, - 0, 0, 0, 0, 0, 0, 0, 0, 34, 35, - 240, 37, 240, 240, 0, 0, 41, 42, 43, 44, - 0, 243, 0, 0, 202, 430, 0, 0, 0, 243, - 0, 0, 0, 240, 240, 0, 0, 0, 0, 241, - 0, 241, 0, 0, 0, 0, 244, 0, 0, 0, - 0, 0, -192, -192, 244, -192, 245, 0, 0, -192, - 0, 33, 0, 0, 245, 0, 16, 6, -192, 0, - 0, -192, 242, 0, 242, 0, 0, 0, 0, 0, - 241, 0, 337, 241, 0, 34, 35, 36, 37, 38, - 39, 40, 0, 41, 42, 43, 44, 45, 0, 0, - 0, 101, 102, 241, 241, 47, 0, 0, 0, -192, - -192, -192, 0, 242, 0, 242, 242, 0, 0, 0, - 0, 48, 49, -193, -193, 0, -193, 243, 0, 243, - -193, 0, 0, 0, 0, 0, 242, 242, 50, -193, - 0, 51, -193, 16, 6, 29, 52, 53, 54, 0, - 34, 35, 244, 37, 244, 0, 0, 0, 41, 42, - 43, 44, 245, 0, 245, 0, 202, 0, 243, 0, - 243, 243, 0, 0, 203, 204, 0, 0, 0, 0, - -193, -193, -193, 0, 0, 0, 0, 0, 0, 0, - 0, 243, 243, 244, 0, 244, 244, 0, 0, 0, - 0, 0, 0, 245, 0, 245, 245, 0, 16, 6, - 0, 0, 0, 0, 0, 0, 244, 244, 0, 0, - 183, 0, 0, 0, 0, 0, 245, 245, 184, 0, - 0, 185, 186, 187, 0, 188, 189, 190, 191, 0, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 34, - 35, 0, 37, 0, 0, 0, 0, 41, 42, 43, - 44, 0, 0, 143, 201, 202, 0, 0, 0, 0, - 0, 0, 183, 203, 204, 0, 0, 0, 0, 0, - 184, 0, 0, 185, 186, 187, 0, 188, 189, 190, - 191, 0, 192, 193, 194, 195, 196, 197, 198, 199, - 200, 34, 35, 0, 37, 0, 0, 16, 6, 41, - 42, 43, 44, 0, 0, 143, 291, 202, 0, 0, - 0, 0, 0, 0, 0, 203, 204, 262, 0, 0, - 0, 0, 0, 0, 184, 0, 0, 185, 186, 187, - 0, 188, 189, 190, 191, 0, 192, 193, 194, 195, - 196, 197, 198, 199, 200, 34, 35, 0, 37, 16, - 6, 0, 0, 41, 42, 43, 44, 0, 0, 143, - 0, 202, 0, 0, 0, 0, 0, 0, 0, 203, - 204, 326, 0, 0, 0, 0, 0, 0, 184, 0, - 0, 185, 186, 187, 0, 188, 189, 190, 191, 0, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 34, - 35, 33, 37, 16, 6, 0, 0, 41, 42, 43, - 44, 0, 0, 143, 0, 202, 0, 0, 0, 0, - 0, 0, 0, 203, 204, 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, 34, 35, 0, 37, 16, 6, 0, - 132, 48, 49, -194, -194, 33, -194, 0, 0, 133, - -194, 0, 134, 0, 0, 0, 0, 0, 50, -194, - 0, 51, -194, 16, 6, 29, 52, 53, 54, 34, - 35, 36, 37, 38, 39, 40, 0, 41, 42, 43, - 44, 45, 0, 0, 0, 46, 0, 0, 0, 47, - 135, 16, 6, 0, 0, 0, 0, 0, 0, 0, - -194, -194, -194, 0, 0, 48, 49, -195, -195, 33, - -195, 0, 0, 0, -195, 0, 0, 0, 0, 0, - 0, 0, 50, -195, 0, 51, -195, 16, 6, 29, - 52, 53, 54, 34, 35, 36, 37, 38, 39, 40, - 0, 41, 42, 43, 44, 45, 0, 0, 0, 101, - 0, 0, 0, 47, 0, 0, 0, 0, 298, 299, - 0, 300, 301, 0, -195, -195, -195, 0, 0, 48, - 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 34, 35, 0, 37, 0, 50, 0, 0, 51, - 0, 16, 6, 29, 52, 53, 54, 133, 0, 0, - 134, 0, 0, 0, 0, 302, 303, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 304, - 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 0, 0, 0, 0, 0, 0, 0, 0, 135, 16, - 6, 184, 0, 0, 185, 186, 187, 0, 188, 189, - 190, 191, 0, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 34, 35, 0, 37, 0, 0, 0, 0, - 41, 42, 43, 44, -196, -196, 143, -196, 202, 0, - 0, -196, -197, -197, 0, -197, 203, 204, 0, -197, - -196, 0, 0, -196, 0, 0, 0, 0, -197, 114, - 115, -197, 117, 118, 119, 120, 121, 122, 123, 0, + 16, 107, 144, 136, 337, 137, 31, 338, 26, 16, + 19, 20, 265, 339, 30, 269, 377, 272, 21, 6, + 1, 2, 3, 4, 5, 270, 33, 6, 95, 22, + 35, 36, 28, 38, 27, 96, 99, 6, 42, 43, + 44, 45, 97, 100, 378, 178, 204, 92, 108, 17, + 18, 35, 36, 29, 38, 239, 6, 107, 6, 42, + 43, 44, 45, 111, 112, -197, -197, 204, -197, 17, + 53, 101, -197, 138, 93, 205, 206, 140, 7, 94, + 139, -197, -189, -189, -197, -189, 6, 17, 53, -189, + 131, 132, 133, 330, 145, 98, 179, 239, -189, 262, + 113, -189, 239, -210, 156, 277, 142, 7, 17, 53, + 141, 30, -190, -190, 56, -190, 143, 289, 289, -190, + 146, 239, -197, -197, 149, 240, -191, -191, -190, -191, + 319, -190, 241, -191, 147, 156, 17, 53, 148, -189, + -189, 184, -191, 248, 150, -191, 337, 322, 251, 338, + 139, 254, 156, 371, 182, 339, 151, 380, 156, 152, + 381, 250, 156, 387, 253, 156, 389, 240, 156, -190, + -190, 156, 240, 136, 241, 137, 156, 413, 239, 241, + 278, 261, 156, -191, -191, 248, 289, 290, 290, 157, + 248, 240, 139, 140, 241, 241, 426, 139, 241, 427, + 393, 156, 395, 428, 156, 248, 248, 181, 156, 248, + 263, 268, 139, 139, 271, 273, 139, 57, 274, 275, + 276, 136, 136, 137, 137, 280, -192, -192, 286, -192, + 287, 116, 117, -192, 281, 282, 102, 285, 326, 109, + 110, 429, -192, 138, 432, -192, 295, 288, 240, 296, + 139, 297, 332, 320, 298, 241, 290, 129, 130, 131, + 132, 133, 299, 241, 442, 443, 248, 323, 334, 343, + 136, 112, 137, 139, 248, 341, 349, 328, 344, 350, + 351, 139, 352, -192, -192, 239, 179, 239, 400, 364, + 366, 138, 138, 155, 368, 370, 372, 374, 139, 139, + 346, 347, 376, 386, 388, 158, 159, 160, 161, 162, + 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, + 173, 174, 175, 176, 177, 242, 239, 390, 289, 239, + 401, 402, 414, 416, 365, 418, 249, 367, 419, 252, + 138, 434, 255, 420, 256, 422, 258, 139, 424, 239, + 239, 430, 435, 436, 437, 240, 439, 240, 440, 421, + 441, 423, 241, 425, 241, 23, 24, 242, 25, 294, + 0, 431, 242, 248, 279, 248, 267, 0, 399, 0, + 139, 0, 139, 0, 392, 0, 0, 242, 242, 284, + 0, 242, 0, 0, 0, 0, 240, 0, 290, 240, + 410, 0, 411, 241, 412, 241, 241, 129, 130, 131, + 132, 133, 0, 243, 248, 0, 248, 248, 0, 240, + 240, 139, 244, 139, 139, 0, 241, 241, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 248, 248, 0, + 0, 0, 0, 0, 139, 139, 0, 245, 242, 327, + 0, 0, 0, 0, 0, 243, 242, 0, 0, 0, + 243, 333, 0, 335, 244, 0, 342, 35, 36, 244, + 38, 0, 246, 0, 6, 291, 292, 0, 348, 243, + 0, 0, 0, 134, 244, 244, 135, 0, 244, 245, + 0, 0, 0, 0, 245, 0, 0, 353, 354, 355, + 356, 357, 358, 359, 360, 361, 362, 363, 0, 245, + 245, 0, 0, 245, 246, 369, 0, 0, 247, 246, + 0, 0, 0, 0, 17, 53, 0, 0, 0, 0, + -193, -193, 0, -193, 246, 246, 243, -193, 246, 382, + 383, 384, 385, 0, 340, 244, -193, 0, 0, -193, + 0, 0, 0, 244, 0, 242, 0, 242, 0, 0, + 247, 0, 0, 0, 394, 247, 396, 398, 0, 0, + 245, 0, 0, 0, 0, 0, 0, 0, 245, 0, + 247, 247, 0, 0, 247, 0, 0, -193, -193, 0, + 35, 36, 0, 38, 0, 246, 242, 6, 242, 242, + 0, 0, 0, 246, 0, 0, 134, 0, 433, 304, + 0, 0, 0, 0, 305, 306, 0, 0, 0, 242, + 242, 0, 0, 0, 0, 0, 0, 0, 307, 308, + 309, 310, 311, 312, 313, 314, 315, 316, 317, 0, + 0, 247, 0, 243, 0, 243, 0, 17, 53, 247, + 0, 0, 244, 0, 244, -194, -194, 0, -194, 0, + 0, 0, -194, 0, 0, 0, 0, 0, 0, 0, + 0, -194, 0, 0, -194, 0, 0, 245, 0, 245, + 0, 0, 0, 0, 243, 0, 340, 243, 0, 0, + 0, 0, 0, 244, 0, 244, 244, 0, 0, 0, + 34, 0, 246, 0, 246, 0, 0, 243, 243, 0, + 0, 0, -194, -194, 0, 0, 244, 244, 245, 0, + 245, 245, 0, 0, 35, 36, 37, 38, 39, 40, + 41, 6, 42, 43, 44, 45, 46, 0, 0, 0, + 47, 245, 245, 246, 48, 246, 246, 0, 247, 0, + 247, 0, -195, -195, 0, -195, 0, 0, 0, -195, + 49, 50, 0, 0, 0, 0, 246, 246, -195, 0, + 0, -195, 0, 0, 0, 0, 0, 51, 0, 0, + 52, 17, 53, 30, 54, 55, 56, 0, 0, 247, + 0, 247, 247, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 185, 0, 0, 0, 0, 0, -195, + -195, 186, 247, 247, 187, 188, 189, 0, 190, 191, + 192, 193, 0, 194, 195, 196, 197, 198, 199, 200, + 201, 202, 35, 36, 0, 38, 0, 0, 0, 6, + 42, 43, 44, 45, 0, 0, 143, 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, 35, 36, 0, 38, 0, 17, + 53, 6, 42, 43, 44, 45, 0, 0, 143, 293, + 204, 0, 0, 0, 0, 0, 0, 0, 205, 206, + 0, 0, 0, 0, 0, 0, -196, -196, 0, -196, + 0, 0, 0, -196, 0, 0, 0, 0, 0, 0, + 0, 0, -196, 264, 0, -196, 0, 0, 0, 0, + 186, 17, 53, 187, 188, 189, 0, 190, 191, 192, + 193, 0, 194, 195, 196, 197, 198, 199, 200, 201, + 202, 35, 36, 0, 38, 0, 0, 0, 6, 42, + 43, 44, 45, -196, -196, 143, 0, 204, 0, 0, + 0, 0, 0, 0, 0, 205, 206, 0, 0, 0, + 0, 0, 0, 35, 36, 0, 38, 0, 0, 0, + 6, 0, 0, 0, 0, 0, 0, 0, 0, 134, + 329, 0, 304, 0, 0, 0, 0, 186, 17, 53, + 187, 188, 189, 0, 190, 191, 192, 193, 0, 194, + 195, 196, 197, 198, 199, 200, 201, 202, 35, 36, + 34, 38, 0, 0, 0, 6, 42, 43, 44, 45, + 17, 53, 143, 0, 204, 0, 0, 0, 0, 0, + 0, 0, 205, 206, 35, 36, 37, 38, 39, 40, + 41, 6, 42, 43, 44, 45, 46, 325, 0, 0, + 103, 104, 115, 0, 48, 116, 117, 118, 119, 120, + 121, 122, 123, 124, 125, 17, 53, 0, 0, 0, + 49, 50, 0, 34, 0, 0, 0, 0, 126, 127, + 128, 129, 130, 131, 132, 133, 0, 51, 0, 0, + 52, 17, 53, 30, 54, 55, 56, 35, 36, 37, + 38, 39, 40, 41, 6, 42, 43, 44, 45, 46, + 0, 0, 0, 47, 116, 117, 0, 48, 0, 283, + 122, 123, 124, 125, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 49, 50, 0, 34, 0, 0, 0, + 129, 130, 131, 132, 133, 0, 0, 0, 0, 0, + 51, 0, 0, 52, 17, 53, 30, 54, 55, 56, + 35, 36, 37, 38, 39, 40, 41, 6, 42, 43, + 44, 45, 46, 0, 0, 0, 103, 0, 0, 0, + 48, 0, 0, 0, 300, 301, 0, 302, 303, 0, + 0, 0, 0, 0, 0, 0, 49, 50, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 35, 36, 0, + 38, 0, 0, 51, 6, 0, 52, 17, 53, 30, + 54, 55, 56, 134, 0, 0, 304, 0, 0, 0, + 0, 305, 306, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 307, 308, 309, 310, 311, + 312, 313, 314, 315, 316, 317, 0, 0, 0, 0, + 0, 0, 0, 186, 17, 53, 187, 188, 189, 0, + 190, 191, 192, 193, 0, 194, 195, 196, 197, 198, + 199, 200, 201, 202, 35, 36, 0, 38, 0, 0, + 0, 6, 42, 43, 44, 45, 0, 0, 143, 0, + 204, 0, 0, 0, 0, 0, 0, 153, 205, 206, + 0, 0, 154, 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, - 16, 6, 124, 125, 126, 127, 128, 129, 130, 131, - 0, -196, -196, -196, 0, 0, 0, 153, 0, -197, - -197, -197, 154, 0, 0, 0, 0, 113, 0, 0, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, + 0, 17, 53, 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, 0, 0, 126, 127, 128, + 129, 130, 131, 132, 133, 406, 0, 0, 0, 0, + 407, 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, 0, 0, 124, 125, 126, 127, 128, 129, 130, - 131, 401, 0, 0, 0, 0, 402, 0, 0, 0, - 0, 113, 0, 0, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 124, 125, 126, - 127, 128, 129, 130, 131, 403, 0, 0, 0, 0, - 404, 0, 0, 0, 0, 113, 0, 0, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 0, 0, + 0, 126, 127, 128, 129, 130, 131, 132, 133, 408, + 0, 0, 0, 0, 409, 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, 373, 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, 124, 125, 126, 127, 128, 129, 130, 131, 405, - 0, 0, 0, 0, 406, 0, 0, 0, 0, 113, - 0, 0, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 370, 0, 124, 125, 126, 127, 128, - 129, 130, 131, 113, 0, 0, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 372, 0, 124, - 125, 126, 127, 128, 129, 130, 131, 113, 0, 0, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, + 0, 379, 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, 391, 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, 403, + 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, 415, 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, 417, 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, 376, 0, 124, 125, 126, 127, 128, 129, 130, - 131, 113, 0, 0, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 388, 0, 124, 125, 126, - 127, 128, 129, 130, 131, 113, 0, 0, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 400, - 0, 124, 125, 126, 127, 128, 129, 130, 131, 113, - 0, 0, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 412, 0, 124, 125, 126, 127, 128, - 129, 130, 131, 113, 0, 0, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 414, 0, 124, - 125, 126, 127, 128, 129, 130, 131, 113, 0, 0, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, + 0, 438, 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, 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, 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, 324, 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, 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, 435, 0, 124, 125, 126, 127, 128, 129, 130, - 131, 113, 0, 0, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 124, 125, 126, - 127, 128, 129, 130, 131, 255, 0, 0, 0, 0, - 0, 113, 0, 0, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 124, 125, 126, - 127, 128, 129, 130, 131, 258, 0, 0, 0, 0, - 0, 113, 0, 0, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 124, 125, 126, - 127, 128, 129, 130, 131, 315, 0, 0, 0, 0, - 0, 113, 0, 0, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 124, 125, 126, - 127, 128, 129, 130, 131, 318, 0, 0, 0, 0, - 0, 113, 0, 0, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 124, 125, 126, - 127, 128, 129, 130, 131, 321, 0, 0, 0, 0, - 0, 113, 0, 0, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 124, 125, 126, - 127, 128, 129, 130, 131, 322, 0, 0, 0, 0, - 113, 0, 0, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 124, 125, 126, 127, - 128, 129, 130, 131, 257, 0, 113, 0, 0, 114, - 115, 116, 117, 118, 119, 120, 121, 122, 123, 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, 331, 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, 124, 125, 126, 127, 128, 129, 130, 131, - 112, 113, 0, 0, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 124, 125, 126, - 127, 128, 129, 130, 131, 328, 113, 0, 0, 114, - 115, 116, 117, 118, 119, 120, 121, 122, 123, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 124, 125, 126, 127, 128, 129, 130, 131, - 342, 113, 0, 0, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 113, 0, 0, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 0, 0, 0, 0, 0, - 124, 125, 126, 127, 128, 129, 130, 131, 114, 115, - 0, 0, 118, 119, 120, 121, 122, 123, 114, 115, - 0, 0, 118, 119, 120, 121, 122, 123, 0, 0, - 0, 124, 125, 126, 127, 128, 129, 130, 131, 0, - 0, 0, 125, 126, 127, 128, 129, 130, 131, 114, - 115, 0, 0, 118, 119, 120, 121, 122, 123, 114, - 115, 0, 0, 118, 119, 120, 121, 122, 123, 0, - 0, 0, 0, 125, 0, 127, 128, 129, 130, 131, - 0, 0, 0, 0, 0, 127, 128, 129, 130, 131, - 114, 115, 0, 0, 0, 0, 120, 121, 122, 123, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 127, 128, 129, 130, - 131 + 0, 0, 0, 126, 127, 128, 129, 130, 131, 132, + 133, 345, 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 }; const short parser::yycheck_[] = { - 0, 46, 91, 3, 4, 71, 272, 20, 8, 3, - 4, 71, 52, 272, 272, 11, 12, 13, 14, 15, - 56, 30, 56, 52, 52, 25, 0, 53, 183, 98, - 99, 60, 58, 188, 34, 35, 40, 41, 78, 43, - 34, 35, 40, 41, 93, 43, 62, 47, 53, 58, - 52, 100, 56, 58, 103, 59, 101, 143, 56, 62, - 62, 59, 98, 99, 98, 99, 64, 65, 53, 53, - 53, 71, 99, 58, 58, 58, 53, 71, 102, 103, - 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - 88, 53, 92, 97, 98, 99, 58, 183, 56, 97, - 98, 99, 188, 99, 60, 100, 53, 40, 41, 264, - 43, 58, 62, 99, 47, 53, 56, 203, 204, 52, - 58, 207, 54, 56, 53, 53, 59, 60, 53, 58, - 58, 143, 52, 58, 134, 53, 60, 143, 60, 53, - 58, 141, 52, 143, 58, 56, 58, 413, 148, 143, - 56, 151, 57, 140, 413, 413, 52, 94, 95, 96, - 147, 60, 52, 150, 97, 98, 99, 62, 52, 52, - 52, 183, 52, 52, 61, 241, 188, 183, 264, 179, - 193, 241, 188, 183, 62, 62, 272, 62, 188, 183, - 52, 203, 204, 52, 188, 207, 56, 203, 204, 62, - 52, 207, 52, 203, 204, 62, 62, 207, 62, 203, - 204, 62, 57, 207, 53, 370, 26, 372, 92, 93, - 94, 95, 96, 289, 290, 27, 61, 103, 61, 289, - 290, 57, 52, 52, 52, 45, 52, 62, 48, 49, - 57, 241, 57, 52, 52, 52, 52, 241, 62, 52, - 62, 62, 264, 25, 30, 53, 411, 62, 264, 414, - 272, 62, 62, 62, 264, 62, 272, 62, 53, 53, - 264, 337, 272, 273, 261, 53, 62, 337, 272, 434, - 435, 62, 62, 8, 370, 8, 372, 376, 8, 289, - 290, 101, 207, 413, -1, 289, 290, 284, 285, 193, - -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, + 0, 47, 93, 73, 274, 73, 21, 274, 52, 9, + 3, 4, 185, 274, 99, 52, 30, 190, 52, 47, + 11, 12, 13, 14, 15, 62, 26, 47, 56, 0, + 40, 41, 62, 43, 78, 35, 36, 47, 48, 49, + 50, 51, 35, 36, 58, 47, 56, 53, 48, 97, + 98, 40, 41, 62, 43, 143, 47, 103, 47, 48, + 49, 50, 51, 101, 102, 40, 41, 56, 43, 97, + 98, 56, 47, 73, 53, 64, 65, 52, 98, 58, + 73, 56, 40, 41, 59, 43, 47, 97, 98, 47, + 94, 95, 96, 266, 94, 56, 98, 185, 56, 53, + 98, 59, 190, 60, 58, 93, 62, 98, 97, 98, + 60, 99, 40, 41, 102, 43, 54, 205, 206, 47, + 56, 209, 97, 98, 56, 143, 40, 41, 56, 43, + 53, 59, 143, 47, 52, 58, 97, 98, 60, 97, + 98, 141, 56, 143, 52, 59, 416, 53, 148, 416, + 143, 151, 58, 53, 140, 416, 60, 53, 58, 56, + 53, 147, 58, 53, 150, 58, 53, 185, 58, 97, + 98, 58, 190, 243, 185, 243, 58, 53, 266, 190, + 195, 181, 58, 97, 98, 185, 274, 205, 206, 57, + 190, 209, 185, 52, 205, 206, 53, 190, 209, 53, + 373, 58, 375, 53, 58, 205, 206, 60, 58, 209, + 52, 62, 205, 206, 52, 52, 209, 27, 52, 52, + 52, 291, 292, 291, 292, 61, 40, 41, 52, 43, + 52, 66, 67, 47, 62, 62, 46, 62, 57, 49, + 50, 414, 56, 243, 417, 59, 62, 56, 266, 62, + 243, 62, 53, 52, 62, 266, 274, 92, 93, 94, + 95, 96, 62, 274, 437, 438, 266, 52, 27, 61, + 340, 102, 340, 266, 274, 275, 52, 263, 61, 52, + 52, 274, 52, 97, 98, 373, 98, 375, 379, 57, + 57, 291, 292, 103, 57, 52, 62, 52, 291, 292, + 286, 287, 62, 52, 52, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, - 130, 131, 143, 133, -1, 411, -1, 413, 414, -1, - 317, 40, 41, 320, 43, -1, 146, 337, 47, 149, - -1, -1, 152, 337, 154, -1, 156, 56, 434, 435, - 59, -1, -1, -1, -1, -1, -1, 402, 370, 404, - 372, 406, 183, -1, 370, -1, 372, 188, -1, -1, - 370, -1, 372, -1, 184, 375, 370, -1, 372, -1, - 367, -1, 203, 204, -1, -1, 207, 197, 97, 98, - 99, -1, 143, -1, -1, -1, 383, -1, 385, 411, - 387, 413, 414, -1, -1, 411, -1, 413, 414, -1, - -1, 411, -1, 413, 414, -1, -1, 411, -1, 413, - 414, -1, 434, 435, -1, 143, -1, -1, 434, 435, - -1, -1, 183, -1, 434, 435, -1, 188, -1, -1, - 434, 435, -1, 264, -1, -1, -1, 257, -1, -1, - -1, 272, 203, 204, -1, -1, 207, -1, -1, 269, - -1, 271, -1, -1, 274, 183, -1, -1, -1, -1, - 188, 40, 41, -1, 43, -1, 286, -1, 47, -1, - 143, 66, 67, -1, -1, 203, 204, 56, -1, 207, - 59, -1, -1, -1, 304, 305, 306, 307, 308, 309, - 310, 311, 312, 313, 314, 143, -1, 92, 93, 94, - 95, 96, 322, 264, -1, 143, -1, -1, -1, -1, - 183, 272, -1, -1, -1, 188, -1, -1, 97, 98, - 99, -1, -1, -1, -1, -1, 346, 347, 348, 349, - 203, 204, -1, -1, 207, 183, 264, -1, -1, 370, - 188, 372, -1, -1, 272, 183, -1, -1, -1, -1, - 188, 371, -1, 373, 374, 203, 204, -1, -1, 207, - -1, -1, -1, -1, -1, 203, 204, -1, -1, 207, - -1, -1, -1, -1, -1, -1, -1, -1, 40, 41, - 411, 43, 413, 414, -1, -1, 48, 49, 50, 51, - -1, 264, -1, -1, 56, 415, -1, -1, -1, 272, - -1, -1, -1, 434, 435, -1, -1, -1, -1, 370, - -1, 372, -1, -1, -1, -1, 264, -1, -1, -1, - -1, -1, 40, 41, 272, 43, 264, -1, -1, 47, - -1, 16, -1, -1, 272, -1, 98, 99, 56, -1, - -1, 59, 370, -1, 372, -1, -1, -1, -1, -1, - 411, -1, 413, 414, -1, 40, 41, 42, 43, 44, - 45, 46, -1, 48, 49, 50, 51, 52, -1, -1, - -1, 56, 57, 434, 435, 60, -1, -1, -1, 97, - 98, 99, -1, 411, -1, 413, 414, -1, -1, -1, - -1, 76, 77, 40, 41, -1, 43, 370, -1, 372, - 47, -1, -1, -1, -1, -1, 434, 435, 93, 56, - -1, 96, 59, 98, 99, 100, 101, 102, 103, -1, - 40, 41, 370, 43, 372, -1, -1, -1, 48, 49, - 50, 51, 370, -1, 372, -1, 56, -1, 411, -1, - 413, 414, -1, -1, 64, 65, -1, -1, -1, -1, - 97, 98, 99, -1, -1, -1, -1, -1, -1, -1, - -1, 434, 435, 411, -1, 413, 414, -1, -1, -1, - -1, -1, -1, 411, -1, 413, 414, -1, 98, 99, - -1, -1, -1, -1, -1, -1, 434, 435, -1, -1, - 11, -1, -1, -1, -1, -1, 434, 435, 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, -1, 43, -1, -1, 98, 99, 48, - 49, 50, 51, -1, -1, 54, 55, 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, -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, 16, 43, 98, 99, -1, -1, 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, -1, -1, - -1, 56, -1, -1, -1, 60, -1, 62, -1, -1, - -1, -1, -1, 40, 41, -1, 43, 98, 99, -1, - 47, 76, 77, 40, 41, 16, 43, -1, -1, 56, - 47, -1, 59, -1, -1, -1, -1, -1, 93, 56, - -1, 96, 59, 98, 99, 100, 101, 102, 103, 40, - 41, 42, 43, 44, 45, 46, -1, 48, 49, 50, - 51, 52, -1, -1, -1, 56, -1, -1, -1, 60, - 97, 98, 99, -1, -1, -1, -1, -1, -1, -1, - 97, 98, 99, -1, -1, 76, 77, 40, 41, 16, - 43, -1, -1, -1, 47, -1, -1, -1, -1, -1, - -1, -1, 93, 56, -1, 96, 59, 98, 99, 100, - 101, 102, 103, 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, 17, 18, - -1, 20, 21, -1, 97, 98, 99, -1, -1, 76, - 77, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 40, 41, -1, 43, -1, 93, -1, -1, 96, - -1, 98, 99, 100, 101, 102, 103, 56, -1, -1, - 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, - -1, -1, -1, -1, -1, -1, -1, -1, 97, 98, - 99, 19, -1, -1, 22, 23, 24, -1, 26, 27, + 130, 131, 132, 133, 134, 143, 414, 52, 416, 417, + 62, 62, 25, 62, 320, 30, 146, 323, 62, 149, + 340, 53, 152, 62, 154, 62, 156, 340, 62, 437, + 438, 62, 53, 53, 53, 373, 62, 375, 62, 405, + 62, 407, 373, 409, 375, 9, 9, 185, 9, 209, + -1, 416, 190, 373, 195, 375, 186, -1, 378, -1, + 373, -1, 375, -1, 370, -1, -1, 205, 206, 199, + -1, 209, -1, -1, -1, -1, 414, -1, 416, 417, + 386, -1, 388, 414, 390, 416, 417, 92, 93, 94, + 95, 96, -1, 143, 414, -1, 416, 417, -1, 437, + 438, 414, 143, 416, 417, -1, 437, 438, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 437, 438, -1, + -1, -1, -1, -1, 437, 438, -1, 143, 266, 259, + -1, -1, -1, -1, -1, 185, 274, -1, -1, -1, + 190, 271, -1, 273, 185, -1, 276, 40, 41, 190, + 43, -1, 143, -1, 47, 205, 206, -1, 288, 209, + -1, -1, -1, 56, 205, 206, 59, -1, 209, 185, + -1, -1, -1, -1, 190, -1, -1, 307, 308, 309, + 310, 311, 312, 313, 314, 315, 316, 317, -1, 205, + 206, -1, -1, 209, 185, 325, -1, -1, 143, 190, + -1, -1, -1, -1, 97, 98, -1, -1, -1, -1, + 40, 41, -1, 43, 205, 206, 266, 47, 209, 349, + 350, 351, 352, -1, 274, 266, 56, -1, -1, 59, + -1, -1, -1, 274, -1, 373, -1, 375, -1, -1, + 185, -1, -1, -1, 374, 190, 376, 377, -1, -1, + 266, -1, -1, -1, -1, -1, -1, -1, 274, -1, + 205, 206, -1, -1, 209, -1, -1, 97, 98, -1, + 40, 41, -1, 43, -1, 266, 414, 47, 416, 417, + -1, -1, -1, 274, -1, -1, 56, -1, 418, 59, + -1, -1, -1, -1, 64, 65, -1, -1, -1, 437, + 438, -1, -1, -1, -1, -1, -1, -1, 78, 79, + 80, 81, 82, 83, 84, 85, 86, 87, 88, -1, + -1, 266, -1, 373, -1, 375, -1, 97, 98, 274, + -1, -1, 373, -1, 375, 40, 41, -1, 43, -1, + -1, -1, 47, -1, -1, -1, -1, -1, -1, -1, + -1, 56, -1, -1, 59, -1, -1, 373, -1, 375, + -1, -1, -1, -1, 414, -1, 416, 417, -1, -1, + -1, -1, -1, 414, -1, 416, 417, -1, -1, -1, + 16, -1, 373, -1, 375, -1, -1, 437, 438, -1, + -1, -1, 97, 98, -1, -1, 437, 438, 414, -1, + 416, 417, -1, -1, 40, 41, 42, 43, 44, 45, + 46, 47, 48, 49, 50, 51, 52, -1, -1, -1, + 56, 437, 438, 414, 60, 416, 417, -1, 373, -1, + 375, -1, 40, 41, -1, 43, -1, -1, -1, 47, + 76, 77, -1, -1, -1, -1, 437, 438, 56, -1, + -1, 59, -1, -1, -1, -1, -1, 93, -1, -1, + 96, 97, 98, 99, 100, 101, 102, -1, -1, 414, + -1, 416, 417, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 11, -1, -1, -1, -1, -1, 97, + 98, 19, 437, 438, 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, 40, 41, 54, 43, 56, -1, - -1, 47, 40, 41, -1, 43, 64, 65, -1, 47, - 56, -1, -1, 59, -1, -1, -1, -1, 56, 66, - 67, 59, 69, 70, 71, 72, 73, 74, 75, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 98, 99, 89, 90, 91, 92, 93, 94, 95, 96, - -1, 97, 98, 99, -1, -1, -1, 53, -1, 97, - 98, 99, 58, -1, -1, -1, -1, 63, -1, -1, + 38, 39, 40, 41, -1, 43, -1, -1, -1, 47, + 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, -1, 43, -1, 97, + 98, 47, 48, 49, 50, 51, -1, -1, 54, 55, + 56, -1, -1, -1, -1, -1, -1, -1, 64, 65, + -1, -1, -1, -1, -1, -1, 40, 41, -1, 43, + -1, -1, -1, 47, -1, -1, -1, -1, -1, -1, + -1, -1, 56, 12, -1, 59, -1, -1, -1, -1, + 19, 97, 98, 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, 47, 48, + 49, 50, 51, 97, 98, 54, -1, 56, -1, -1, + -1, -1, -1, -1, -1, 64, 65, -1, -1, -1, + -1, -1, -1, 40, 41, -1, 43, -1, -1, -1, + 47, -1, -1, -1, -1, -1, -1, -1, -1, 56, + 12, -1, 59, -1, -1, -1, -1, 19, 97, 98, + 22, 23, 24, -1, 26, 27, 28, 29, -1, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, + 16, 43, -1, -1, -1, 47, 48, 49, 50, 51, + 97, 98, 54, -1, 56, -1, -1, -1, -1, -1, + -1, -1, 64, 65, 40, 41, 42, 43, 44, 45, + 46, 47, 48, 49, 50, 51, 52, 58, -1, -1, + 56, 57, 63, -1, 60, 66, 67, 68, 69, 70, + 71, 72, 73, 74, 75, 97, 98, -1, -1, -1, + 76, 77, -1, 16, -1, -1, -1, -1, 89, 90, + 91, 92, 93, 94, 95, 96, -1, 93, -1, -1, + 96, 97, 98, 99, 100, 101, 102, 40, 41, 42, + 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, + -1, -1, -1, 56, 66, 67, -1, 60, -1, 62, + 72, 73, 74, 75, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 76, 77, -1, 16, -1, -1, -1, + 92, 93, 94, 95, 96, -1, -1, -1, -1, -1, + 93, -1, -1, 96, 97, 98, 99, 100, 101, 102, + 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, + 50, 51, 52, -1, -1, -1, 56, -1, -1, -1, + 60, -1, -1, -1, 17, 18, -1, 20, 21, -1, + -1, -1, -1, -1, -1, -1, 76, 77, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 40, 41, -1, + 43, -1, -1, 93, 47, -1, 96, 97, 98, 99, + 100, 101, 102, 56, -1, -1, 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, -1, -1, -1, -1, + -1, -1, -1, 19, 97, 98, 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, 47, 48, 49, 50, 51, -1, -1, 54, -1, + 56, -1, -1, -1, -1, -1, -1, 53, 64, 65, + -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, + -1, 97, 98, 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, @@ -4343,88 +4344,84 @@ namespace xsk { namespace gsc { namespace s1 { -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, + 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, 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, -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, -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, -1, 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, -1, 90, 91, 92, 93, 94, 95, 96, 66, - 67, -1, -1, 70, 71, 72, 73, 74, 75, 66, + -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, -1, 90, -1, 92, 93, 94, 95, 96, - -1, -1, -1, -1, -1, 92, 93, 94, 95, 96, - 66, 67, -1, -1, -1, -1, 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 + -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 }; const unsigned char parser::yystos_[] = { - 0, 11, 12, 13, 14, 15, 99, 114, 115, 116, - 117, 118, 119, 120, 121, 186, 98, 186, 187, 187, - 52, 0, 116, 117, 118, 52, 78, 62, 62, 100, - 189, 168, 186, 16, 40, 41, 42, 43, 44, 45, - 46, 48, 49, 50, 51, 52, 56, 60, 76, 77, - 93, 96, 101, 102, 103, 153, 158, 159, 160, 161, - 162, 163, 164, 165, 166, 167, 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, 186, 187, 56, 186, 187, 56, - 153, 56, 57, 153, 169, 170, 186, 153, 153, 102, - 103, 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, 165, 166, 186, 187, - 52, 60, 62, 54, 127, 186, 56, 52, 60, 56, + 0, 11, 12, 13, 14, 15, 47, 98, 114, 115, + 116, 117, 118, 119, 120, 121, 187, 97, 98, 188, + 188, 52, 0, 116, 117, 118, 52, 78, 62, 62, + 99, 190, 168, 187, 16, 40, 41, 42, 43, 44, + 45, 46, 48, 49, 50, 51, 52, 56, 60, 76, + 77, 93, 96, 98, 100, 101, 102, 153, 158, 159, + 160, 161, 162, 163, 164, 165, 166, 167, 171, 172, + 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, + 183, 184, 185, 187, 188, 189, 190, 191, 192, 193, + 194, 195, 53, 53, 58, 56, 187, 188, 56, 187, + 188, 56, 153, 56, 57, 153, 169, 170, 187, 153, + 153, 101, 102, 98, 62, 63, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 75, 89, 90, 91, 92, + 93, 94, 95, 96, 56, 59, 165, 166, 187, 188, + 52, 60, 62, 54, 127, 187, 56, 52, 60, 56, 52, 60, 56, 53, 58, 153, 58, 57, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, - 153, 153, 153, 153, 153, 153, 153, 153, 186, 60, - 169, 170, 186, 11, 19, 22, 23, 24, 26, 27, - 28, 29, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 55, 56, 64, 65, 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, 152, 155, 156, 157, 163, 164, 172, - 173, 176, 180, 181, 182, 183, 186, 153, 169, 186, - 153, 169, 186, 153, 153, 57, 153, 61, 57, 186, - 53, 52, 12, 122, 124, 153, 62, 52, 62, 52, - 122, 52, 52, 52, 52, 93, 189, 192, 61, 62, - 62, 62, 153, 62, 52, 52, 56, 163, 164, 176, - 176, 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, 153, 169, 12, 122, 62, 53, - 153, 27, 153, 128, 155, 156, 157, 176, 186, 153, - 61, 61, 62, 169, 169, 153, 52, 52, 52, 52, - 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, - 153, 57, 169, 57, 169, 57, 153, 52, 53, 62, - 53, 52, 53, 62, 30, 58, 53, 53, 53, 153, - 153, 153, 153, 52, 53, 52, 53, 52, 53, 169, - 122, 153, 122, 153, 154, 153, 186, 127, 62, 62, - 53, 53, 58, 53, 58, 53, 58, 169, 169, 169, - 53, 25, 53, 62, 53, 30, 62, 62, 170, 62, - 170, 62, 170, 53, 53, 53, 122, 62, 128, 122, - 153, 53, 53, 53, 53, 53, 62, 62, 62, 122, - 122 + 153, 153, 153, 153, 153, 153, 153, 153, 47, 98, + 186, 60, 169, 170, 187, 11, 19, 22, 23, 24, + 26, 27, 28, 29, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 55, 56, 64, 65, 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, 152, 155, 156, 157, 163, + 164, 172, 173, 176, 180, 181, 182, 183, 187, 153, + 169, 187, 153, 169, 187, 153, 153, 57, 153, 61, + 57, 187, 53, 52, 12, 122, 124, 153, 62, 52, + 62, 52, 122, 52, 52, 52, 52, 93, 190, 193, + 61, 62, 62, 62, 153, 62, 52, 52, 56, 163, + 164, 176, 176, 55, 123, 62, 62, 62, 62, 62, + 17, 18, 20, 21, 59, 64, 65, 78, 79, 80, + 81, 82, 83, 84, 85, 86, 87, 88, 57, 53, + 52, 57, 53, 52, 57, 58, 57, 153, 169, 12, + 122, 62, 53, 153, 27, 153, 128, 155, 156, 157, + 176, 187, 153, 61, 61, 62, 169, 169, 153, 52, + 52, 52, 52, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 57, 169, 57, 169, 57, 153, + 52, 53, 62, 53, 52, 53, 62, 30, 58, 53, + 53, 53, 153, 153, 153, 153, 52, 53, 52, 53, + 52, 53, 169, 122, 153, 122, 153, 154, 153, 187, + 127, 62, 62, 53, 53, 58, 53, 58, 53, 58, + 169, 169, 169, 53, 25, 53, 62, 53, 30, 62, + 62, 170, 62, 170, 62, 170, 53, 53, 53, 122, + 62, 128, 122, 153, 53, 53, 53, 53, 53, 62, + 62, 62, 122, 122 }; const unsigned char @@ -4448,10 +4445,11 @@ namespace xsk { namespace gsc { namespace s1 { 160, 160, 160, 160, 160, 160, 160, 160, 160, 161, 162, 163, 163, 164, 164, 165, 165, 165, 165, 165, 165, 166, 166, 166, 166, 167, 168, 168, 168, 169, - 169, 170, 170, 171, 171, 172, 173, 173, 174, 175, - 176, 176, 176, 176, 176, 176, 176, 176, 176, 177, - 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, - 187, 188, 189, 190, 191, 191, 192, 192, 193, 194 + 169, 170, 170, 171, 171, 172, 173, 174, 175, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 177, 178, + 179, 180, 181, 182, 183, 184, 185, 186, 187, 187, + 188, 188, 189, 190, 191, 192, 192, 193, 193, 194, + 195 }; const signed char @@ -4475,10 +4473,11 @@ namespace xsk { namespace gsc { namespace s1 { 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, 7, 2, 1, 2, 1, 1, 1 + 0, 3, 1, 2, 3, 4, 3, 3, 3, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, + 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, + 1, 1, 1, 1, 7, 2, 1, 2, 1, 1, + 1 }; @@ -4488,28 +4487,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, 334, 335, 339, 341, 346, - 348, 353, 354, 358, 359, 363, 365, 367, 370, 374, - 376, 381, 383, 385, 390, 395, 397, 402, 407, 409, - 414, 416, 421, 426, 428, 433, 438, 443, 448, 453, - 458, 460, 465, 470, 472, 477, 482, 487, 492, 494, - 499, 504, 509, 514, 515, 516, 520, 521, 525, 527, - 529, 531, 533, 535, 537, 539, 541, 543, 545, 550, - 552, 557, 559, 564, 569, 571, 573, 575, 577, 579, - 581, 583, 585, 587, 589, 591, 593, 595, 597, 599, - 601, 603, 608, 609, 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, 638, - 643, 648, 649, 652, 653, 657, 659, 661, 663, 665, - 667, 672, 674, 676, 678, 683, 688, 690, 693, 697, - 700, 704, 706, 711, 713, 718, 723, 725, 730, 735, - 740, 741, 742, 743, 744, 745, 746, 747, 748, 752, - 757, 762, 767, 772, 777, 782, 787, 792, 797, 802, - 804, 809, 814, 819, 824, 826, 831, 833, 838, 843 + 0, 255, 255, 256, 260, 262, 264, 266, 268, 270, + 275, 279, 284, 285, 286, 287, 288, 292, 297, 302, + 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, 342, 347, + 349, 354, 355, 359, 360, 364, 366, 368, 371, 375, + 377, 382, 384, 386, 391, 396, 398, 403, 408, 410, + 415, 417, 422, 427, 429, 434, 439, 444, 449, 454, + 459, 461, 466, 471, 473, 478, 483, 488, 493, 495, + 500, 505, 510, 515, 516, 517, 521, 522, 526, 528, + 530, 532, 534, 536, 538, 540, 542, 544, 546, 551, + 553, 558, 560, 565, 570, 572, 574, 576, 578, 580, + 582, 584, 586, 588, 590, 592, 594, 596, 598, 600, + 602, 604, 609, 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, 639, + 644, 649, 650, 653, 654, 658, 660, 662, 664, 666, + 668, 673, 675, 677, 679, 684, 689, 691, 694, 698, + 701, 705, 707, 712, 714, 719, 724, 729, 734, 739, + 740, 741, 742, 743, 744, 745, 746, 747, 751, 756, + 761, 766, 771, 776, 781, 786, 791, 796, 801, 803, + 808, 810, 815, 820, 825, 830, 832, 837, 839, 844, + 849 }; void @@ -4544,7 +4544,7 @@ namespace xsk { namespace gsc { namespace s1 { } } } // xsk::gsc::s1 #line 4546 "parser.cpp" -#line 847 "parser.ypp" +#line 853 "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 7c62cfcd..92ad9d47 100644 --- a/src/s1/xsk/parser.hpp +++ b/src/s1/xsk/parser.hpp @@ -474,6 +474,7 @@ namespace xsk { namespace gsc { namespace s1 { // expr_game char dummy19[sizeof (ast::expr_game::ptr)]; + // expr_identifier_nosize // expr_identifier char dummy20[sizeof (ast::expr_identifier::ptr)]; @@ -618,7 +619,6 @@ namespace xsk { namespace gsc { namespace s1 { // stmt_while char dummy66[sizeof (ast::stmt_while::ptr)]; - // "field" // "path" // "identifier" // "string literal" @@ -721,7 +721,7 @@ namespace xsk { namespace gsc { namespace s1 { TRUE = 44, // "true" FALSE = 45, // "false" UNDEFINED = 46, // "undefined" - SIZE = 47, // ".size" + SIZE = 47, // "size" GAME = 48, // "game" SELF = 49, // "self" ANIM = 50, // "anim" @@ -771,13 +771,13 @@ namespace xsk { namespace gsc { namespace s1 { MUL = 94, // "*" DIV = 95, // "/" MOD = 96, // "%" - FIELD = 97, // "field" - PATH = 98, // "path" - IDENTIFIER = 99, // "identifier" - STRING = 100, // "string literal" - ISTRING = 101, // "localized string" - FLOAT = 102, // "float" - INTEGER = 103, // "integer" + PATH = 97, // "path" + IDENTIFIER = 98, // "identifier" + STRING = 99, // "string literal" + ISTRING = 100, // "localized string" + FLOAT = 101, // "float" + INTEGER = 102, // "integer" + SIZEOF = 103, // SIZEOF ADD_ARRAY = 104, // ADD_ARRAY THEN = 105, // THEN TERN = 106, // TERN @@ -852,7 +852,7 @@ namespace xsk { namespace gsc { namespace s1 { S_TRUE = 44, // "true" S_FALSE = 45, // "false" S_UNDEFINED = 46, // "undefined" - S_SIZE = 47, // ".size" + S_SIZE = 47, // "size" S_GAME = 48, // "game" S_SELF = 49, // "self" S_ANIM = 50, // "anim" @@ -902,13 +902,13 @@ namespace xsk { namespace gsc { namespace s1 { S_MUL = 94, // "*" S_DIV = 95, // "/" S_MOD = 96, // "%" - S_FIELD = 97, // "field" - S_PATH = 98, // "path" - S_IDENTIFIER = 99, // "identifier" - S_STRING = 100, // "string literal" - S_ISTRING = 101, // "localized string" - S_FLOAT = 102, // "float" - S_INTEGER = 103, // "integer" + S_PATH = 97, // "path" + S_IDENTIFIER = 98, // "identifier" + S_STRING = 99, // "string literal" + S_ISTRING = 100, // "localized string" + S_FLOAT = 101, // "float" + S_INTEGER = 102, // "integer" + S_SIZEOF = 103, // SIZEOF S_ADD_ARRAY = 104, // ADD_ARRAY S_THEN = 105, // THEN S_TERN = 106, // TERN @@ -991,15 +991,16 @@ namespace xsk { namespace gsc { namespace s1 { S_expr_level = 183, // expr_level S_expr_animation = 184, // expr_animation S_expr_animtree = 185, // expr_animtree - S_expr_identifier = 186, // expr_identifier - S_expr_path = 187, // expr_path - S_expr_istring = 188, // expr_istring - S_expr_string = 189, // expr_string - 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_expr_identifier_nosize = 186, // expr_identifier_nosize + 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_vector = 191, // expr_vector + S_expr_float = 192, // expr_float + S_expr_integer = 193, // expr_integer + S_expr_false = 194, // expr_false + S_expr_true = 195 // expr_true }; }; @@ -1122,6 +1123,7 @@ namespace xsk { namespace gsc { namespace s1 { value.move< ast::expr_game::ptr > (std::move (that.value)); break; + case symbol_kind::S_expr_identifier_nosize: // expr_identifier_nosize case symbol_kind::S_expr_identifier: // expr_identifier value.move< ast::expr_identifier::ptr > (std::move (that.value)); break; @@ -1313,7 +1315,6 @@ namespace xsk { namespace gsc { namespace s1 { value.move< ast::stmt_while::ptr > (std::move (that.value)); break; - case symbol_kind::S_FIELD: // "field" case symbol_kind::S_PATH: // "path" case symbol_kind::S_IDENTIFIER: // "identifier" case symbol_kind::S_STRING: // "string literal" @@ -2392,6 +2393,7 @@ switch (yykind) value.template destroy< ast::expr_game::ptr > (); break; + case symbol_kind::S_expr_identifier_nosize: // expr_identifier_nosize case symbol_kind::S_expr_identifier: // expr_identifier value.template destroy< ast::expr_identifier::ptr > (); break; @@ -2583,7 +2585,6 @@ switch (yykind) value.template destroy< ast::stmt_while::ptr > (); break; - case symbol_kind::S_FIELD: // "field" case symbol_kind::S_PATH: // "path" case symbol_kind::S_IDENTIFIER: // "identifier" case symbol_kind::S_STRING: // "string literal" @@ -2689,7 +2690,7 @@ switch (yykind) { S1_ASSERT (tok == token::S1EOF || (token::S1error <= tok && tok <= token::MOD) - || (token::ADD_ARRAY <= tok && tok <= token::POSTDEC)); + || (token::SIZEOF <= tok && tok <= token::POSTDEC)); } #if 201103L <= YY_CPLUSPLUS symbol_type (int tok, std::string v, location_type l) @@ -2699,7 +2700,7 @@ switch (yykind) : super_type(token_type (tok), v, l) #endif { - S1_ASSERT ((token::FIELD <= tok && tok <= token::INTEGER)); + S1_ASSERT ((token::PATH <= tok && tok <= token::INTEGER)); } }; @@ -4204,21 +4205,6 @@ switch (yykind) return symbol_type (token::MOD, l); } #endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_FIELD (std::string v, location_type l) - { - return symbol_type (token::FIELD, std::move (v), std::move (l)); - } -#else - static - symbol_type - make_FIELD (const std::string& v, const location_type& l) - { - return symbol_type (token::FIELD, v, l); - } -#endif #if 201103L <= YY_CPLUSPLUS static symbol_type @@ -4309,6 +4295,21 @@ switch (yykind) return symbol_type (token::INTEGER, v, l); } #endif +#if 201103L <= YY_CPLUSPLUS + static + symbol_type + make_SIZEOF (location_type l) + { + return symbol_type (token::SIZEOF, std::move (l)); + } +#else + static + symbol_type + make_SIZEOF (const location_type& l) + { + return symbol_type (token::SIZEOF, l); + } +#endif #if 201103L <= YY_CPLUSPLUS static symbol_type @@ -4788,9 +4789,9 @@ switch (yykind) /// Constants. enum { - yylast_ = 2300, ///< Last index in yytable_. - yynnts_ = 82, ///< Number of nonterminal symbols. - yyfinal_ = 21 ///< Termination state number. + yylast_ = 2251, ///< Last index in yytable_. + yynnts_ = 83, ///< Number of nonterminal symbols. + yyfinal_ = 22 ///< Termination state number. }; @@ -4902,6 +4903,7 @@ switch (yykind) value.copy< ast::expr_game::ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_expr_identifier_nosize: // expr_identifier_nosize case symbol_kind::S_expr_identifier: // expr_identifier value.copy< ast::expr_identifier::ptr > (YY_MOVE (that.value)); break; @@ -5093,7 +5095,6 @@ switch (yykind) value.copy< ast::stmt_while::ptr > (YY_MOVE (that.value)); break; - case symbol_kind::S_FIELD: // "field" case symbol_kind::S_PATH: // "path" case symbol_kind::S_IDENTIFIER: // "identifier" case symbol_kind::S_STRING: // "string literal" @@ -5218,6 +5219,7 @@ switch (yykind) value.move< ast::expr_game::ptr > (YY_MOVE (s.value)); break; + case symbol_kind::S_expr_identifier_nosize: // expr_identifier_nosize case symbol_kind::S_expr_identifier: // expr_identifier value.move< ast::expr_identifier::ptr > (YY_MOVE (s.value)); break; @@ -5409,7 +5411,6 @@ switch (yykind) value.move< ast::stmt_while::ptr > (YY_MOVE (s.value)); break; - case symbol_kind::S_FIELD: // "field" case symbol_kind::S_PATH: // "path" case symbol_kind::S_IDENTIFIER: // "identifier" case symbol_kind::S_STRING: // "string literal" @@ -5482,7 +5483,7 @@ switch (yykind) #line 13 "parser.ypp" } } } // xsk::gsc::s1 -#line 5486 "parser.hpp" +#line 5487 "parser.hpp" diff --git a/src/s2/xsk/lexer.cpp b/src/s2/xsk/lexer.cpp index bc296ffa..f517700d 100644 --- a/src/s2/xsk/lexer.cpp +++ b/src/s2/xsk/lexer.cpp @@ -60,6 +60,7 @@ const std::unordered_map keywo { "true", parser::token::TRUE }, { "false", parser::token::FALSE }, { "undefined", parser::token::UNDEFINED }, + { "size", parser::token::SIZE }, { "game", parser::token::GAME }, { "self", parser::token::SELF }, { "anim", parser::token::ANIM }, @@ -85,8 +86,8 @@ bool buffer::push(char c) return true; } -reader::reader() : state(reader::end), buffer_pos(0), bytes_remaining(0), - last_byte(0), current_byte(0) { } +reader::reader() : state(reader::end), buffer_pos(0), + bytes_remaining(0), last_byte(0), current_byte(0) {} void reader::init(const char* data, size_t size) { @@ -174,7 +175,6 @@ auto lexer::lex() -> parser::symbol_type { buffer_.length = 0; state_ = state::start; - loc_.step(); while (true) { @@ -182,6 +182,7 @@ auto lexer::lex() -> parser::symbol_type auto& last = reader_.last_byte; auto& curr = reader_.current_byte; auto path = false; + loc_.step(); if (state == reader::end) { @@ -214,7 +215,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 != '*' && curr != '/') return parser::make_DIV(loc_); advance(); @@ -246,14 +247,35 @@ auto lexer::lex() -> parser::symbol_type } else if (last == '#' && curr == '/') { - reader_.advance(); + advance(); break; } - reader_.advance(); + advance(); } } } + else if (last == '@') + { + while (true) + { + if (state == reader::end) + throw comp_error(loc_, "unmatched script doc comment start ('/@')"); + + if (curr == '\n') + { + loc_.lines(); + loc_.step(); + } + else if (last == '@' && curr == '/') + { + advance(); + break; + } + + advance(); + } + } else if (last == '*') { while (true) @@ -268,11 +290,11 @@ auto lexer::lex() -> parser::symbol_type } else if (last == '*' && curr == '/') { - reader_.advance(); + advance(); break; } - reader_.advance(); + advance(); } } else if (last == '/') @@ -282,30 +304,10 @@ auto lexer::lex() -> parser::symbol_type if (state == reader::end) break; - if (last == '\\' && (curr == '\r' || curr == '\n')) - { - reader_.advance(); - - if (state == reader::end) - break; - - if (last == '\r') - { - if (curr != '\n') - throw comp_error(loc_, "invalid token ('\')"); - - reader_.advance(); - } - - loc_.lines(); - loc_.step(); - continue; - } - if (curr == '\n') break; - reader_.advance(); + advance(); } } continue; @@ -315,8 +317,8 @@ auto lexer::lex() -> parser::symbol_type if (!indev_) throw comp_error(loc_, "unmatched devblock end ('#/')"); - indev_ = false; advance(); + indev_ = false; return parser::make_DEVEND(loc_); } @@ -337,7 +339,7 @@ auto lexer::lex() -> parser::symbol_type state_ = state::preprocessor; goto lex_name; case '*': - if (curr != '/' && curr != '=') + if (curr != '=' && curr != '/') return parser::make_MUL(loc_); advance(); @@ -350,13 +352,9 @@ auto lexer::lex() -> parser::symbol_type state_ = state::string; goto lex_string; case '.': - advance(); - - if (state == reader::end) - throw comp_error(loc_, "unterminated field ('.')"); - - state_ = state::field; - goto lex_name_or_number; + if (curr < '0' || curr > '9') + return parser::make_DOT(loc_); + goto lex_number; case '(': return parser::make_LPAREN(loc_); case ')': @@ -480,7 +478,6 @@ auto lexer::lex() -> parser::symbol_type advance(); return parser::make_ASSIGN_RSHIFT(loc_); default: -lex_name_or_number: if (last >= '0' && last <= '9') goto lex_number; else if (last == '_' || last >= 'A' && last <= 'Z' || last >= 'a' && last <= 'z') @@ -562,23 +559,8 @@ lex_name: advance(); } - if (state_ == state::field) + if (state_ == state::preprocessor) { - if (path) - throw comp_error(loc_, "invalid field token '\\'"); - - if (std::string_view(buffer_.data, buffer_.length) == "size") - { - return parser::make_SIZE(loc_); - } - - return parser::make_FIELD(std::string(buffer_.data, buffer_.length), loc_); - } - else if (state_ == state::preprocessor) - { - if (path) - throw comp_error(loc_, "invalid preprocessor directive"); - auto token = parser::token::S2UNDEF; if (buffer_.length < 16) @@ -594,7 +576,8 @@ lex_name: } } - preprocessor(token); + preprocessor_run(token); + state_ = state::start; continue; } @@ -620,14 +603,11 @@ lex_name: } lex_number: - if (state_ == state::field) - buffer_.push('.'); - - if (state_ == state::field || last == '.' || last != '0' || (last == '0' && (curr != 'o' && curr != 'b' && curr != 'x'))) + if (last == '.' || last != '0' || (last == '0' && (curr != 'o' && curr != 'b' && curr != 'x'))) { buffer_.push(last); - auto dot = 0; + auto dot = last == '.' ? 1 : 0; auto flt = 0; while (true) @@ -663,10 +643,10 @@ lex_number: if (last == '\'') throw comp_error(loc_, "invalid number literal"); - if (state_ == state::field && dot || dot > 1 || flt > 1 || flt && buffer_.data[buffer_.length - 1] != 'f') + if (dot > 1 || flt > 1 || flt && buffer_.data[buffer_.length - 1] != 'f') throw comp_error(loc_, "invalid number literal"); - if (state_ == state::field || dot || flt) + if (dot || flt) return parser::make_FLOAT(std::string(buffer_.data, buffer_.length), loc_); return parser::make_INTEGER(std::string(buffer_.data, buffer_.length), loc_); @@ -681,7 +661,7 @@ lex_number: break; if (curr == '\'' && (last == '\'' || last == 'o') || (curr == 'o' && last == '\'')) - throw comp_error(loc_, "invalid octal literal"); + throw comp_error(loc_, "invalid octal literal"); if (curr == '\'') { @@ -771,18 +751,22 @@ lex_number: return parser::make_INTEGER(xsk::utils::string::hex_to_dec(buffer_.data), loc_); } - // cant get here! + + throw error("UNEXPECTED LEXER INTERNAL ERROR!"); } } void lexer::advance() { reader_.advance(); + loc_.end.column++; - // dont wrap comment marks '/\/' '/\*' outside strings - if (state_ == state::start && reader_.last_byte == '/') - return; + if (reader_.current_byte == '\\') [[unlikely]] + preprocessor_wrap(); +} +void lexer::preprocessor_wrap() +{ while (reader_.current_byte == '\\') { if (reader_.bytes_remaining == 1) @@ -824,7 +808,7 @@ void lexer::advance() } } -void lexer::preprocessor(parser::token::token_kind_type token) +void lexer::preprocessor_run(parser::token::token_kind_type token) { if (!clean_) throw comp_error(loc_, "invalid token ('#')"); diff --git a/src/s2/xsk/lexer.hpp b/src/s2/xsk/lexer.hpp index ae78cb40..253fb112 100644 --- a/src/s2/xsk/lexer.hpp +++ b/src/s2/xsk/lexer.hpp @@ -44,7 +44,7 @@ struct reader class lexer { - enum class state : std::uint8_t { start, string, localize, field, preprocessor }; + enum class state : std::uint8_t { start, string, localize, preprocessor }; reader reader_; buffer buffer_; @@ -66,7 +66,8 @@ public: private: void advance(); - void preprocessor(parser::token::token_kind_type token); + void preprocessor_wrap(); + void preprocessor_run(parser::token::token_kind_type token); }; } // namespace xsk::gsc::s2 diff --git a/src/s2/xsk/parser.cpp b/src/s2/xsk/parser.cpp index 38fd731c..bd46209f 100644 --- a/src/s2/xsk/parser.cpp +++ b/src/s2/xsk/parser.cpp @@ -301,6 +301,7 @@ namespace xsk { namespace gsc { namespace s2 { value.YY_MOVE_OR_COPY< ast::expr_game::ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_expr_identifier_nosize: // expr_identifier_nosize case symbol_kind::S_expr_identifier: // expr_identifier value.YY_MOVE_OR_COPY< ast::expr_identifier::ptr > (YY_MOVE (that.value)); break; @@ -492,7 +493,6 @@ namespace xsk { namespace gsc { namespace s2 { value.YY_MOVE_OR_COPY< ast::stmt_while::ptr > (YY_MOVE (that.value)); break; - case symbol_kind::S_FIELD: // "field" case symbol_kind::S_PATH: // "path" case symbol_kind::S_IDENTIFIER: // "identifier" case symbol_kind::S_STRING: // "string literal" @@ -603,6 +603,7 @@ namespace xsk { namespace gsc { namespace s2 { value.move< ast::expr_game::ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_expr_identifier_nosize: // expr_identifier_nosize case symbol_kind::S_expr_identifier: // expr_identifier value.move< ast::expr_identifier::ptr > (YY_MOVE (that.value)); break; @@ -794,7 +795,6 @@ namespace xsk { namespace gsc { namespace s2 { value.move< ast::stmt_while::ptr > (YY_MOVE (that.value)); break; - case symbol_kind::S_FIELD: // "field" case symbol_kind::S_PATH: // "path" case symbol_kind::S_IDENTIFIER: // "identifier" case symbol_kind::S_STRING: // "string literal" @@ -905,6 +905,7 @@ namespace xsk { namespace gsc { namespace s2 { value.copy< ast::expr_game::ptr > (that.value); break; + case symbol_kind::S_expr_identifier_nosize: // expr_identifier_nosize case symbol_kind::S_expr_identifier: // expr_identifier value.copy< ast::expr_identifier::ptr > (that.value); break; @@ -1096,7 +1097,6 @@ namespace xsk { namespace gsc { namespace s2 { value.copy< ast::stmt_while::ptr > (that.value); break; - case symbol_kind::S_FIELD: // "field" case symbol_kind::S_PATH: // "path" case symbol_kind::S_IDENTIFIER: // "identifier" case symbol_kind::S_STRING: // "string literal" @@ -1206,6 +1206,7 @@ namespace xsk { namespace gsc { namespace s2 { value.move< ast::expr_game::ptr > (that.value); break; + case symbol_kind::S_expr_identifier_nosize: // expr_identifier_nosize case symbol_kind::S_expr_identifier: // expr_identifier value.move< ast::expr_identifier::ptr > (that.value); break; @@ -1397,7 +1398,6 @@ namespace xsk { namespace gsc { namespace s2 { value.move< ast::stmt_while::ptr > (that.value); break; - case symbol_kind::S_FIELD: // "field" case symbol_kind::S_PATH: // "path" case symbol_kind::S_IDENTIFIER: // "identifier" case symbol_kind::S_STRING: // "string literal" @@ -1762,6 +1762,7 @@ namespace xsk { namespace gsc { namespace s2 { yylhs.value.emplace< ast::expr_game::ptr > (); break; + case symbol_kind::S_expr_identifier_nosize: // expr_identifier_nosize case symbol_kind::S_expr_identifier: // expr_identifier yylhs.value.emplace< ast::expr_identifier::ptr > (); break; @@ -1953,7 +1954,6 @@ namespace xsk { namespace gsc { namespace s2 { yylhs.value.emplace< ast::stmt_while::ptr > (); break; - case symbol_kind::S_FIELD: // "field" case symbol_kind::S_PATH: // "path" case symbol_kind::S_IDENTIFIER: // "identifier" case symbol_kind::S_STRING: // "string literal" @@ -1984,1315 +1984,1321 @@ namespace xsk { namespace gsc { namespace s2 { switch (yyn) { case 2: // root: program -#line 254 "parser.ypp" +#line 255 "parser.ypp" { ast = std::move(yystack_[0].value.as < ast::program::ptr > ()); } #line 1990 "parser.cpp" break; case 3: // root: %empty -#line 255 "parser.ypp" +#line 256 "parser.ypp" { ast = std::make_unique(yylhs.location); } #line 1996 "parser.cpp" break; case 4: // program: program inline -#line 260 "parser.ypp" +#line 261 "parser.ypp" { yylhs.value.as < ast::program::ptr > () = std::move(yystack_[1].value.as < ast::program::ptr > ()); } #line 2002 "parser.cpp" break; case 5: // program: program include -#line 262 "parser.ypp" +#line 263 "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" break; case 6: // program: program declaration -#line 264 "parser.ypp" +#line 265 "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" break; case 7: // program: inline -#line 266 "parser.ypp" +#line 267 "parser.ypp" { yylhs.value.as < ast::program::ptr > () = std::make_unique(yylhs.location); } #line 2020 "parser.cpp" break; case 8: // program: include -#line 268 "parser.ypp" +#line 269 "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" break; case 9: // program: declaration -#line 270 "parser.ypp" +#line 271 "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" break; case 10: // inline: "#inline" expr_path ";" -#line 274 "parser.ypp" +#line 275 "parser.ypp" { lexer.push_header(yystack_[1].value.as < ast::expr_path::ptr > ()->value); } #line 2038 "parser.cpp" break; case 11: // include: "#include" expr_path ";" -#line 279 "parser.ypp" +#line 280 "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" break; case 12: // declaration: "/#" -#line 283 "parser.ypp" +#line 284 "parser.ypp" { yylhs.value.as < ast::decl > ().as_dev_begin = std::make_unique(yylhs.location); } #line 2050 "parser.cpp" break; case 13: // declaration: "#/" -#line 284 "parser.ypp" +#line 285 "parser.ypp" { yylhs.value.as < ast::decl > ().as_dev_end = std::make_unique(yylhs.location); } #line 2056 "parser.cpp" break; case 14: // declaration: decl_usingtree -#line 285 "parser.ypp" +#line 286 "parser.ypp" { yylhs.value.as < ast::decl > ().as_usingtree = std::move(yystack_[0].value.as < ast::decl_usingtree::ptr > ()); } #line 2062 "parser.cpp" break; case 15: // declaration: decl_constant -#line 286 "parser.ypp" +#line 287 "parser.ypp" { yylhs.value.as < ast::decl > ().as_constant = std::move(yystack_[0].value.as < ast::decl_constant::ptr > ()); } #line 2068 "parser.cpp" break; case 16: // declaration: decl_thread -#line 287 "parser.ypp" +#line 288 "parser.ypp" { yylhs.value.as < ast::decl > ().as_thread = std::move(yystack_[0].value.as < ast::decl_thread::ptr > ()); } #line 2074 "parser.cpp" break; case 17: // decl_usingtree: "#using_animtree" "(" expr_string ")" ";" -#line 292 "parser.ypp" +#line 293 "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" break; case 18: // decl_constant: expr_identifier "=" expr ";" -#line 297 "parser.ypp" +#line 298 "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" break; case 19: // decl_thread: expr_identifier "(" expr_parameters ")" stmt_block -#line 302 "parser.ypp" +#line 303 "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" break; case 20: // stmt: stmt_block -#line 306 "parser.ypp" +#line 307 "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_call -#line 307 "parser.ypp" +#line 308 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_call = std::move(yystack_[0].value.as < ast::stmt_call::ptr > ()); } #line 2104 "parser.cpp" break; case 22: // stmt: stmt_assign -#line 308 "parser.ypp" +#line 309 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_assign = std::move(yystack_[0].value.as < ast::stmt_assign::ptr > ()); } #line 2110 "parser.cpp" break; case 23: // stmt: stmt_endon -#line 309 "parser.ypp" +#line 310 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_endon = std::move(yystack_[0].value.as < ast::stmt_endon::ptr > ()); } #line 2116 "parser.cpp" break; case 24: // stmt: stmt_notify -#line 310 "parser.ypp" +#line 311 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_notify = std::move(yystack_[0].value.as < ast::stmt_notify::ptr > ()); } #line 2122 "parser.cpp" break; case 25: // stmt: stmt_wait -#line 311 "parser.ypp" +#line 312 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_wait = std::move(yystack_[0].value.as < ast::stmt_wait::ptr > ()); } #line 2128 "parser.cpp" break; case 26: // stmt: stmt_waittill -#line 312 "parser.ypp" +#line 313 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_waittill = std::move(yystack_[0].value.as < ast::stmt_waittill::ptr > ()); } #line 2134 "parser.cpp" break; case 27: // stmt: stmt_waittillmatch -#line 313 "parser.ypp" +#line 314 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_waittillmatch = std::move(yystack_[0].value.as < ast::stmt_waittillmatch::ptr > ()); } #line 2140 "parser.cpp" break; case 28: // stmt: stmt_waittillframeend -#line 314 "parser.ypp" +#line 315 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_waittillframeend = std::move(yystack_[0].value.as < ast::stmt_waittillframeend::ptr > ()); } #line 2146 "parser.cpp" break; case 29: // stmt: stmt_waitframe -#line 315 "parser.ypp" +#line 316 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_waitframe = std::move(yystack_[0].value.as < ast::stmt_waitframe::ptr > ()); } #line 2152 "parser.cpp" break; case 30: // stmt: stmt_if -#line 316 "parser.ypp" +#line 317 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_if = std::move(yystack_[0].value.as < ast::stmt_if::ptr > ()); } #line 2158 "parser.cpp" break; case 31: // stmt: stmt_ifelse -#line 317 "parser.ypp" +#line 318 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_ifelse = std::move(yystack_[0].value.as < ast::stmt_ifelse::ptr > ()); } #line 2164 "parser.cpp" break; case 32: // stmt: stmt_while -#line 318 "parser.ypp" +#line 319 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_while = std::move(yystack_[0].value.as < ast::stmt_while::ptr > ()); } #line 2170 "parser.cpp" break; case 33: // stmt: stmt_dowhile -#line 319 "parser.ypp" +#line 320 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_dowhile = std::move(yystack_[0].value.as < ast::stmt_dowhile::ptr > ()); } #line 2176 "parser.cpp" break; case 34: // stmt: stmt_for -#line 320 "parser.ypp" +#line 321 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_for = std::move(yystack_[0].value.as < ast::stmt_for::ptr > ()); } #line 2182 "parser.cpp" break; case 35: // stmt: stmt_foreach -#line 321 "parser.ypp" +#line 322 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_foreach = std::move(yystack_[0].value.as < ast::stmt_foreach::ptr > ()); } #line 2188 "parser.cpp" break; case 36: // stmt: stmt_switch -#line 322 "parser.ypp" +#line 323 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_switch = std::move(yystack_[0].value.as < ast::stmt_switch::ptr > ()); } #line 2194 "parser.cpp" break; case 37: // stmt: stmt_case -#line 323 "parser.ypp" +#line 324 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_case = std::move(yystack_[0].value.as < ast::stmt_case::ptr > ()); } #line 2200 "parser.cpp" break; case 38: // stmt: stmt_default -#line 324 "parser.ypp" +#line 325 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_default = std::move(yystack_[0].value.as < ast::stmt_default::ptr > ()); } #line 2206 "parser.cpp" break; case 39: // stmt: stmt_break -#line 325 "parser.ypp" +#line 326 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_break = std::move(yystack_[0].value.as < ast::stmt_break::ptr > ()); } #line 2212 "parser.cpp" break; case 40: // stmt: stmt_continue -#line 326 "parser.ypp" +#line 327 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_continue = std::move(yystack_[0].value.as < ast::stmt_continue::ptr > ()); } #line 2218 "parser.cpp" break; case 41: // stmt: stmt_return -#line 327 "parser.ypp" +#line 328 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_return = std::move(yystack_[0].value.as < ast::stmt_return::ptr > ()); } #line 2224 "parser.cpp" break; case 42: // stmt: stmt_breakpoint -#line 328 "parser.ypp" +#line 329 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_breakpoint = std::move(yystack_[0].value.as < ast::stmt_breakpoint::ptr > ()); } #line 2230 "parser.cpp" break; case 43: // stmt: stmt_prof_begin -#line 329 "parser.ypp" +#line 330 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_prof_begin = std::move(yystack_[0].value.as < ast::stmt_prof_begin::ptr > ()); } #line 2236 "parser.cpp" break; case 44: // stmt: stmt_prof_end -#line 330 "parser.ypp" +#line 331 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_prof_end = std::move(yystack_[0].value.as < ast::stmt_prof_end::ptr > ()); } #line 2242 "parser.cpp" break; case 45: // stmt_or_dev: stmt -#line 334 "parser.ypp" +#line 335 "parser.ypp" { yylhs.value.as < ast::stmt > () = std::move(yystack_[0].value.as < ast::stmt > ()); } #line 2248 "parser.cpp" break; case 46: // stmt_or_dev: stmt_dev -#line 335 "parser.ypp" +#line 336 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_dev = std::move(yystack_[0].value.as < ast::stmt_dev::ptr > ()); } #line 2254 "parser.cpp" break; case 47: // stmt_list: stmt_list stmt -#line 340 "parser.ypp" +#line 341 "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 2260 "parser.cpp" break; case 48: // stmt_list: stmt -#line 342 "parser.ypp" +#line 343 "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 2266 "parser.cpp" break; case 49: // stmt_or_dev_list: stmt_or_dev_list stmt_or_dev -#line 347 "parser.ypp" +#line 348 "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 2272 "parser.cpp" break; case 50: // stmt_or_dev_list: stmt_or_dev -#line 349 "parser.ypp" +#line 350 "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 2278 "parser.cpp" break; case 51: // stmt_dev: "/#" stmt_list "#/" -#line 353 "parser.ypp" +#line 354 "parser.ypp" { yylhs.value.as < ast::stmt_dev::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::stmt_list::ptr > ())); } #line 2284 "parser.cpp" break; case 52: // stmt_dev: "/#" "#/" -#line 354 "parser.ypp" +#line 355 "parser.ypp" { yylhs.value.as < ast::stmt_dev::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } #line 2290 "parser.cpp" break; case 53: // stmt_block: "{" stmt_or_dev_list "}" -#line 358 "parser.ypp" +#line 359 "parser.ypp" { yylhs.value.as < ast::stmt_list::ptr > () = std::move(yystack_[1].value.as < ast::stmt_list::ptr > ()); } #line 2296 "parser.cpp" break; case 54: // stmt_block: "{" "}" -#line 359 "parser.ypp" +#line 360 "parser.ypp" { yylhs.value.as < ast::stmt_list::ptr > () = std::make_unique(yylhs.location); } #line 2302 "parser.cpp" break; case 55: // stmt_expr: expr_assign -#line 364 "parser.ypp" +#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 2308 "parser.cpp" break; case 56: // stmt_expr: expr_increment -#line 366 "parser.ypp" +#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 2314 "parser.cpp" break; case 57: // stmt_expr: expr_decrement -#line 368 "parser.ypp" +#line 369 "parser.ypp" { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } #line 2320 "parser.cpp" break; case 58: // stmt_expr: %empty -#line 370 "parser.ypp" +#line 371 "parser.ypp" { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } #line 2326 "parser.cpp" break; case 59: // stmt_call: expr_call ";" -#line 375 "parser.ypp" +#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_call::ptr > ()))); } #line 2332 "parser.cpp" break; case 60: // stmt_call: expr_method ";" -#line 377 "parser.ypp" +#line 378 "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 2338 "parser.cpp" break; case 61: // stmt_assign: expr_assign ";" -#line 382 "parser.ypp" +#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 2344 "parser.cpp" break; case 62: // stmt_assign: expr_increment ";" -#line 384 "parser.ypp" +#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 2350 "parser.cpp" break; case 63: // stmt_assign: expr_decrement ";" -#line 386 "parser.ypp" +#line 387 "parser.ypp" { yylhs.value.as < ast::stmt_assign::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } #line 2356 "parser.cpp" break; case 64: // stmt_endon: expr_object "endon" "(" expr ")" ";" -#line 391 "parser.ypp" +#line 392 "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 2362 "parser.cpp" break; case 65: // stmt_notify: expr_object "notify" "(" expr "," expr_arguments_no_empty ")" ";" -#line 396 "parser.ypp" +#line 397 "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 2368 "parser.cpp" break; case 66: // stmt_notify: expr_object "notify" "(" expr ")" ";" -#line 398 "parser.ypp" +#line 399 "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 2374 "parser.cpp" break; case 67: // stmt_wait: "wait" expr ";" -#line 403 "parser.ypp" +#line 404 "parser.ypp" { yylhs.value.as < ast::stmt_wait::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } #line 2380 "parser.cpp" break; case 68: // stmt_waittill: expr_object "waittill" "(" expr "," expr_arguments_no_empty ")" ";" -#line 408 "parser.ypp" +#line 409 "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 2386 "parser.cpp" break; case 69: // stmt_waittill: expr_object "waittill" "(" expr ")" ";" -#line 410 "parser.ypp" +#line 411 "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 2392 "parser.cpp" break; case 70: // stmt_waittillmatch: expr_object "waittillmatch" "(" expr "," expr_arguments_no_empty ")" ";" -#line 415 "parser.ypp" +#line 416 "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 2398 "parser.cpp" break; case 71: // stmt_waittillmatch: expr_object "waittillmatch" "(" expr ")" ";" -#line 417 "parser.ypp" +#line 418 "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 2404 "parser.cpp" break; case 72: // stmt_waittillframeend: "waittillframeend" ";" -#line 422 "parser.ypp" +#line 423 "parser.ypp" { yylhs.value.as < ast::stmt_waittillframeend::ptr > () = std::make_unique(yylhs.location); } #line 2410 "parser.cpp" break; case 73: // stmt_waitframe: "waitframe" ";" -#line 427 "parser.ypp" +#line 428 "parser.ypp" { yylhs.value.as < ast::stmt_waitframe::ptr > () = std::make_unique(yylhs.location); } #line 2416 "parser.cpp" break; case 74: // stmt_waitframe: "waitframe" "(" ")" ";" -#line 429 "parser.ypp" +#line 430 "parser.ypp" { yylhs.value.as < ast::stmt_waitframe::ptr > () = std::make_unique(yylhs.location); } #line 2422 "parser.cpp" break; case 75: // stmt_if: "if" "(" expr ")" stmt -#line 434 "parser.ypp" +#line 435 "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 2428 "parser.cpp" break; case 76: // stmt_ifelse: "if" "(" expr ")" stmt "else" stmt -#line 439 "parser.ypp" +#line 440 "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 2434 "parser.cpp" break; case 77: // stmt_while: "while" "(" expr ")" stmt -#line 444 "parser.ypp" +#line 445 "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 2440 "parser.cpp" break; case 78: // stmt_dowhile: "do" stmt "while" "(" expr ")" ";" -#line 449 "parser.ypp" +#line 450 "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 2446 "parser.cpp" break; case 79: // stmt_for: "for" "(" stmt_expr ";" expr_or_empty ";" stmt_expr ")" stmt -#line 454 "parser.ypp" +#line 455 "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 2452 "parser.cpp" break; case 80: // stmt_foreach: "foreach" "(" expr_identifier "in" expr ")" stmt -#line 459 "parser.ypp" +#line 460 "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 2458 "parser.cpp" break; case 81: // stmt_foreach: "foreach" "(" expr_identifier "," expr_identifier "in" expr ")" stmt -#line 461 "parser.ypp" +#line 462 "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 2464 "parser.cpp" break; case 82: // stmt_switch: "switch" "(" expr ")" stmt_block -#line 466 "parser.ypp" +#line 467 "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 2470 "parser.cpp" break; case 83: // stmt_case: "case" expr_integer ":" -#line 471 "parser.ypp" +#line 472 "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 2476 "parser.cpp" break; case 84: // stmt_case: "case" expr_string ":" -#line 473 "parser.ypp" +#line 474 "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 2482 "parser.cpp" break; case 85: // stmt_default: "default" ":" -#line 478 "parser.ypp" +#line 479 "parser.ypp" { yylhs.value.as < ast::stmt_default::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } #line 2488 "parser.cpp" break; case 86: // stmt_break: "break" ";" -#line 483 "parser.ypp" +#line 484 "parser.ypp" { yylhs.value.as < ast::stmt_break::ptr > () = std::make_unique(yylhs.location); } #line 2494 "parser.cpp" break; case 87: // stmt_continue: "continue" ";" -#line 488 "parser.ypp" +#line 489 "parser.ypp" { yylhs.value.as < ast::stmt_continue::ptr > () = std::make_unique(yylhs.location); } #line 2500 "parser.cpp" break; case 88: // stmt_return: "return" expr ";" -#line 493 "parser.ypp" +#line 494 "parser.ypp" { yylhs.value.as < ast::stmt_return::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } #line 2506 "parser.cpp" break; case 89: // stmt_return: "return" ";" -#line 495 "parser.ypp" +#line 496 "parser.ypp" { yylhs.value.as < ast::stmt_return::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } #line 2512 "parser.cpp" break; case 90: // stmt_breakpoint: "breakpoint" ";" -#line 500 "parser.ypp" +#line 501 "parser.ypp" { yylhs.value.as < ast::stmt_breakpoint::ptr > () = std::make_unique(yylhs.location); } #line 2518 "parser.cpp" break; case 91: // stmt_prof_begin: "prof_begin" "(" expr_arguments ")" ";" -#line 505 "parser.ypp" +#line 506 "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 2524 "parser.cpp" break; case 92: // stmt_prof_end: "prof_end" "(" expr_arguments ")" ";" -#line 510 "parser.ypp" +#line 511 "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 2530 "parser.cpp" break; case 93: // expr: expr_ternary -#line 514 "parser.ypp" +#line 515 "parser.ypp" { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } #line 2536 "parser.cpp" break; case 94: // expr: expr_binary -#line 515 "parser.ypp" +#line 516 "parser.ypp" { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } #line 2542 "parser.cpp" break; case 95: // expr: expr_primitive -#line 516 "parser.ypp" +#line 517 "parser.ypp" { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } #line 2548 "parser.cpp" break; case 96: // expr_or_empty: expr -#line 520 "parser.ypp" +#line 521 "parser.ypp" { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } #line 2554 "parser.cpp" break; case 97: // expr_or_empty: %empty -#line 521 "parser.ypp" +#line 522 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location); } #line 2560 "parser.cpp" break; case 98: // expr_assign: expr_object "=" expr -#line 526 "parser.ypp" +#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 2566 "parser.cpp" break; case 99: // expr_assign: expr_object "|=" expr -#line 528 "parser.ypp" +#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 2572 "parser.cpp" break; case 100: // expr_assign: expr_object "&=" expr -#line 530 "parser.ypp" +#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 2578 "parser.cpp" break; case 101: // expr_assign: expr_object "^=" expr -#line 532 "parser.ypp" +#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 2584 "parser.cpp" break; case 102: // expr_assign: expr_object "<<=" expr -#line 534 "parser.ypp" +#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 2590 "parser.cpp" break; case 103: // expr_assign: expr_object ">>=" expr -#line 536 "parser.ypp" +#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 2596 "parser.cpp" break; case 104: // expr_assign: expr_object "+=" expr -#line 538 "parser.ypp" +#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 2602 "parser.cpp" break; case 105: // expr_assign: expr_object "-=" expr -#line 540 "parser.ypp" +#line 541 "parser.ypp" { yylhs.value.as < ast::expr > ().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_assign: expr_object "*=" expr -#line 542 "parser.ypp" +#line 543 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } #line 2614 "parser.cpp" break; case 107: // expr_assign: expr_object "/=" expr -#line 544 "parser.ypp" +#line 545 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } #line 2620 "parser.cpp" break; case 108: // expr_assign: expr_object "%=" expr -#line 546 "parser.ypp" +#line 547 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } #line 2626 "parser.cpp" break; case 109: // expr_increment: "++" expr_object -#line 551 "parser.ypp" +#line 552 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ()), true); } #line 2632 "parser.cpp" break; case 110: // expr_increment: expr_object "++" -#line 553 "parser.ypp" +#line 554 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ()), false); } #line 2638 "parser.cpp" break; case 111: // expr_decrement: "--" expr_object -#line 558 "parser.ypp" +#line 559 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ()), true); } #line 2644 "parser.cpp" break; case 112: // expr_decrement: expr_object "--" -#line 560 "parser.ypp" +#line 561 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ()), false); } #line 2650 "parser.cpp" break; case 113: // expr_ternary: expr "?" expr ":" expr -#line 565 "parser.ypp" +#line 566 "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 2656 "parser.cpp" break; case 114: // expr_binary: expr "||" expr -#line 570 "parser.ypp" +#line 571 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } #line 2662 "parser.cpp" break; case 115: // expr_binary: expr "&&" expr -#line 572 "parser.ypp" +#line 573 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } #line 2668 "parser.cpp" break; case 116: // expr_binary: expr "==" expr -#line 574 "parser.ypp" +#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 2674 "parser.cpp" break; case 117: // expr_binary: expr "!=" expr -#line 576 "parser.ypp" +#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 2680 "parser.cpp" break; case 118: // expr_binary: expr "<=" expr -#line 578 "parser.ypp" +#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 2686 "parser.cpp" break; case 119: // expr_binary: expr ">=" expr -#line 580 "parser.ypp" +#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 2692 "parser.cpp" break; case 120: // expr_binary: expr "<" expr -#line 582 "parser.ypp" +#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 2698 "parser.cpp" break; case 121: // expr_binary: expr ">" expr -#line 584 "parser.ypp" +#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 2704 "parser.cpp" break; case 122: // expr_binary: expr "|" expr -#line 586 "parser.ypp" +#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 2710 "parser.cpp" break; case 123: // expr_binary: expr "&" expr -#line 588 "parser.ypp" +#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 2716 "parser.cpp" break; case 124: // expr_binary: expr "^" expr -#line 590 "parser.ypp" +#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 2722 "parser.cpp" break; case 125: // expr_binary: expr "<<" expr -#line 592 "parser.ypp" +#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 2728 "parser.cpp" break; case 126: // expr_binary: expr ">>" expr -#line 594 "parser.ypp" +#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 2734 "parser.cpp" break; case 127: // expr_binary: expr "+" expr -#line 596 "parser.ypp" +#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 2740 "parser.cpp" break; case 128: // expr_binary: expr "-" expr -#line 598 "parser.ypp" +#line 599 "parser.ypp" { yylhs.value.as < ast::expr > ().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_binary: expr "*" expr -#line 600 "parser.ypp" +#line 601 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } #line 2752 "parser.cpp" break; case 130: // expr_binary: expr "/" expr -#line 602 "parser.ypp" +#line 603 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } #line 2758 "parser.cpp" break; case 131: // expr_binary: expr "%" expr -#line 604 "parser.ypp" +#line 605 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } #line 2764 "parser.cpp" break; case 132: // expr_primitive: expr_complement -#line 608 "parser.ypp" +#line 609 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_complement::ptr > ()); } #line 2770 "parser.cpp" break; case 133: // expr_primitive: expr_not -#line 609 "parser.ypp" +#line 610 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_not::ptr > ()); } #line 2776 "parser.cpp" break; case 134: // expr_primitive: expr_call -#line 610 "parser.ypp" +#line 611 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_call::ptr > ()); } #line 2782 "parser.cpp" break; case 135: // expr_primitive: expr_method -#line 611 "parser.ypp" +#line 612 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_method::ptr > ()); } #line 2788 "parser.cpp" break; case 136: // expr_primitive: expr_add_array -#line 612 "parser.ypp" +#line 613 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_add_array::ptr > ()); } #line 2794 "parser.cpp" break; case 137: // expr_primitive: expr_reference -#line 613 "parser.ypp" +#line 614 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_reference::ptr > ()); } #line 2800 "parser.cpp" break; case 138: // expr_primitive: expr_array -#line 614 "parser.ypp" +#line 615 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_array::ptr > ()); } #line 2806 "parser.cpp" break; case 139: // expr_primitive: expr_field -#line 615 "parser.ypp" +#line 616 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_field::ptr > ()); } #line 2812 "parser.cpp" break; case 140: // expr_primitive: expr_size -#line 616 "parser.ypp" +#line 617 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_size::ptr > ()); } #line 2818 "parser.cpp" break; case 141: // expr_primitive: expr_paren -#line 617 "parser.ypp" +#line 618 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_paren::ptr > ()); } #line 2824 "parser.cpp" break; case 142: // expr_primitive: expr_thisthread -#line 618 "parser.ypp" +#line 619 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_thisthread::ptr > ()); } #line 2830 "parser.cpp" break; case 143: // expr_primitive: expr_empty_array -#line 619 "parser.ypp" +#line 620 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_empty_array::ptr > ()); } #line 2836 "parser.cpp" break; case 144: // expr_primitive: expr_undefined -#line 620 "parser.ypp" +#line 621 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_undefined::ptr > ()); } #line 2842 "parser.cpp" break; case 145: // expr_primitive: expr_game -#line 621 "parser.ypp" +#line 622 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_game::ptr > ()); } #line 2848 "parser.cpp" break; case 146: // expr_primitive: expr_self -#line 622 "parser.ypp" +#line 623 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_self::ptr > ()); } #line 2854 "parser.cpp" break; case 147: // expr_primitive: expr_anim -#line 623 "parser.ypp" +#line 624 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_anim::ptr > ()); } #line 2860 "parser.cpp" break; case 148: // expr_primitive: expr_level -#line 624 "parser.ypp" +#line 625 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_level::ptr > ()); } #line 2866 "parser.cpp" break; case 149: // expr_primitive: expr_animation -#line 625 "parser.ypp" +#line 626 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_animation::ptr > ()); } #line 2872 "parser.cpp" break; case 150: // expr_primitive: expr_animtree -#line 626 "parser.ypp" +#line 627 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_animtree::ptr > ()); } #line 2878 "parser.cpp" break; case 151: // expr_primitive: expr_identifier -#line 627 "parser.ypp" +#line 628 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ()); } #line 2884 "parser.cpp" break; case 152: // expr_primitive: expr_istring -#line 628 "parser.ypp" +#line 629 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_istring::ptr > ()); } #line 2890 "parser.cpp" break; case 153: // expr_primitive: expr_string -#line 629 "parser.ypp" +#line 630 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_string::ptr > ()); } #line 2896 "parser.cpp" break; case 154: // expr_primitive: expr_vector -#line 630 "parser.ypp" +#line 631 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_vector::ptr > ()); } #line 2902 "parser.cpp" break; case 155: // expr_primitive: expr_float -#line 631 "parser.ypp" +#line 632 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_float::ptr > ()); } #line 2908 "parser.cpp" break; case 156: // expr_primitive: expr_integer -#line 632 "parser.ypp" +#line 633 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_integer::ptr > ()); } #line 2914 "parser.cpp" break; case 157: // expr_primitive: expr_false -#line 633 "parser.ypp" +#line 634 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_false::ptr > ()); } #line 2920 "parser.cpp" break; case 158: // expr_primitive: expr_true -#line 634 "parser.ypp" +#line 635 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_true::ptr > ()); } #line 2926 "parser.cpp" break; case 159: // expr_complement: "~" expr -#line 639 "parser.ypp" +#line 640 "parser.ypp" { yylhs.value.as < ast::expr_complement::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } #line 2932 "parser.cpp" break; case 160: // expr_not: "!" expr -#line 644 "parser.ypp" +#line 645 "parser.ypp" { yylhs.value.as < ast::expr_not::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } #line 2938 "parser.cpp" break; case 161: // expr_call: expr_function -#line 648 "parser.ypp" +#line 649 "parser.ypp" { yylhs.value.as < ast::expr_call::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::call > ())); } #line 2944 "parser.cpp" break; case 162: // expr_call: expr_pointer -#line 649 "parser.ypp" +#line 650 "parser.ypp" { yylhs.value.as < ast::expr_call::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::call > ())); } #line 2950 "parser.cpp" break; case 163: // expr_method: expr_object expr_function -#line 652 "parser.ypp" +#line 653 "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 2956 "parser.cpp" break; case 164: // expr_method: expr_object expr_pointer -#line 653 "parser.ypp" +#line 654 "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 2962 "parser.cpp" break; case 165: // expr_function: expr_identifier "(" expr_arguments ")" -#line 658 "parser.ypp" +#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::normal); } #line 2968 "parser.cpp" break; case 166: // expr_function: expr_path "::" expr_identifier "(" expr_arguments ")" -#line 660 "parser.ypp" +#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::normal); } #line 2974 "parser.cpp" break; case 167: // expr_function: "thread" expr_identifier "(" expr_arguments ")" -#line 662 "parser.ypp" +#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::thread); } #line 2980 "parser.cpp" break; case 168: // expr_function: "thread" expr_path "::" expr_identifier "(" expr_arguments ")" -#line 664 "parser.ypp" +#line 665 "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 2986 "parser.cpp" break; case 169: // expr_function: "childthread" expr_identifier "(" expr_arguments ")" -#line 666 "parser.ypp" +#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::childthread); } #line 2992 "parser.cpp" break; case 170: // expr_function: "childthread" expr_path "::" expr_identifier "(" expr_arguments ")" -#line 668 "parser.ypp" +#line 669 "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 2998 "parser.cpp" break; case 171: // expr_pointer: "[" "[" expr "]" "]" "(" expr_arguments ")" -#line 673 "parser.ypp" +#line 674 "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 3004 "parser.cpp" break; case 172: // expr_pointer: "thread" "[" "[" expr "]" "]" "(" expr_arguments ")" -#line 675 "parser.ypp" +#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::thread); } #line 3010 "parser.cpp" break; case 173: // expr_pointer: "childthread" "[" "[" expr "]" "]" "(" expr_arguments ")" -#line 677 "parser.ypp" +#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::childthread); } #line 3016 "parser.cpp" break; case 174: // expr_pointer: "call" "[" "[" expr "]" "]" "(" expr_arguments ")" -#line 679 "parser.ypp" +#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::builtin); } #line 3022 "parser.cpp" break; case 175: // expr_add_array: "[" expr_arguments_no_empty "]" -#line 684 "parser.ypp" +#line 685 "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 3028 "parser.cpp" break; case 176: // expr_parameters: expr_parameters "," expr_identifier -#line 689 "parser.ypp" +#line 690 "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 3034 "parser.cpp" break; case 177: // expr_parameters: expr_identifier -#line 691 "parser.ypp" +#line 692 "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 3040 "parser.cpp" break; case 178: // expr_parameters: %empty -#line 693 "parser.ypp" +#line 694 "parser.ypp" { yylhs.value.as < ast::expr_parameters::ptr > () = std::make_unique(yylhs.location); } #line 3046 "parser.cpp" break; case 179: // expr_arguments: expr_arguments_no_empty -#line 698 "parser.ypp" +#line 699 "parser.ypp" { yylhs.value.as < ast::expr_arguments::ptr > () = std::move(yystack_[0].value.as < ast::expr_arguments::ptr > ()); } #line 3052 "parser.cpp" break; case 180: // expr_arguments: %empty -#line 700 "parser.ypp" +#line 701 "parser.ypp" { yylhs.value.as < ast::expr_arguments::ptr > () = std::make_unique(yylhs.location); } #line 3058 "parser.cpp" break; case 181: // expr_arguments_no_empty: expr_arguments "," expr -#line 705 "parser.ypp" +#line 706 "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 3064 "parser.cpp" break; case 182: // expr_arguments_no_empty: expr -#line 707 "parser.ypp" +#line 708 "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 3070 "parser.cpp" break; case 183: // expr_reference: "::" expr_identifier -#line 712 "parser.ypp" +#line 713 "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 3076 "parser.cpp" break; case 184: // expr_reference: expr_path "::" expr_identifier -#line 714 "parser.ypp" +#line 715 "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 3082 "parser.cpp" break; case 185: // expr_array: expr_object "[" expr "]" -#line 719 "parser.ypp" +#line 720 "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 3088 "parser.cpp" break; - case 186: // expr_field: expr_object "." expr_identifier -#line 724 "parser.ypp" + case 186: // expr_field: expr_object "." expr_identifier_nosize +#line 725 "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 3094 "parser.cpp" break; - case 187: // expr_field: expr_object "field" -#line 726 "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 > ())); } + case 187: // expr_size: expr_object "." "size" +#line 730 "parser.ypp" + { yylhs.value.as < ast::expr_size::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ())); } #line 3100 "parser.cpp" break; - case 188: // expr_size: expr_object ".size" -#line 731 "parser.ypp" - { yylhs.value.as < ast::expr_size::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } + case 188: // expr_paren: "(" expr ")" +#line 735 "parser.ypp" + { yylhs.value.as < ast::expr_paren::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } #line 3106 "parser.cpp" break; - case 189: // expr_paren: "(" expr ")" -#line 736 "parser.ypp" - { yylhs.value.as < ast::expr_paren::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } + case 189: // expr_object: expr_call +#line 739 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_call::ptr > ()); } #line 3112 "parser.cpp" break; - case 190: // expr_object: expr_call + case 190: // expr_object: expr_method #line 740 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_call::ptr > ()); } + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_method::ptr > ()); } #line 3118 "parser.cpp" break; - case 191: // expr_object: expr_method + case 191: // expr_object: expr_array #line 741 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_method::ptr > ()); } + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_array::ptr > ()); } #line 3124 "parser.cpp" break; - case 192: // expr_object: expr_array + case 192: // expr_object: expr_field #line 742 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_array::ptr > ()); } + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_field::ptr > ()); } #line 3130 "parser.cpp" break; - case 193: // expr_object: expr_field + case 193: // expr_object: expr_game #line 743 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_field::ptr > ()); } + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_game::ptr > ()); } #line 3136 "parser.cpp" break; - case 194: // expr_object: expr_game + case 194: // expr_object: expr_self #line 744 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_game::ptr > ()); } + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_self::ptr > ()); } #line 3142 "parser.cpp" break; - case 195: // expr_object: expr_self + case 195: // expr_object: expr_anim #line 745 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_self::ptr > ()); } + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_anim::ptr > ()); } #line 3148 "parser.cpp" break; - case 196: // expr_object: expr_anim + case 196: // expr_object: expr_level #line 746 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_anim::ptr > ()); } + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_level::ptr > ()); } #line 3154 "parser.cpp" break; - case 197: // expr_object: expr_level + case 197: // expr_object: expr_identifier #line 747 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_level::ptr > ()); } + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ()); } #line 3160 "parser.cpp" break; - case 198: // expr_object: expr_identifier -#line 748 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ()); } + case 198: // expr_thisthread: "thisthread" +#line 752 "parser.ypp" + { yylhs.value.as < ast::expr_thisthread::ptr > () = std::make_unique(yylhs.location); } #line 3166 "parser.cpp" break; - case 199: // expr_thisthread: "thisthread" -#line 753 "parser.ypp" - { yylhs.value.as < ast::expr_thisthread::ptr > () = std::make_unique(yylhs.location); } + case 199: // expr_empty_array: "[" "]" +#line 757 "parser.ypp" + { yylhs.value.as < ast::expr_empty_array::ptr > () = std::make_unique(yylhs.location); } #line 3172 "parser.cpp" break; - case 200: // expr_empty_array: "[" "]" -#line 758 "parser.ypp" - { yylhs.value.as < ast::expr_empty_array::ptr > () = std::make_unique(yylhs.location); } + case 200: // expr_undefined: "undefined" +#line 762 "parser.ypp" + { yylhs.value.as < ast::expr_undefined::ptr > () = std::make_unique(yylhs.location); } #line 3178 "parser.cpp" break; - case 201: // expr_undefined: "undefined" -#line 763 "parser.ypp" - { yylhs.value.as < ast::expr_undefined::ptr > () = std::make_unique(yylhs.location); } + case 201: // expr_game: "game" +#line 767 "parser.ypp" + { yylhs.value.as < ast::expr_game::ptr > () = std::make_unique(yylhs.location); } #line 3184 "parser.cpp" break; - case 202: // expr_game: "game" -#line 768 "parser.ypp" - { yylhs.value.as < ast::expr_game::ptr > () = std::make_unique(yylhs.location); } + case 202: // expr_self: "self" +#line 772 "parser.ypp" + { yylhs.value.as < ast::expr_self::ptr > () = std::make_unique(yylhs.location); } #line 3190 "parser.cpp" break; - case 203: // expr_self: "self" -#line 773 "parser.ypp" - { yylhs.value.as < ast::expr_self::ptr > () = std::make_unique(yylhs.location); } + case 203: // expr_anim: "anim" +#line 777 "parser.ypp" + { yylhs.value.as < ast::expr_anim::ptr > () = std::make_unique(yylhs.location); } #line 3196 "parser.cpp" break; - case 204: // expr_anim: "anim" -#line 778 "parser.ypp" - { yylhs.value.as < ast::expr_anim::ptr > () = std::make_unique(yylhs.location); } + case 204: // expr_level: "level" +#line 782 "parser.ypp" + { yylhs.value.as < ast::expr_level::ptr > () = std::make_unique(yylhs.location); } #line 3202 "parser.cpp" break; - case 205: // expr_level: "level" -#line 783 "parser.ypp" - { yylhs.value.as < ast::expr_level::ptr > () = std::make_unique(yylhs.location); } + case 205: // expr_animation: "%" "identifier" +#line 787 "parser.ypp" + { yylhs.value.as < ast::expr_animation::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 3208 "parser.cpp" break; - case 206: // expr_animation: "%" "identifier" -#line 788 "parser.ypp" - { yylhs.value.as < ast::expr_animation::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 206: // expr_animtree: "#animtree" +#line 792 "parser.ypp" + { yylhs.value.as < ast::expr_animtree::ptr > () = std::make_unique(yylhs.location); } #line 3214 "parser.cpp" break; - case 207: // expr_animtree: "#animtree" -#line 793 "parser.ypp" - { yylhs.value.as < ast::expr_animtree::ptr > () = std::make_unique(yylhs.location); } + case 207: // expr_identifier_nosize: "identifier" +#line 797 "parser.ypp" + { yylhs.value.as < ast::expr_identifier::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 3220 "parser.cpp" break; case 208: // expr_identifier: "identifier" -#line 798 "parser.ypp" +#line 802 "parser.ypp" { yylhs.value.as < ast::expr_identifier::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 3226 "parser.cpp" break; - case 209: // expr_path: "path" -#line 803 "parser.ypp" - { yylhs.value.as < ast::expr_path::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 209: // expr_identifier: "size" +#line 804 "parser.ypp" + { yylhs.value.as < ast::expr_identifier::ptr > () = std::make_unique(yylhs.location, "size"); } #line 3232 "parser.cpp" break; - case 210: // expr_path: expr_identifier -#line 805 "parser.ypp" - { yylhs.value.as < ast::expr_path::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < ast::expr_identifier::ptr > ()->value); } + case 210: // expr_path: "identifier" +#line 809 "parser.ypp" + { yylhs.value.as < ast::expr_path::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 3238 "parser.cpp" break; - case 211: // expr_istring: "localized string" -#line 810 "parser.ypp" - { yylhs.value.as < ast::expr_istring::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 211: // expr_path: "path" +#line 811 "parser.ypp" + { yylhs.value.as < ast::expr_path::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 3244 "parser.cpp" break; - case 212: // expr_string: "string literal" -#line 815 "parser.ypp" - { yylhs.value.as < ast::expr_string::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 212: // expr_istring: "localized string" +#line 816 "parser.ypp" + { yylhs.value.as < ast::expr_istring::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 3250 "parser.cpp" break; - case 213: // expr_vector: "(" expr "," expr "," expr ")" -#line 820 "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 > ())); } + case 213: // expr_string: "string literal" +#line 821 "parser.ypp" + { yylhs.value.as < ast::expr_string::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 3256 "parser.cpp" break; - 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 > ()); } + case 214: // expr_vector: "(" expr "," expr "," expr ")" +#line 826 "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 3262 "parser.cpp" break; - case 215: // expr_float: "float" -#line 827 "parser.ypp" - { yylhs.value.as < ast::expr_float::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 215: // expr_float: "-" "float" +#line 831 "parser.ypp" + { yylhs.value.as < ast::expr_float::ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } #line 3268 "parser.cpp" break; - 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 > ()); } + 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 3274 "parser.cpp" break; - case 217: // expr_integer: "integer" -#line 834 "parser.ypp" - { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 217: // expr_integer: "-" "integer" +#line 838 "parser.ypp" + { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } #line 3280 "parser.cpp" break; - case 218: // expr_false: "false" -#line 839 "parser.ypp" - { yylhs.value.as < ast::expr_false::ptr > () = std::make_unique(yylhs.location); } + 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 3286 "parser.cpp" break; - case 219: // expr_true: "true" -#line 844 "parser.ypp" - { yylhs.value.as < ast::expr_true::ptr > () = std::make_unique(yylhs.location); } + case 219: // expr_false: "false" +#line 845 "parser.ypp" + { yylhs.value.as < ast::expr_false::ptr > () = std::make_unique(yylhs.location); } #line 3292 "parser.cpp" break; + case 220: // expr_true: "true" +#line 850 "parser.ypp" + { yylhs.value.as < ast::expr_true::ptr > () = std::make_unique(yylhs.location); } +#line 3298 "parser.cpp" + break; -#line 3296 "parser.cpp" + +#line 3302 "parser.cpp" default: break; @@ -3483,30 +3489,31 @@ namespace xsk { namespace gsc { namespace s2 { "else", "do", "while", "for", "foreach", "in", "switch", "case", "default", "break", "continue", "return", "breakpoint", "prof_begin", "prof_end", "thread", "childthread", "thisthread", "call", "true", - "false", "undefined", ".size", "game", "self", "anim", "level", "(", ")", + "false", "undefined", "size", "game", "self", "anim", "level", "(", ")", "{", "}", "[", "]", ",", ".", "::", ":", ";", "?", "++", "--", "<<", ">>", "||", "&&", "==", "!=", "<=", ">=", "<", ">", "!", "~", "=", "+=", "-=", "*=", "/=", "%=", "|=", "&=", "^=", ">>=", "<<=", "|", "&", "^", - "+", "-", "*", "/", "%", "field", "path", "identifier", "string literal", - "localized string", "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_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", + "+", "-", "*", "/", "%", "path", "identifier", "string literal", + "localized string", "float", "integer", "SIZEOF", "ADD_ARRAY", "THEN", + "TERN", "NEG", "ANIMREF", "PREINC", "PREDEC", "POSTINC", "POSTDEC", + "$accept", "root", "program", "inline", "include", "declaration", + "decl_usingtree", "decl_constant", "decl_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_nosize", "expr_identifier", "expr_path", "expr_istring", "expr_string", "expr_vector", "expr_float", "expr_integer", "expr_false", "expr_true", YY_NULLPTR }; @@ -3773,516 +3780,510 @@ namespace xsk { namespace gsc { namespace s2 { } - const short parser::yypact_ninf_ = -267; + const short parser::yypact_ninf_ = -271; const short parser::yytable_ninf_ = -211; const short parser::yypact_[] = { - 4, -267, -267, -69, -69, -28, -267, 26, 4, -267, - -267, -267, -267, -267, -267, -40, -267, -267, -16, -3, - 5, -267, -267, -267, -267, -27, 1039, -267, -267, -267, - 23, -26, -267, -267, -36, -34, -267, 42, -267, -267, - -267, -267, -267, -267, -267, 1039, 625, -27, 1039, 1039, - -24, 14, -267, -267, -267, 2008, -267, -267, -267, -267, - -267, 291, 431, -267, -267, -267, -267, 592, 663, -267, - -267, 1003, -267, -267, -267, 1013, 1077, 1244, 1252, -267, - -267, 67, 44, -267, -267, -267, -267, -267, -267, -267, - 50, 68, -27, 60, 80, 76, 89, 90, 78, 94, - 1294, 625, -267, 2091, 88, 95, -267, -267, -267, -267, - -267, -267, -267, 1039, 1039, 1039, 1039, 1039, 1039, 1039, - 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, - 1039, 1039, -267, 1103, -27, -267, -267, -267, 104, 101, - 1039, -27, -267, 789, -267, -267, 1039, 1039, -27, 1039, - 1039, -27, 1039, -267, 1039, 1738, 1039, -267, 1973, 126, - 126, 1243, 2122, 2204, 2204, 415, 415, 415, 415, 2132, - 2173, 2163, 63, 63, -267, -267, -267, 1778, -267, -27, - -5, -267, 110, 895, 1039, 105, -2, 116, 1232, 117, - 118, 120, 121, -49, 113, 122, 123, 975, 125, 138, - 141, -267, 140, 548, 548, -267, -267, 841, -267, -267, - -267, -267, -267, -267, -267, -267, -267, -267, -267, -267, - -267, -267, -267, -267, -267, -267, -267, -267, -267, -267, - -267, -267, -267, -267, 137, 143, 144, 146, 149, -267, - -267, 1151, -267, -267, -267, -267, -29, 1818, 15, 148, - 1858, 16, 150, 1898, 1937, 155, 2091, 1039, -267, 110, - -267, 1039, -267, -267, 949, 2043, -267, 161, -267, 1039, - 198, 1039, 690, -27, 1039, 124, 165, 167, -267, -267, - -267, -267, 2078, -267, 1039, 1039, 1039, -267, -267, -4, - -4, -267, -267, -267, -267, -267, -267, -267, 180, 181, - 182, 184, -267, -267, 1039, 1039, 1039, 1039, 1039, 1039, - 1039, 1039, 1039, 1039, 1039, 174, -267, 1039, 183, -267, - 1039, 185, 1039, 191, 2091, 17, -267, -267, -267, 175, - 1460, 192, 1494, 186, -267, -267, -267, 2, -9, 1528, - -267, -267, -267, 38, 53, 1738, 1039, 1039, 1039, 1039, - 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, - 2091, 193, 62, 194, 71, 197, 1562, 1039, -267, -267, - 1232, 1039, 1232, 1039, 1039, -27, 68, 188, 189, 1596, - 1338, 1382, 1426, 1039, -267, 1039, -267, 1039, -267, 72, - 228, 1630, -267, 2091, 195, 1664, 224, -267, -267, -267, - 199, 200, 1039, 201, 1039, 203, 1039, 75, 82, 86, - -267, 1232, 205, 690, 1232, 1039, -267, -267, 202, -267, - 215, -267, 216, -267, -267, -267, -267, -267, 222, -267, - 1698, 214, 219, 220, 1232, 1232, -267, -267, -267, -267, - -267 + 9, -271, -271, -48, -48, -34, -271, -271, 29, 9, + -271, -271, -271, -271, -271, -271, -44, -271, -271, -30, + -9, -85, -271, -271, -271, -271, -20, 684, -271, -271, + -271, -6, 21, -271, -271, -28, 39, -271, 15, -271, + -271, -271, -271, -271, -271, -271, 684, 1024, -20, 684, + 684, -38, 2, 43, -271, -271, -271, 1959, -271, -271, + -271, -271, -271, 42, 72, -271, -271, -271, -271, 86, + 186, -271, -271, 427, -271, -271, -271, 490, 615, 712, + 876, -271, -271, 25, 50, -271, -271, -271, -271, -271, + -271, -271, 44, 62, -20, 64, 82, 78, 68, 92, + 96, 103, 1284, 1024, -271, 2042, 118, 132, -271, -271, + -271, -271, -271, -271, -271, 684, 684, 684, 684, 684, + 684, 684, 684, 684, 684, 684, 684, 684, 684, 684, + 684, 684, 684, 684, 1150, -2, -271, -271, 141, 147, + 684, -20, -271, 792, -271, -271, 684, 684, -20, 684, + 684, -20, 684, -271, 684, 1728, 684, -271, 1924, 315, + 315, 2073, 2083, 1078, 1078, 165, 165, 165, 165, 2114, + 2155, 2124, -4, -4, -271, -271, -271, 1768, -271, -271, + -271, -20, 46, -271, 158, 921, 684, 149, -37, 162, + 1274, 163, 166, 167, 168, 12, 164, 172, 173, 1087, + 175, 176, 178, -271, 191, -10, -10, -271, -271, 844, + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271, 184, 187, 189, 192, + 200, -271, -271, 1197, -271, -271, -271, -271, 141, 1808, + 77, 201, 1848, 94, 215, 1888, 1019, 181, 2042, 684, + -271, 158, -271, 684, -271, -271, 998, 1994, -271, 199, + -271, 684, 241, 684, 11, -20, 684, 169, 208, 217, + -271, -271, -271, -271, 2029, -271, 684, 684, 684, -271, + -271, 953, 953, -271, -271, -271, -271, -271, -271, -271, + 224, 227, 228, 230, 188, -271, -271, 684, 684, 684, + 684, 684, 684, 684, 684, 684, 684, 684, 232, -271, + 684, 233, -271, 684, 237, 684, 243, 2042, 100, -271, + -271, -271, 234, 1450, 245, 1484, 240, -271, -271, -271, + 550, -14, 1518, -271, -271, -271, 104, 107, 1728, 684, + 684, 684, 684, 2042, 2042, 2042, 2042, 2042, 2042, 2042, + 2042, 2042, 2042, 2042, 251, 110, 252, 113, 275, 1552, + 684, -271, -271, 1274, 684, 1274, 684, 684, -20, 62, + 268, 269, 1586, 1328, 1372, 1416, 684, -271, 684, -271, + 684, -271, 124, 307, 1620, -271, 2042, 271, 1654, 305, + -271, -271, -271, 276, 281, 684, 283, 684, 286, 684, + 143, 146, 150, -271, 1274, 289, 11, 1274, 684, -271, + -271, 288, -271, 299, -271, 300, -271, -271, -271, -271, + -271, 301, -271, 1688, 294, 296, 298, 1274, 1274, -271, + -271, -271, -271, -271 }; const unsigned char parser::yydefact_[] = { - 3, 12, 13, 0, 0, 0, 208, 0, 2, 7, - 8, 9, 14, 15, 16, 0, 209, 210, 0, 0, - 0, 1, 4, 5, 6, 178, 0, 10, 11, 212, - 0, 0, 177, 207, 0, 0, 199, 0, 219, 218, - 201, 202, 203, 204, 205, 0, 180, 0, 0, 0, - 0, 0, 211, 215, 217, 0, 93, 94, 95, 132, - 133, 134, 135, 161, 162, 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, - 0, 0, 0, 0, 210, 0, 0, 210, 0, 0, - 0, 180, 200, 182, 0, 179, 183, 160, 159, 214, - 216, 206, 18, 0, 0, 0, 0, 0, 0, 0, + 3, 12, 13, 0, 0, 0, 209, 208, 0, 2, + 7, 8, 9, 14, 15, 16, 0, 211, 210, 0, + 0, 0, 1, 4, 5, 6, 178, 0, 10, 11, + 213, 0, 0, 177, 206, 0, 0, 198, 0, 220, + 219, 200, 201, 202, 203, 204, 0, 180, 0, 0, + 0, 0, 0, 208, 212, 216, 218, 0, 93, 94, + 95, 132, 133, 134, 135, 161, 162, 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, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 180, 199, 182, 0, 179, 183, 160, + 159, 215, 217, 205, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 188, 0, 0, 187, 163, 164, 210, 0, + 0, 0, 0, 0, 0, 0, 163, 164, 0, 0, 180, 0, 17, 0, 19, 176, 0, 180, 0, 0, - 180, 0, 0, 189, 0, 182, 0, 175, 0, 125, + 180, 0, 0, 188, 0, 182, 0, 175, 0, 125, 126, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 127, 128, 129, 130, 131, 0, 186, 0, - 0, 179, 184, 0, 0, 0, 0, 0, 0, 0, + 123, 124, 127, 128, 129, 130, 131, 0, 187, 207, + 186, 0, 0, 179, 184, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 190, 191, 192, - 193, 0, 194, 195, 196, 197, 198, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 181, 0, 185, 0, - 165, 180, 52, 48, 0, 0, 72, 0, 73, 0, - 0, 0, 58, 0, 0, 0, 0, 0, 85, 86, - 87, 89, 0, 90, 180, 180, 0, 190, 191, 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, 167, 180, 0, 169, - 180, 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, 180, 166, 74, - 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 180, 168, 180, 170, 180, 213, 0, - 75, 0, 77, 96, 0, 0, 0, 82, 91, 92, - 0, 0, 180, 0, 180, 0, 180, 0, 0, 0, - 171, 0, 0, 58, 0, 0, 64, 66, 179, 69, - 179, 71, 179, 172, 173, 174, 76, 78, 0, 80, - 0, 0, 0, 0, 0, 0, 65, 68, 70, 79, - 81 + 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, 189, + 190, 191, 192, 0, 193, 194, 195, 196, 197, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 181, 0, + 185, 0, 165, 180, 52, 48, 0, 0, 72, 0, + 73, 0, 0, 0, 58, 0, 0, 0, 0, 0, + 85, 86, 87, 89, 0, 90, 180, 180, 0, 189, + 190, 109, 111, 53, 49, 61, 62, 63, 59, 60, + 0, 0, 0, 0, 0, 110, 112, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 167, + 180, 0, 169, 180, 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, + 180, 166, 74, 0, 0, 0, 97, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 180, 168, 180, 170, + 180, 214, 0, 75, 0, 77, 96, 0, 0, 0, + 82, 91, 92, 0, 0, 180, 0, 180, 0, 180, + 0, 0, 0, 171, 0, 0, 58, 0, 0, 64, + 66, 179, 69, 179, 71, 179, 172, 173, 174, 76, + 78, 0, 80, 0, 0, 0, 0, 0, 0, 65, + 68, 70, 79, 81 }; const short parser::yypgoto_[] = { - -267, -267, -267, 275, 277, 280, -267, -267, -267, -155, - 85, -267, -267, -267, -89, -120, -267, -267, -267, -267, - -267, -267, -267, -267, -267, -267, -267, -267, -267, -267, - -267, -267, -267, -267, -267, -267, -267, -267, -267, -267, - 190, -267, -266, -259, -258, -267, -267, -267, -267, -267, - -86, -12, -66, -60, -267, -267, 13, -45, -267, -6, - 179, -267, -267, 249, -267, -267, -267, 282, 337, 362, - 372, -267, -267, 0, 6, -267, -13, -267, -267, 106, - -267, -267 + -271, -271, -271, 356, 357, 359, -271, -271, -271, -173, + 160, -271, -271, -271, -91, -45, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + 190, -271, -270, -267, -261, -271, -271, -271, -271, -271, + -88, -18, -70, -68, -271, -271, 14, -46, -271, -11, + 182, -271, -271, 270, -271, -271, -271, 279, 304, 329, + 375, -271, -271, -271, 0, 7, -271, -15, -271, -271, + 179, -271, -271 }; const short parser::yydefgoto_[] = { - 0, 7, 8, 9, 10, 11, 12, 13, 14, 205, - 206, 264, 207, 208, 209, 333, 210, 211, 212, 213, - 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, - 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, - 103, 394, 234, 235, 236, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, 31, 104, 181, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - 88, 89 + 0, 8, 9, 10, 11, 12, 13, 14, 15, 207, + 208, 266, 209, 210, 211, 336, 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, 397, 236, 237, 238, 58, 59, 60, 61, 62, + 63, 64, 65, 66, 67, 32, 106, 183, 68, 69, + 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 180, 83, 84, 85, 86, 87, 88, + 89, 90, 91 }; const short parser::yytable_[] = { - 15, 105, 144, 17, 17, 136, 334, 30, 15, 18, - 19, 137, 25, 335, 336, 1, 2, 3, 4, 5, - 93, 374, 96, 140, 20, 32, 21, 91, 263, 16, - 6, -210, 92, 270, 94, 97, 34, 35, 26, 37, - 95, 98, 34, 35, 275, 37, 27, 106, 260, 375, - 267, 29, 133, 156, 54, 134, 105, 237, 133, 28, - 268, 134, 16, 6, 16, 6, 302, 303, 316, 319, - 368, 138, 6, 156, 156, 156, 90, 139, 109, 110, - 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 377, 145, 135, 16, 6, 156, 237, 99, 135, - 16, 6, 237, 6, 141, 29, 378, -198, -198, 327, - -198, 156, 142, 111, -198, 384, 146, 287, 287, 140, - 156, 237, 143, -198, 386, 410, -198, -210, 423, 156, - 156, 238, 147, 156, 178, 424, 148, 239, 151, 425, - 156, 182, 150, 246, 156, 149, 156, 334, 249, 139, - 152, 252, 157, 180, 335, 336, 140, 129, 130, 131, - 248, 179, 261, 251, -198, -198, -198, 266, 269, 271, - 272, 238, 273, 274, 278, 136, 238, 239, 237, 259, - 276, 137, 239, 246, 279, 280, 287, 283, 246, 139, - 284, 288, 288, 285, 139, 238, 286, 239, 239, 293, - 317, 239, 320, 246, 246, 294, 295, 246, 296, 139, - 139, 297, 323, 139, 329, 390, 55, 392, 127, 128, - 129, 130, 131, 136, 136, 331, 340, 110, 341, 137, - 137, 361, 346, 347, 348, 100, 349, 369, 107, 108, - 363, 138, 365, 367, 371, 383, 385, 139, 373, 387, - 398, 399, 238, 411, 415, 431, 426, 413, 239, 429, - 288, 416, 417, 419, 246, 421, 239, 427, 432, 433, - 139, 136, 246, 338, 325, 434, 436, 137, 139, 439, - 440, 437, 438, 22, 237, 23, 237, 397, 24, 138, - 138, 155, 292, 428, 0, 139, 139, 343, 344, 277, - 0, 0, 0, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, - 175, 176, 240, 177, 0, 237, 0, 287, 237, 0, - 362, -190, -190, 364, -190, 0, 247, 138, -190, 250, - 0, 0, 253, 139, 254, 0, 256, -190, 237, 237, - -190, 0, 0, 0, 0, 0, 0, 418, 238, 420, - 238, 422, 240, 0, 239, 0, 239, 240, 0, 0, - 246, 0, 246, 0, 265, 396, 139, 0, 139, 0, - 389, 0, 240, 240, 0, 0, 240, 282, -190, -190, - -190, 0, 241, 0, 0, 0, 407, 0, 408, 238, - 409, 288, 238, 0, 0, 239, 0, 239, 239, 0, - 0, 246, 0, 246, 246, 0, 0, 139, 0, 139, - 139, 0, 238, 238, 0, 242, 0, 0, 239, 239, - 0, 0, 241, 0, 246, 246, 0, 241, 0, 0, - 139, 139, 0, 240, 0, 0, 0, 324, 0, 0, - 0, 240, 289, 290, 0, 0, 241, 0, 0, 330, - 0, 332, 0, 0, 339, 242, 0, 0, 0, 0, - 242, -191, -191, 0, -191, 0, 345, 0, -191, 0, - 243, 114, 115, 0, 0, 242, 242, -191, 0, 242, - -191, 0, 0, 0, 350, 351, 352, 353, 354, 355, - 356, 357, 358, 359, 360, 244, 0, 127, 128, 129, - 130, 131, 366, 241, 0, 245, 0, 0, 0, 0, - 243, 337, 0, 0, 0, 243, 0, 0, -191, -191, - -191, 0, 0, 0, 0, 0, 379, 380, 381, 382, - 243, 243, 0, 0, 243, 244, 242, 0, 0, 240, - 244, 240, 0, 0, 242, 245, 0, 0, 0, 0, - 245, 391, 0, 393, 395, 244, 244, 0, 0, 244, - 0, 0, 0, 0, 0, 245, 245, 0, 0, 245, - 0, 0, 0, 0, 0, 0, 0, 0, 34, 35, - 240, 37, 240, 240, 0, 0, 41, 42, 43, 44, - 0, 243, 0, 0, 202, 430, 0, 0, 0, 243, - 0, 0, 0, 240, 240, 0, 0, 0, 0, 241, - 0, 241, 0, 0, 0, 0, 244, 0, 0, 0, - 0, 0, -192, -192, 244, -192, 245, 0, 0, -192, - 0, 33, 0, 0, 245, 0, 16, 6, -192, 0, - 0, -192, 242, 0, 242, 0, 0, 0, 0, 0, - 241, 0, 337, 241, 0, 34, 35, 36, 37, 38, - 39, 40, 0, 41, 42, 43, 44, 45, 0, 0, - 0, 101, 102, 241, 241, 47, 0, 0, 0, -192, - -192, -192, 0, 242, 0, 242, 242, 0, 0, 0, - 0, 48, 49, -193, -193, 0, -193, 243, 0, 243, - -193, 0, 0, 0, 0, 0, 242, 242, 50, -193, - 0, 51, -193, 16, 6, 29, 52, 53, 54, 0, - 34, 35, 244, 37, 244, 0, 0, 0, 41, 42, - 43, 44, 245, 0, 245, 0, 202, 0, 243, 0, - 243, 243, 0, 0, 203, 204, 0, 0, 0, 0, - -193, -193, -193, 0, 0, 0, 0, 0, 0, 0, - 0, 243, 243, 244, 0, 244, 244, 0, 0, 0, - 0, 0, 0, 245, 0, 245, 245, 0, 16, 6, - 0, 0, 0, 0, 0, 0, 244, 244, 0, 0, - 183, 0, 0, 0, 0, 0, 245, 245, 184, 0, - 0, 185, 186, 187, 0, 188, 189, 190, 191, 0, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 34, - 35, 0, 37, 0, 0, 0, 0, 41, 42, 43, - 44, 0, 0, 143, 201, 202, 0, 0, 0, 0, - 0, 0, 183, 203, 204, 0, 0, 0, 0, 0, - 184, 0, 0, 185, 186, 187, 0, 188, 189, 190, - 191, 0, 192, 193, 194, 195, 196, 197, 198, 199, - 200, 34, 35, 0, 37, 0, 0, 16, 6, 41, - 42, 43, 44, 0, 0, 143, 291, 202, 0, 0, - 0, 0, 0, 0, 0, 203, 204, 262, 0, 0, - 0, 0, 0, 0, 184, 0, 0, 185, 186, 187, - 0, 188, 189, 190, 191, 0, 192, 193, 194, 195, - 196, 197, 198, 199, 200, 34, 35, 0, 37, 16, - 6, 0, 0, 41, 42, 43, 44, 0, 0, 143, - 0, 202, 0, 0, 0, 0, 0, 0, 0, 203, - 204, 326, 0, 0, 0, 0, 0, 0, 184, 0, - 0, 185, 186, 187, 0, 188, 189, 190, 191, 0, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 34, - 35, 33, 37, 16, 6, 0, 0, 41, 42, 43, - 44, 0, 0, 143, 0, 202, 0, 0, 0, 0, - 0, 0, 0, 203, 204, 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, 34, 35, 0, 37, 16, 6, 0, - 132, 48, 49, -194, -194, 33, -194, 0, 0, 133, - -194, 0, 134, 0, 0, 0, 0, 0, 50, -194, - 0, 51, -194, 16, 6, 29, 52, 53, 54, 34, - 35, 36, 37, 38, 39, 40, 0, 41, 42, 43, - 44, 45, 0, 0, 0, 46, 0, 0, 0, 47, - 135, 16, 6, 0, 0, 0, 0, 0, 0, 0, - -194, -194, -194, 0, 0, 48, 49, -195, -195, 33, - -195, 0, 0, 0, -195, 0, 0, 0, 0, 0, - 0, 0, 50, -195, 0, 51, -195, 16, 6, 29, - 52, 53, 54, 34, 35, 36, 37, 38, 39, 40, - 0, 41, 42, 43, 44, 45, 0, 0, 0, 101, - 0, 0, 0, 47, 0, 0, 0, 0, 298, 299, - 0, 300, 301, 0, -195, -195, -195, 0, 0, 48, - 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 34, 35, 0, 37, 0, 50, 0, 0, 51, - 0, 16, 6, 29, 52, 53, 54, 133, 0, 0, - 134, 0, 0, 0, 0, 302, 303, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 304, - 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 0, 0, 0, 0, 0, 0, 0, 0, 135, 16, - 6, 184, 0, 0, 185, 186, 187, 0, 188, 189, - 190, 191, 0, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 34, 35, 0, 37, 0, 0, 0, 0, - 41, 42, 43, 44, -196, -196, 143, -196, 202, 0, - 0, -196, -197, -197, 0, -197, 203, 204, 0, -197, - -196, 0, 0, -196, 0, 0, 0, 0, -197, 114, - 115, -197, 117, 118, 119, 120, 121, 122, 123, 0, + 16, 107, 144, 136, 337, 137, 31, 338, 26, 16, + 19, 20, 265, 339, 30, 269, 377, 272, 21, 6, + 1, 2, 3, 4, 5, 270, 33, 6, 95, 22, + 35, 36, 28, 38, 27, 96, 99, 6, 42, 43, + 44, 45, 97, 100, 378, 178, 204, 92, 108, 17, + 18, 35, 36, 29, 38, 239, 6, 107, 6, 42, + 43, 44, 45, 111, 112, -197, -197, 204, -197, 17, + 53, 101, -197, 138, 93, 205, 206, 140, 7, 94, + 139, -197, -189, -189, -197, -189, 6, 17, 53, -189, + 131, 132, 133, 330, 145, 98, 179, 239, -189, 262, + 113, -189, 239, -210, 156, 277, 142, 7, 17, 53, + 141, 30, -190, -190, 56, -190, 143, 289, 289, -190, + 146, 239, -197, -197, 149, 240, -191, -191, -190, -191, + 319, -190, 241, -191, 147, 156, 17, 53, 148, -189, + -189, 184, -191, 248, 150, -191, 337, 322, 251, 338, + 139, 254, 156, 371, 182, 339, 151, 380, 156, 152, + 381, 250, 156, 387, 253, 156, 389, 240, 156, -190, + -190, 156, 240, 136, 241, 137, 156, 413, 239, 241, + 278, 261, 156, -191, -191, 248, 289, 290, 290, 157, + 248, 240, 139, 140, 241, 241, 426, 139, 241, 427, + 393, 156, 395, 428, 156, 248, 248, 181, 156, 248, + 263, 268, 139, 139, 271, 273, 139, 57, 274, 275, + 276, 136, 136, 137, 137, 280, -192, -192, 286, -192, + 287, 116, 117, -192, 281, 282, 102, 285, 326, 109, + 110, 429, -192, 138, 432, -192, 295, 288, 240, 296, + 139, 297, 332, 320, 298, 241, 290, 129, 130, 131, + 132, 133, 299, 241, 442, 443, 248, 323, 334, 343, + 136, 112, 137, 139, 248, 341, 349, 328, 344, 350, + 351, 139, 352, -192, -192, 239, 179, 239, 400, 364, + 366, 138, 138, 155, 368, 370, 372, 374, 139, 139, + 346, 347, 376, 386, 388, 158, 159, 160, 161, 162, + 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, + 173, 174, 175, 176, 177, 242, 239, 390, 289, 239, + 401, 402, 414, 416, 365, 418, 249, 367, 419, 252, + 138, 434, 255, 420, 256, 422, 258, 139, 424, 239, + 239, 430, 435, 436, 437, 240, 439, 240, 440, 421, + 441, 423, 241, 425, 241, 23, 24, 242, 25, 294, + 0, 431, 242, 248, 279, 248, 267, 0, 399, 0, + 139, 0, 139, 0, 392, 0, 0, 242, 242, 284, + 0, 242, 0, 0, 0, 0, 240, 0, 290, 240, + 410, 0, 411, 241, 412, 241, 241, 129, 130, 131, + 132, 133, 0, 243, 248, 0, 248, 248, 0, 240, + 240, 139, 244, 139, 139, 0, 241, 241, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 248, 248, 0, + 0, 0, 0, 0, 139, 139, 0, 245, 242, 327, + 0, 0, 0, 0, 0, 243, 242, 0, 0, 0, + 243, 333, 0, 335, 244, 0, 342, 35, 36, 244, + 38, 0, 246, 0, 6, 291, 292, 0, 348, 243, + 0, 0, 0, 134, 244, 244, 135, 0, 244, 245, + 0, 0, 0, 0, 245, 0, 0, 353, 354, 355, + 356, 357, 358, 359, 360, 361, 362, 363, 0, 245, + 245, 0, 0, 245, 246, 369, 0, 0, 247, 246, + 0, 0, 0, 0, 17, 53, 0, 0, 0, 0, + -193, -193, 0, -193, 246, 246, 243, -193, 246, 382, + 383, 384, 385, 0, 340, 244, -193, 0, 0, -193, + 0, 0, 0, 244, 0, 242, 0, 242, 0, 0, + 247, 0, 0, 0, 394, 247, 396, 398, 0, 0, + 245, 0, 0, 0, 0, 0, 0, 0, 245, 0, + 247, 247, 0, 0, 247, 0, 0, -193, -193, 0, + 35, 36, 0, 38, 0, 246, 242, 6, 242, 242, + 0, 0, 0, 246, 0, 0, 134, 0, 433, 304, + 0, 0, 0, 0, 305, 306, 0, 0, 0, 242, + 242, 0, 0, 0, 0, 0, 0, 0, 307, 308, + 309, 310, 311, 312, 313, 314, 315, 316, 317, 0, + 0, 247, 0, 243, 0, 243, 0, 17, 53, 247, + 0, 0, 244, 0, 244, -194, -194, 0, -194, 0, + 0, 0, -194, 0, 0, 0, 0, 0, 0, 0, + 0, -194, 0, 0, -194, 0, 0, 245, 0, 245, + 0, 0, 0, 0, 243, 0, 340, 243, 0, 0, + 0, 0, 0, 244, 0, 244, 244, 0, 0, 0, + 34, 0, 246, 0, 246, 0, 0, 243, 243, 0, + 0, 0, -194, -194, 0, 0, 244, 244, 245, 0, + 245, 245, 0, 0, 35, 36, 37, 38, 39, 40, + 41, 6, 42, 43, 44, 45, 46, 0, 0, 0, + 47, 245, 245, 246, 48, 246, 246, 0, 247, 0, + 247, 0, -195, -195, 0, -195, 0, 0, 0, -195, + 49, 50, 0, 0, 0, 0, 246, 246, -195, 0, + 0, -195, 0, 0, 0, 0, 0, 51, 0, 0, + 52, 17, 53, 30, 54, 55, 56, 0, 0, 247, + 0, 247, 247, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 185, 0, 0, 0, 0, 0, -195, + -195, 186, 247, 247, 187, 188, 189, 0, 190, 191, + 192, 193, 0, 194, 195, 196, 197, 198, 199, 200, + 201, 202, 35, 36, 0, 38, 0, 0, 0, 6, + 42, 43, 44, 45, 0, 0, 143, 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, 35, 36, 0, 38, 0, 17, + 53, 6, 42, 43, 44, 45, 0, 0, 143, 293, + 204, 0, 0, 0, 0, 0, 0, 0, 205, 206, + 0, 0, 0, 0, 0, 0, -196, -196, 0, -196, + 0, 0, 0, -196, 0, 0, 0, 0, 0, 0, + 0, 0, -196, 264, 0, -196, 0, 0, 0, 0, + 186, 17, 53, 187, 188, 189, 0, 190, 191, 192, + 193, 0, 194, 195, 196, 197, 198, 199, 200, 201, + 202, 35, 36, 0, 38, 0, 0, 0, 6, 42, + 43, 44, 45, -196, -196, 143, 0, 204, 0, 0, + 0, 0, 0, 0, 0, 205, 206, 0, 0, 0, + 0, 0, 0, 35, 36, 0, 38, 0, 0, 0, + 6, 0, 0, 0, 0, 0, 0, 0, 0, 134, + 329, 0, 304, 0, 0, 0, 0, 186, 17, 53, + 187, 188, 189, 0, 190, 191, 192, 193, 0, 194, + 195, 196, 197, 198, 199, 200, 201, 202, 35, 36, + 34, 38, 0, 0, 0, 6, 42, 43, 44, 45, + 17, 53, 143, 0, 204, 0, 0, 0, 0, 0, + 0, 0, 205, 206, 35, 36, 37, 38, 39, 40, + 41, 6, 42, 43, 44, 45, 46, 325, 0, 0, + 103, 104, 115, 0, 48, 116, 117, 118, 119, 120, + 121, 122, 123, 124, 125, 17, 53, 0, 0, 0, + 49, 50, 0, 34, 0, 0, 0, 0, 126, 127, + 128, 129, 130, 131, 132, 133, 0, 51, 0, 0, + 52, 17, 53, 30, 54, 55, 56, 35, 36, 37, + 38, 39, 40, 41, 6, 42, 43, 44, 45, 46, + 0, 0, 0, 47, 116, 117, 0, 48, 0, 283, + 122, 123, 124, 125, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 49, 50, 0, 34, 0, 0, 0, + 129, 130, 131, 132, 133, 0, 0, 0, 0, 0, + 51, 0, 0, 52, 17, 53, 30, 54, 55, 56, + 35, 36, 37, 38, 39, 40, 41, 6, 42, 43, + 44, 45, 46, 0, 0, 0, 103, 0, 0, 0, + 48, 0, 0, 0, 300, 301, 0, 302, 303, 0, + 0, 0, 0, 0, 0, 0, 49, 50, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 35, 36, 0, + 38, 0, 0, 51, 6, 0, 52, 17, 53, 30, + 54, 55, 56, 134, 0, 0, 304, 0, 0, 0, + 0, 305, 306, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 307, 308, 309, 310, 311, + 312, 313, 314, 315, 316, 317, 0, 0, 0, 0, + 0, 0, 0, 186, 17, 53, 187, 188, 189, 0, + 190, 191, 192, 193, 0, 194, 195, 196, 197, 198, + 199, 200, 201, 202, 35, 36, 0, 38, 0, 0, + 0, 6, 42, 43, 44, 45, 0, 0, 143, 0, + 204, 0, 0, 0, 0, 0, 0, 153, 205, 206, + 0, 0, 154, 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, - 16, 6, 124, 125, 126, 127, 128, 129, 130, 131, - 0, -196, -196, -196, 0, 0, 0, 153, 0, -197, - -197, -197, 154, 0, 0, 0, 0, 113, 0, 0, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, + 0, 17, 53, 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, 0, 0, 126, 127, 128, + 129, 130, 131, 132, 133, 406, 0, 0, 0, 0, + 407, 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, 0, 0, 124, 125, 126, 127, 128, 129, 130, - 131, 401, 0, 0, 0, 0, 402, 0, 0, 0, - 0, 113, 0, 0, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 124, 125, 126, - 127, 128, 129, 130, 131, 403, 0, 0, 0, 0, - 404, 0, 0, 0, 0, 113, 0, 0, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 0, 0, + 0, 126, 127, 128, 129, 130, 131, 132, 133, 408, + 0, 0, 0, 0, 409, 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, 373, 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, 124, 125, 126, 127, 128, 129, 130, 131, 405, - 0, 0, 0, 0, 406, 0, 0, 0, 0, 113, - 0, 0, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 370, 0, 124, 125, 126, 127, 128, - 129, 130, 131, 113, 0, 0, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 372, 0, 124, - 125, 126, 127, 128, 129, 130, 131, 113, 0, 0, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, + 0, 379, 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, 391, 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, 403, + 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, 415, 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, 417, 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, 376, 0, 124, 125, 126, 127, 128, 129, 130, - 131, 113, 0, 0, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 388, 0, 124, 125, 126, - 127, 128, 129, 130, 131, 113, 0, 0, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 400, - 0, 124, 125, 126, 127, 128, 129, 130, 131, 113, - 0, 0, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 412, 0, 124, 125, 126, 127, 128, - 129, 130, 131, 113, 0, 0, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 414, 0, 124, - 125, 126, 127, 128, 129, 130, 131, 113, 0, 0, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, + 0, 438, 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, 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, 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, 324, 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, 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, 435, 0, 124, 125, 126, 127, 128, 129, 130, - 131, 113, 0, 0, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 124, 125, 126, - 127, 128, 129, 130, 131, 255, 0, 0, 0, 0, - 0, 113, 0, 0, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 124, 125, 126, - 127, 128, 129, 130, 131, 258, 0, 0, 0, 0, - 0, 113, 0, 0, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 124, 125, 126, - 127, 128, 129, 130, 131, 315, 0, 0, 0, 0, - 0, 113, 0, 0, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 124, 125, 126, - 127, 128, 129, 130, 131, 318, 0, 0, 0, 0, - 0, 113, 0, 0, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 124, 125, 126, - 127, 128, 129, 130, 131, 321, 0, 0, 0, 0, - 0, 113, 0, 0, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 124, 125, 126, - 127, 128, 129, 130, 131, 322, 0, 0, 0, 0, - 113, 0, 0, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 124, 125, 126, 127, - 128, 129, 130, 131, 257, 0, 113, 0, 0, 114, - 115, 116, 117, 118, 119, 120, 121, 122, 123, 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, 331, 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, 124, 125, 126, 127, 128, 129, 130, 131, - 112, 113, 0, 0, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 124, 125, 126, - 127, 128, 129, 130, 131, 328, 113, 0, 0, 114, - 115, 116, 117, 118, 119, 120, 121, 122, 123, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 124, 125, 126, 127, 128, 129, 130, 131, - 342, 113, 0, 0, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 113, 0, 0, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 0, 0, 0, 0, 0, - 124, 125, 126, 127, 128, 129, 130, 131, 114, 115, - 0, 0, 118, 119, 120, 121, 122, 123, 114, 115, - 0, 0, 118, 119, 120, 121, 122, 123, 0, 0, - 0, 124, 125, 126, 127, 128, 129, 130, 131, 0, - 0, 0, 125, 126, 127, 128, 129, 130, 131, 114, - 115, 0, 0, 118, 119, 120, 121, 122, 123, 114, - 115, 0, 0, 118, 119, 120, 121, 122, 123, 0, - 0, 0, 0, 125, 0, 127, 128, 129, 130, 131, - 0, 0, 0, 0, 0, 127, 128, 129, 130, 131, - 114, 115, 0, 0, 0, 0, 120, 121, 122, 123, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 127, 128, 129, 130, - 131 + 0, 0, 0, 126, 127, 128, 129, 130, 131, 132, + 133, 345, 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 }; const short parser::yycheck_[] = { - 0, 46, 91, 3, 4, 71, 272, 20, 8, 3, - 4, 71, 52, 272, 272, 11, 12, 13, 14, 15, - 56, 30, 56, 52, 52, 25, 0, 53, 183, 98, - 99, 60, 58, 188, 34, 35, 40, 41, 78, 43, - 34, 35, 40, 41, 93, 43, 62, 47, 53, 58, - 52, 100, 56, 58, 103, 59, 101, 143, 56, 62, - 62, 59, 98, 99, 98, 99, 64, 65, 53, 53, - 53, 71, 99, 58, 58, 58, 53, 71, 102, 103, - 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - 88, 53, 92, 97, 98, 99, 58, 183, 56, 97, - 98, 99, 188, 99, 60, 100, 53, 40, 41, 264, - 43, 58, 62, 99, 47, 53, 56, 203, 204, 52, - 58, 207, 54, 56, 53, 53, 59, 60, 53, 58, - 58, 143, 52, 58, 134, 53, 60, 143, 60, 53, - 58, 141, 52, 143, 58, 56, 58, 413, 148, 143, - 56, 151, 57, 140, 413, 413, 52, 94, 95, 96, - 147, 60, 52, 150, 97, 98, 99, 62, 52, 52, - 52, 183, 52, 52, 61, 241, 188, 183, 264, 179, - 193, 241, 188, 183, 62, 62, 272, 62, 188, 183, - 52, 203, 204, 52, 188, 207, 56, 203, 204, 62, - 52, 207, 52, 203, 204, 62, 62, 207, 62, 203, - 204, 62, 57, 207, 53, 370, 26, 372, 92, 93, - 94, 95, 96, 289, 290, 27, 61, 103, 61, 289, - 290, 57, 52, 52, 52, 45, 52, 62, 48, 49, - 57, 241, 57, 52, 52, 52, 52, 241, 62, 52, - 62, 62, 264, 25, 30, 53, 411, 62, 264, 414, - 272, 62, 62, 62, 264, 62, 272, 62, 53, 53, - 264, 337, 272, 273, 261, 53, 62, 337, 272, 434, - 435, 62, 62, 8, 370, 8, 372, 376, 8, 289, - 290, 101, 207, 413, -1, 289, 290, 284, 285, 193, - -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, + 0, 47, 93, 73, 274, 73, 21, 274, 52, 9, + 3, 4, 185, 274, 99, 52, 30, 190, 52, 47, + 11, 12, 13, 14, 15, 62, 26, 47, 56, 0, + 40, 41, 62, 43, 78, 35, 36, 47, 48, 49, + 50, 51, 35, 36, 58, 47, 56, 53, 48, 97, + 98, 40, 41, 62, 43, 143, 47, 103, 47, 48, + 49, 50, 51, 101, 102, 40, 41, 56, 43, 97, + 98, 56, 47, 73, 53, 64, 65, 52, 98, 58, + 73, 56, 40, 41, 59, 43, 47, 97, 98, 47, + 94, 95, 96, 266, 94, 56, 98, 185, 56, 53, + 98, 59, 190, 60, 58, 93, 62, 98, 97, 98, + 60, 99, 40, 41, 102, 43, 54, 205, 206, 47, + 56, 209, 97, 98, 56, 143, 40, 41, 56, 43, + 53, 59, 143, 47, 52, 58, 97, 98, 60, 97, + 98, 141, 56, 143, 52, 59, 416, 53, 148, 416, + 143, 151, 58, 53, 140, 416, 60, 53, 58, 56, + 53, 147, 58, 53, 150, 58, 53, 185, 58, 97, + 98, 58, 190, 243, 185, 243, 58, 53, 266, 190, + 195, 181, 58, 97, 98, 185, 274, 205, 206, 57, + 190, 209, 185, 52, 205, 206, 53, 190, 209, 53, + 373, 58, 375, 53, 58, 205, 206, 60, 58, 209, + 52, 62, 205, 206, 52, 52, 209, 27, 52, 52, + 52, 291, 292, 291, 292, 61, 40, 41, 52, 43, + 52, 66, 67, 47, 62, 62, 46, 62, 57, 49, + 50, 414, 56, 243, 417, 59, 62, 56, 266, 62, + 243, 62, 53, 52, 62, 266, 274, 92, 93, 94, + 95, 96, 62, 274, 437, 438, 266, 52, 27, 61, + 340, 102, 340, 266, 274, 275, 52, 263, 61, 52, + 52, 274, 52, 97, 98, 373, 98, 375, 379, 57, + 57, 291, 292, 103, 57, 52, 62, 52, 291, 292, + 286, 287, 62, 52, 52, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, - 130, 131, 143, 133, -1, 411, -1, 413, 414, -1, - 317, 40, 41, 320, 43, -1, 146, 337, 47, 149, - -1, -1, 152, 337, 154, -1, 156, 56, 434, 435, - 59, -1, -1, -1, -1, -1, -1, 402, 370, 404, - 372, 406, 183, -1, 370, -1, 372, 188, -1, -1, - 370, -1, 372, -1, 184, 375, 370, -1, 372, -1, - 367, -1, 203, 204, -1, -1, 207, 197, 97, 98, - 99, -1, 143, -1, -1, -1, 383, -1, 385, 411, - 387, 413, 414, -1, -1, 411, -1, 413, 414, -1, - -1, 411, -1, 413, 414, -1, -1, 411, -1, 413, - 414, -1, 434, 435, -1, 143, -1, -1, 434, 435, - -1, -1, 183, -1, 434, 435, -1, 188, -1, -1, - 434, 435, -1, 264, -1, -1, -1, 257, -1, -1, - -1, 272, 203, 204, -1, -1, 207, -1, -1, 269, - -1, 271, -1, -1, 274, 183, -1, -1, -1, -1, - 188, 40, 41, -1, 43, -1, 286, -1, 47, -1, - 143, 66, 67, -1, -1, 203, 204, 56, -1, 207, - 59, -1, -1, -1, 304, 305, 306, 307, 308, 309, - 310, 311, 312, 313, 314, 143, -1, 92, 93, 94, - 95, 96, 322, 264, -1, 143, -1, -1, -1, -1, - 183, 272, -1, -1, -1, 188, -1, -1, 97, 98, - 99, -1, -1, -1, -1, -1, 346, 347, 348, 349, - 203, 204, -1, -1, 207, 183, 264, -1, -1, 370, - 188, 372, -1, -1, 272, 183, -1, -1, -1, -1, - 188, 371, -1, 373, 374, 203, 204, -1, -1, 207, - -1, -1, -1, -1, -1, 203, 204, -1, -1, 207, - -1, -1, -1, -1, -1, -1, -1, -1, 40, 41, - 411, 43, 413, 414, -1, -1, 48, 49, 50, 51, - -1, 264, -1, -1, 56, 415, -1, -1, -1, 272, - -1, -1, -1, 434, 435, -1, -1, -1, -1, 370, - -1, 372, -1, -1, -1, -1, 264, -1, -1, -1, - -1, -1, 40, 41, 272, 43, 264, -1, -1, 47, - -1, 16, -1, -1, 272, -1, 98, 99, 56, -1, - -1, 59, 370, -1, 372, -1, -1, -1, -1, -1, - 411, -1, 413, 414, -1, 40, 41, 42, 43, 44, - 45, 46, -1, 48, 49, 50, 51, 52, -1, -1, - -1, 56, 57, 434, 435, 60, -1, -1, -1, 97, - 98, 99, -1, 411, -1, 413, 414, -1, -1, -1, - -1, 76, 77, 40, 41, -1, 43, 370, -1, 372, - 47, -1, -1, -1, -1, -1, 434, 435, 93, 56, - -1, 96, 59, 98, 99, 100, 101, 102, 103, -1, - 40, 41, 370, 43, 372, -1, -1, -1, 48, 49, - 50, 51, 370, -1, 372, -1, 56, -1, 411, -1, - 413, 414, -1, -1, 64, 65, -1, -1, -1, -1, - 97, 98, 99, -1, -1, -1, -1, -1, -1, -1, - -1, 434, 435, 411, -1, 413, 414, -1, -1, -1, - -1, -1, -1, 411, -1, 413, 414, -1, 98, 99, - -1, -1, -1, -1, -1, -1, 434, 435, -1, -1, - 11, -1, -1, -1, -1, -1, 434, 435, 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, -1, 43, -1, -1, 98, 99, 48, - 49, 50, 51, -1, -1, 54, 55, 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, -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, 16, 43, 98, 99, -1, -1, 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, -1, -1, - -1, 56, -1, -1, -1, 60, -1, 62, -1, -1, - -1, -1, -1, 40, 41, -1, 43, 98, 99, -1, - 47, 76, 77, 40, 41, 16, 43, -1, -1, 56, - 47, -1, 59, -1, -1, -1, -1, -1, 93, 56, - -1, 96, 59, 98, 99, 100, 101, 102, 103, 40, - 41, 42, 43, 44, 45, 46, -1, 48, 49, 50, - 51, 52, -1, -1, -1, 56, -1, -1, -1, 60, - 97, 98, 99, -1, -1, -1, -1, -1, -1, -1, - 97, 98, 99, -1, -1, 76, 77, 40, 41, 16, - 43, -1, -1, -1, 47, -1, -1, -1, -1, -1, - -1, -1, 93, 56, -1, 96, 59, 98, 99, 100, - 101, 102, 103, 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, 17, 18, - -1, 20, 21, -1, 97, 98, 99, -1, -1, 76, - 77, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 40, 41, -1, 43, -1, 93, -1, -1, 96, - -1, 98, 99, 100, 101, 102, 103, 56, -1, -1, - 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, - -1, -1, -1, -1, -1, -1, -1, -1, 97, 98, - 99, 19, -1, -1, 22, 23, 24, -1, 26, 27, + 130, 131, 132, 133, 134, 143, 414, 52, 416, 417, + 62, 62, 25, 62, 320, 30, 146, 323, 62, 149, + 340, 53, 152, 62, 154, 62, 156, 340, 62, 437, + 438, 62, 53, 53, 53, 373, 62, 375, 62, 405, + 62, 407, 373, 409, 375, 9, 9, 185, 9, 209, + -1, 416, 190, 373, 195, 375, 186, -1, 378, -1, + 373, -1, 375, -1, 370, -1, -1, 205, 206, 199, + -1, 209, -1, -1, -1, -1, 414, -1, 416, 417, + 386, -1, 388, 414, 390, 416, 417, 92, 93, 94, + 95, 96, -1, 143, 414, -1, 416, 417, -1, 437, + 438, 414, 143, 416, 417, -1, 437, 438, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 437, 438, -1, + -1, -1, -1, -1, 437, 438, -1, 143, 266, 259, + -1, -1, -1, -1, -1, 185, 274, -1, -1, -1, + 190, 271, -1, 273, 185, -1, 276, 40, 41, 190, + 43, -1, 143, -1, 47, 205, 206, -1, 288, 209, + -1, -1, -1, 56, 205, 206, 59, -1, 209, 185, + -1, -1, -1, -1, 190, -1, -1, 307, 308, 309, + 310, 311, 312, 313, 314, 315, 316, 317, -1, 205, + 206, -1, -1, 209, 185, 325, -1, -1, 143, 190, + -1, -1, -1, -1, 97, 98, -1, -1, -1, -1, + 40, 41, -1, 43, 205, 206, 266, 47, 209, 349, + 350, 351, 352, -1, 274, 266, 56, -1, -1, 59, + -1, -1, -1, 274, -1, 373, -1, 375, -1, -1, + 185, -1, -1, -1, 374, 190, 376, 377, -1, -1, + 266, -1, -1, -1, -1, -1, -1, -1, 274, -1, + 205, 206, -1, -1, 209, -1, -1, 97, 98, -1, + 40, 41, -1, 43, -1, 266, 414, 47, 416, 417, + -1, -1, -1, 274, -1, -1, 56, -1, 418, 59, + -1, -1, -1, -1, 64, 65, -1, -1, -1, 437, + 438, -1, -1, -1, -1, -1, -1, -1, 78, 79, + 80, 81, 82, 83, 84, 85, 86, 87, 88, -1, + -1, 266, -1, 373, -1, 375, -1, 97, 98, 274, + -1, -1, 373, -1, 375, 40, 41, -1, 43, -1, + -1, -1, 47, -1, -1, -1, -1, -1, -1, -1, + -1, 56, -1, -1, 59, -1, -1, 373, -1, 375, + -1, -1, -1, -1, 414, -1, 416, 417, -1, -1, + -1, -1, -1, 414, -1, 416, 417, -1, -1, -1, + 16, -1, 373, -1, 375, -1, -1, 437, 438, -1, + -1, -1, 97, 98, -1, -1, 437, 438, 414, -1, + 416, 417, -1, -1, 40, 41, 42, 43, 44, 45, + 46, 47, 48, 49, 50, 51, 52, -1, -1, -1, + 56, 437, 438, 414, 60, 416, 417, -1, 373, -1, + 375, -1, 40, 41, -1, 43, -1, -1, -1, 47, + 76, 77, -1, -1, -1, -1, 437, 438, 56, -1, + -1, 59, -1, -1, -1, -1, -1, 93, -1, -1, + 96, 97, 98, 99, 100, 101, 102, -1, -1, 414, + -1, 416, 417, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 11, -1, -1, -1, -1, -1, 97, + 98, 19, 437, 438, 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, 40, 41, 54, 43, 56, -1, - -1, 47, 40, 41, -1, 43, 64, 65, -1, 47, - 56, -1, -1, 59, -1, -1, -1, -1, 56, 66, - 67, 59, 69, 70, 71, 72, 73, 74, 75, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 98, 99, 89, 90, 91, 92, 93, 94, 95, 96, - -1, 97, 98, 99, -1, -1, -1, 53, -1, 97, - 98, 99, 58, -1, -1, -1, -1, 63, -1, -1, + 38, 39, 40, 41, -1, 43, -1, -1, -1, 47, + 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, -1, 43, -1, 97, + 98, 47, 48, 49, 50, 51, -1, -1, 54, 55, + 56, -1, -1, -1, -1, -1, -1, -1, 64, 65, + -1, -1, -1, -1, -1, -1, 40, 41, -1, 43, + -1, -1, -1, 47, -1, -1, -1, -1, -1, -1, + -1, -1, 56, 12, -1, 59, -1, -1, -1, -1, + 19, 97, 98, 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, 47, 48, + 49, 50, 51, 97, 98, 54, -1, 56, -1, -1, + -1, -1, -1, -1, -1, 64, 65, -1, -1, -1, + -1, -1, -1, 40, 41, -1, 43, -1, -1, -1, + 47, -1, -1, -1, -1, -1, -1, -1, -1, 56, + 12, -1, 59, -1, -1, -1, -1, 19, 97, 98, + 22, 23, 24, -1, 26, 27, 28, 29, -1, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, + 16, 43, -1, -1, -1, 47, 48, 49, 50, 51, + 97, 98, 54, -1, 56, -1, -1, -1, -1, -1, + -1, -1, 64, 65, 40, 41, 42, 43, 44, 45, + 46, 47, 48, 49, 50, 51, 52, 58, -1, -1, + 56, 57, 63, -1, 60, 66, 67, 68, 69, 70, + 71, 72, 73, 74, 75, 97, 98, -1, -1, -1, + 76, 77, -1, 16, -1, -1, -1, -1, 89, 90, + 91, 92, 93, 94, 95, 96, -1, 93, -1, -1, + 96, 97, 98, 99, 100, 101, 102, 40, 41, 42, + 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, + -1, -1, -1, 56, 66, 67, -1, 60, -1, 62, + 72, 73, 74, 75, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 76, 77, -1, 16, -1, -1, -1, + 92, 93, 94, 95, 96, -1, -1, -1, -1, -1, + 93, -1, -1, 96, 97, 98, 99, 100, 101, 102, + 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, + 50, 51, 52, -1, -1, -1, 56, -1, -1, -1, + 60, -1, -1, -1, 17, 18, -1, 20, 21, -1, + -1, -1, -1, -1, -1, -1, 76, 77, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 40, 41, -1, + 43, -1, -1, 93, 47, -1, 96, 97, 98, 99, + 100, 101, 102, 56, -1, -1, 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, -1, -1, -1, -1, + -1, -1, -1, 19, 97, 98, 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, 47, 48, 49, 50, 51, -1, -1, 54, -1, + 56, -1, -1, -1, -1, -1, -1, 53, 64, 65, + -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, + -1, 97, 98, 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, @@ -4343,88 +4344,84 @@ namespace xsk { namespace gsc { namespace s2 { -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, + 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, 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, -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, -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, -1, 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, -1, 90, 91, 92, 93, 94, 95, 96, 66, - 67, -1, -1, 70, 71, 72, 73, 74, 75, 66, + -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, -1, 90, -1, 92, 93, 94, 95, 96, - -1, -1, -1, -1, -1, 92, 93, 94, 95, 96, - 66, 67, -1, -1, -1, -1, 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 + -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 }; const unsigned char parser::yystos_[] = { - 0, 11, 12, 13, 14, 15, 99, 114, 115, 116, - 117, 118, 119, 120, 121, 186, 98, 186, 187, 187, - 52, 0, 116, 117, 118, 52, 78, 62, 62, 100, - 189, 168, 186, 16, 40, 41, 42, 43, 44, 45, - 46, 48, 49, 50, 51, 52, 56, 60, 76, 77, - 93, 96, 101, 102, 103, 153, 158, 159, 160, 161, - 162, 163, 164, 165, 166, 167, 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, 186, 187, 56, 186, 187, 56, - 153, 56, 57, 153, 169, 170, 186, 153, 153, 102, - 103, 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, 165, 166, 186, 187, - 52, 60, 62, 54, 127, 186, 56, 52, 60, 56, + 0, 11, 12, 13, 14, 15, 47, 98, 114, 115, + 116, 117, 118, 119, 120, 121, 187, 97, 98, 188, + 188, 52, 0, 116, 117, 118, 52, 78, 62, 62, + 99, 190, 168, 187, 16, 40, 41, 42, 43, 44, + 45, 46, 48, 49, 50, 51, 52, 56, 60, 76, + 77, 93, 96, 98, 100, 101, 102, 153, 158, 159, + 160, 161, 162, 163, 164, 165, 166, 167, 171, 172, + 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, + 183, 184, 185, 187, 188, 189, 190, 191, 192, 193, + 194, 195, 53, 53, 58, 56, 187, 188, 56, 187, + 188, 56, 153, 56, 57, 153, 169, 170, 187, 153, + 153, 101, 102, 98, 62, 63, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 75, 89, 90, 91, 92, + 93, 94, 95, 96, 56, 59, 165, 166, 187, 188, + 52, 60, 62, 54, 127, 187, 56, 52, 60, 56, 52, 60, 56, 53, 58, 153, 58, 57, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, - 153, 153, 153, 153, 153, 153, 153, 153, 186, 60, - 169, 170, 186, 11, 19, 22, 23, 24, 26, 27, - 28, 29, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 55, 56, 64, 65, 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, 152, 155, 156, 157, 163, 164, 172, - 173, 176, 180, 181, 182, 183, 186, 153, 169, 186, - 153, 169, 186, 153, 153, 57, 153, 61, 57, 186, - 53, 52, 12, 122, 124, 153, 62, 52, 62, 52, - 122, 52, 52, 52, 52, 93, 189, 192, 61, 62, - 62, 62, 153, 62, 52, 52, 56, 163, 164, 176, - 176, 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, 153, 169, 12, 122, 62, 53, - 153, 27, 153, 128, 155, 156, 157, 176, 186, 153, - 61, 61, 62, 169, 169, 153, 52, 52, 52, 52, - 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, - 153, 57, 169, 57, 169, 57, 153, 52, 53, 62, - 53, 52, 53, 62, 30, 58, 53, 53, 53, 153, - 153, 153, 153, 52, 53, 52, 53, 52, 53, 169, - 122, 153, 122, 153, 154, 153, 186, 127, 62, 62, - 53, 53, 58, 53, 58, 53, 58, 169, 169, 169, - 53, 25, 53, 62, 53, 30, 62, 62, 170, 62, - 170, 62, 170, 53, 53, 53, 122, 62, 128, 122, - 153, 53, 53, 53, 53, 53, 62, 62, 62, 122, - 122 + 153, 153, 153, 153, 153, 153, 153, 153, 47, 98, + 186, 60, 169, 170, 187, 11, 19, 22, 23, 24, + 26, 27, 28, 29, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 55, 56, 64, 65, 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, 152, 155, 156, 157, 163, + 164, 172, 173, 176, 180, 181, 182, 183, 187, 153, + 169, 187, 153, 169, 187, 153, 153, 57, 153, 61, + 57, 187, 53, 52, 12, 122, 124, 153, 62, 52, + 62, 52, 122, 52, 52, 52, 52, 93, 190, 193, + 61, 62, 62, 62, 153, 62, 52, 52, 56, 163, + 164, 176, 176, 55, 123, 62, 62, 62, 62, 62, + 17, 18, 20, 21, 59, 64, 65, 78, 79, 80, + 81, 82, 83, 84, 85, 86, 87, 88, 57, 53, + 52, 57, 53, 52, 57, 58, 57, 153, 169, 12, + 122, 62, 53, 153, 27, 153, 128, 155, 156, 157, + 176, 187, 153, 61, 61, 62, 169, 169, 153, 52, + 52, 52, 52, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 57, 169, 57, 169, 57, 153, + 52, 53, 62, 53, 52, 53, 62, 30, 58, 53, + 53, 53, 153, 153, 153, 153, 52, 53, 52, 53, + 52, 53, 169, 122, 153, 122, 153, 154, 153, 187, + 127, 62, 62, 53, 53, 58, 53, 58, 53, 58, + 169, 169, 169, 53, 25, 53, 62, 53, 30, 62, + 62, 170, 62, 170, 62, 170, 53, 53, 53, 122, + 62, 128, 122, 153, 53, 53, 53, 53, 53, 62, + 62, 62, 122, 122 }; const unsigned char @@ -4448,10 +4445,11 @@ namespace xsk { namespace gsc { namespace s2 { 160, 160, 160, 160, 160, 160, 160, 160, 160, 161, 162, 163, 163, 164, 164, 165, 165, 165, 165, 165, 165, 166, 166, 166, 166, 167, 168, 168, 168, 169, - 169, 170, 170, 171, 171, 172, 173, 173, 174, 175, - 176, 176, 176, 176, 176, 176, 176, 176, 176, 177, - 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, - 187, 188, 189, 190, 191, 191, 192, 192, 193, 194 + 169, 170, 170, 171, 171, 172, 173, 174, 175, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 177, 178, + 179, 180, 181, 182, 183, 184, 185, 186, 187, 187, + 188, 188, 189, 190, 191, 192, 192, 193, 193, 194, + 195 }; const signed char @@ -4475,10 +4473,11 @@ namespace xsk { namespace gsc { namespace s2 { 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, 7, 2, 1, 2, 1, 1, 1 + 0, 3, 1, 2, 3, 4, 3, 3, 3, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, + 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, + 1, 1, 1, 1, 7, 2, 1, 2, 1, 1, + 1 }; @@ -4488,28 +4487,29 @@ namespace xsk { namespace gsc { namespace s2 { 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, 334, 335, 339, 341, 346, - 348, 353, 354, 358, 359, 363, 365, 367, 370, 374, - 376, 381, 383, 385, 390, 395, 397, 402, 407, 409, - 414, 416, 421, 426, 428, 433, 438, 443, 448, 453, - 458, 460, 465, 470, 472, 477, 482, 487, 492, 494, - 499, 504, 509, 514, 515, 516, 520, 521, 525, 527, - 529, 531, 533, 535, 537, 539, 541, 543, 545, 550, - 552, 557, 559, 564, 569, 571, 573, 575, 577, 579, - 581, 583, 585, 587, 589, 591, 593, 595, 597, 599, - 601, 603, 608, 609, 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, 638, - 643, 648, 649, 652, 653, 657, 659, 661, 663, 665, - 667, 672, 674, 676, 678, 683, 688, 690, 693, 697, - 700, 704, 706, 711, 713, 718, 723, 725, 730, 735, - 740, 741, 742, 743, 744, 745, 746, 747, 748, 752, - 757, 762, 767, 772, 777, 782, 787, 792, 797, 802, - 804, 809, 814, 819, 824, 826, 831, 833, 838, 843 + 0, 255, 255, 256, 260, 262, 264, 266, 268, 270, + 275, 279, 284, 285, 286, 287, 288, 292, 297, 302, + 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, 342, 347, + 349, 354, 355, 359, 360, 364, 366, 368, 371, 375, + 377, 382, 384, 386, 391, 396, 398, 403, 408, 410, + 415, 417, 422, 427, 429, 434, 439, 444, 449, 454, + 459, 461, 466, 471, 473, 478, 483, 488, 493, 495, + 500, 505, 510, 515, 516, 517, 521, 522, 526, 528, + 530, 532, 534, 536, 538, 540, 542, 544, 546, 551, + 553, 558, 560, 565, 570, 572, 574, 576, 578, 580, + 582, 584, 586, 588, 590, 592, 594, 596, 598, 600, + 602, 604, 609, 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, 639, + 644, 649, 650, 653, 654, 658, 660, 662, 664, 666, + 668, 673, 675, 677, 679, 684, 689, 691, 694, 698, + 701, 705, 707, 712, 714, 719, 724, 729, 734, 739, + 740, 741, 742, 743, 744, 745, 746, 747, 751, 756, + 761, 766, 771, 776, 781, 786, 791, 796, 801, 803, + 808, 810, 815, 820, 825, 830, 832, 837, 839, 844, + 849 }; void @@ -4544,7 +4544,7 @@ namespace xsk { namespace gsc { namespace s2 { } } } // xsk::gsc::s2 #line 4546 "parser.cpp" -#line 847 "parser.ypp" +#line 853 "parser.ypp" void xsk::gsc::s2::parser::error(const xsk::gsc::location& loc, const std::string& msg) diff --git a/src/s2/xsk/parser.hpp b/src/s2/xsk/parser.hpp index 8788571b..66b75715 100644 --- a/src/s2/xsk/parser.hpp +++ b/src/s2/xsk/parser.hpp @@ -474,6 +474,7 @@ namespace xsk { namespace gsc { namespace s2 { // expr_game char dummy19[sizeof (ast::expr_game::ptr)]; + // expr_identifier_nosize // expr_identifier char dummy20[sizeof (ast::expr_identifier::ptr)]; @@ -618,7 +619,6 @@ namespace xsk { namespace gsc { namespace s2 { // stmt_while char dummy66[sizeof (ast::stmt_while::ptr)]; - // "field" // "path" // "identifier" // "string literal" @@ -721,7 +721,7 @@ namespace xsk { namespace gsc { namespace s2 { TRUE = 44, // "true" FALSE = 45, // "false" UNDEFINED = 46, // "undefined" - SIZE = 47, // ".size" + SIZE = 47, // "size" GAME = 48, // "game" SELF = 49, // "self" ANIM = 50, // "anim" @@ -771,13 +771,13 @@ namespace xsk { namespace gsc { namespace s2 { MUL = 94, // "*" DIV = 95, // "/" MOD = 96, // "%" - FIELD = 97, // "field" - PATH = 98, // "path" - IDENTIFIER = 99, // "identifier" - STRING = 100, // "string literal" - ISTRING = 101, // "localized string" - FLOAT = 102, // "float" - INTEGER = 103, // "integer" + PATH = 97, // "path" + IDENTIFIER = 98, // "identifier" + STRING = 99, // "string literal" + ISTRING = 100, // "localized string" + FLOAT = 101, // "float" + INTEGER = 102, // "integer" + SIZEOF = 103, // SIZEOF ADD_ARRAY = 104, // ADD_ARRAY THEN = 105, // THEN TERN = 106, // TERN @@ -852,7 +852,7 @@ namespace xsk { namespace gsc { namespace s2 { S_TRUE = 44, // "true" S_FALSE = 45, // "false" S_UNDEFINED = 46, // "undefined" - S_SIZE = 47, // ".size" + S_SIZE = 47, // "size" S_GAME = 48, // "game" S_SELF = 49, // "self" S_ANIM = 50, // "anim" @@ -902,13 +902,13 @@ namespace xsk { namespace gsc { namespace s2 { S_MUL = 94, // "*" S_DIV = 95, // "/" S_MOD = 96, // "%" - S_FIELD = 97, // "field" - S_PATH = 98, // "path" - S_IDENTIFIER = 99, // "identifier" - S_STRING = 100, // "string literal" - S_ISTRING = 101, // "localized string" - S_FLOAT = 102, // "float" - S_INTEGER = 103, // "integer" + S_PATH = 97, // "path" + S_IDENTIFIER = 98, // "identifier" + S_STRING = 99, // "string literal" + S_ISTRING = 100, // "localized string" + S_FLOAT = 101, // "float" + S_INTEGER = 102, // "integer" + S_SIZEOF = 103, // SIZEOF S_ADD_ARRAY = 104, // ADD_ARRAY S_THEN = 105, // THEN S_TERN = 106, // TERN @@ -991,15 +991,16 @@ namespace xsk { namespace gsc { namespace s2 { S_expr_level = 183, // expr_level S_expr_animation = 184, // expr_animation S_expr_animtree = 185, // expr_animtree - S_expr_identifier = 186, // expr_identifier - S_expr_path = 187, // expr_path - S_expr_istring = 188, // expr_istring - S_expr_string = 189, // expr_string - 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_expr_identifier_nosize = 186, // expr_identifier_nosize + 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_vector = 191, // expr_vector + S_expr_float = 192, // expr_float + S_expr_integer = 193, // expr_integer + S_expr_false = 194, // expr_false + S_expr_true = 195 // expr_true }; }; @@ -1122,6 +1123,7 @@ namespace xsk { namespace gsc { namespace s2 { value.move< ast::expr_game::ptr > (std::move (that.value)); break; + case symbol_kind::S_expr_identifier_nosize: // expr_identifier_nosize case symbol_kind::S_expr_identifier: // expr_identifier value.move< ast::expr_identifier::ptr > (std::move (that.value)); break; @@ -1313,7 +1315,6 @@ namespace xsk { namespace gsc { namespace s2 { value.move< ast::stmt_while::ptr > (std::move (that.value)); break; - case symbol_kind::S_FIELD: // "field" case symbol_kind::S_PATH: // "path" case symbol_kind::S_IDENTIFIER: // "identifier" case symbol_kind::S_STRING: // "string literal" @@ -2392,6 +2393,7 @@ switch (yykind) value.template destroy< ast::expr_game::ptr > (); break; + case symbol_kind::S_expr_identifier_nosize: // expr_identifier_nosize case symbol_kind::S_expr_identifier: // expr_identifier value.template destroy< ast::expr_identifier::ptr > (); break; @@ -2583,7 +2585,6 @@ switch (yykind) value.template destroy< ast::stmt_while::ptr > (); break; - case symbol_kind::S_FIELD: // "field" case symbol_kind::S_PATH: // "path" case symbol_kind::S_IDENTIFIER: // "identifier" case symbol_kind::S_STRING: // "string literal" @@ -2689,7 +2690,7 @@ switch (yykind) { S2_ASSERT (tok == token::S2EOF || (token::S2error <= tok && tok <= token::MOD) - || (token::ADD_ARRAY <= tok && tok <= token::POSTDEC)); + || (token::SIZEOF <= tok && tok <= token::POSTDEC)); } #if 201103L <= YY_CPLUSPLUS symbol_type (int tok, std::string v, location_type l) @@ -2699,7 +2700,7 @@ switch (yykind) : super_type(token_type (tok), v, l) #endif { - S2_ASSERT ((token::FIELD <= tok && tok <= token::INTEGER)); + S2_ASSERT ((token::PATH <= tok && tok <= token::INTEGER)); } }; @@ -4204,21 +4205,6 @@ switch (yykind) return symbol_type (token::MOD, l); } #endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_FIELD (std::string v, location_type l) - { - return symbol_type (token::FIELD, std::move (v), std::move (l)); - } -#else - static - symbol_type - make_FIELD (const std::string& v, const location_type& l) - { - return symbol_type (token::FIELD, v, l); - } -#endif #if 201103L <= YY_CPLUSPLUS static symbol_type @@ -4309,6 +4295,21 @@ switch (yykind) return symbol_type (token::INTEGER, v, l); } #endif +#if 201103L <= YY_CPLUSPLUS + static + symbol_type + make_SIZEOF (location_type l) + { + return symbol_type (token::SIZEOF, std::move (l)); + } +#else + static + symbol_type + make_SIZEOF (const location_type& l) + { + return symbol_type (token::SIZEOF, l); + } +#endif #if 201103L <= YY_CPLUSPLUS static symbol_type @@ -4788,9 +4789,9 @@ switch (yykind) /// Constants. enum { - yylast_ = 2300, ///< Last index in yytable_. - yynnts_ = 82, ///< Number of nonterminal symbols. - yyfinal_ = 21 ///< Termination state number. + yylast_ = 2251, ///< Last index in yytable_. + yynnts_ = 83, ///< Number of nonterminal symbols. + yyfinal_ = 22 ///< Termination state number. }; @@ -4902,6 +4903,7 @@ switch (yykind) value.copy< ast::expr_game::ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_expr_identifier_nosize: // expr_identifier_nosize case symbol_kind::S_expr_identifier: // expr_identifier value.copy< ast::expr_identifier::ptr > (YY_MOVE (that.value)); break; @@ -5093,7 +5095,6 @@ switch (yykind) value.copy< ast::stmt_while::ptr > (YY_MOVE (that.value)); break; - case symbol_kind::S_FIELD: // "field" case symbol_kind::S_PATH: // "path" case symbol_kind::S_IDENTIFIER: // "identifier" case symbol_kind::S_STRING: // "string literal" @@ -5218,6 +5219,7 @@ switch (yykind) value.move< ast::expr_game::ptr > (YY_MOVE (s.value)); break; + case symbol_kind::S_expr_identifier_nosize: // expr_identifier_nosize case symbol_kind::S_expr_identifier: // expr_identifier value.move< ast::expr_identifier::ptr > (YY_MOVE (s.value)); break; @@ -5409,7 +5411,6 @@ switch (yykind) value.move< ast::stmt_while::ptr > (YY_MOVE (s.value)); break; - case symbol_kind::S_FIELD: // "field" case symbol_kind::S_PATH: // "path" case symbol_kind::S_IDENTIFIER: // "identifier" case symbol_kind::S_STRING: // "string literal" @@ -5482,7 +5483,7 @@ switch (yykind) #line 13 "parser.ypp" } } } // xsk::gsc::s2 -#line 5486 "parser.hpp" +#line 5487 "parser.hpp" diff --git a/src/s4/xsk/compiler.cpp b/src/s4/xsk/compiler.cpp index 8404afa5..27d39ef8 100644 --- a/src/s4/xsk/compiler.cpp +++ b/src/s4/xsk/compiler.cpp @@ -1624,7 +1624,7 @@ void compiler::emit_expr_reference(const ast::expr_reference::ptr& expr, const b void compiler::emit_expr_size(const ast::expr_size::ptr& expr, const block::ptr& blk) { - emit_expr_variable(expr->obj, blk); + emit_expr(expr->obj, blk); emit_opcode(opcode::OP_size); } diff --git a/src/s4/xsk/lexer.cpp b/src/s4/xsk/lexer.cpp index 50613287..13bf1f26 100644 --- a/src/s4/xsk/lexer.cpp +++ b/src/s4/xsk/lexer.cpp @@ -60,6 +60,7 @@ const std::unordered_map keywo { "true", parser::token::TRUE }, { "false", parser::token::FALSE }, { "undefined", parser::token::UNDEFINED }, + { "size", parser::token::SIZE }, { "game", parser::token::GAME }, { "self", parser::token::SELF }, { "anim", parser::token::ANIM }, @@ -87,8 +88,8 @@ bool buffer::push(char c) return true; } -reader::reader() : state(reader::end), buffer_pos(0), bytes_remaining(0), - last_byte(0), current_byte(0) { } +reader::reader() : state(reader::end), buffer_pos(0), + bytes_remaining(0), last_byte(0), current_byte(0) {} void reader::init(const char* data, size_t size) { @@ -176,7 +177,6 @@ auto lexer::lex() -> parser::symbol_type { buffer_.length = 0; state_ = state::start; - loc_.step(); while (true) { @@ -184,6 +184,7 @@ auto lexer::lex() -> parser::symbol_type auto& last = reader_.last_byte; auto& curr = reader_.current_byte; auto path = false; + loc_.step(); if (state == reader::end) { @@ -216,7 +217,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 != '*' && curr != '/') return parser::make_DIV(loc_); advance(); @@ -248,14 +249,35 @@ auto lexer::lex() -> parser::symbol_type } else if (last == '#' && curr == '/') { - reader_.advance(); + advance(); break; } - reader_.advance(); + advance(); } } } + else if (last == '@') + { + while (true) + { + if (state == reader::end) + throw comp_error(loc_, "unmatched script doc comment start ('/@')"); + + if (curr == '\n') + { + loc_.lines(); + loc_.step(); + } + else if (last == '@' && curr == '/') + { + advance(); + break; + } + + advance(); + } + } else if (last == '*') { while (true) @@ -270,11 +292,11 @@ auto lexer::lex() -> parser::symbol_type } else if (last == '*' && curr == '/') { - reader_.advance(); + advance(); break; } - reader_.advance(); + advance(); } } else if (last == '/') @@ -284,30 +306,10 @@ auto lexer::lex() -> parser::symbol_type if (state == reader::end) break; - if (last == '\\' && (curr == '\r' || curr == '\n')) - { - reader_.advance(); - - if (state == reader::end) - break; - - if (last == '\r') - { - if (curr != '\n') - throw comp_error(loc_, "invalid token ('\')"); - - reader_.advance(); - } - - loc_.lines(); - loc_.step(); - continue; - } - if (curr == '\n') break; - reader_.advance(); + advance(); } } continue; @@ -317,8 +319,8 @@ auto lexer::lex() -> parser::symbol_type if (!indev_) throw comp_error(loc_, "unmatched devblock end ('#/')"); - indev_ = false; advance(); + indev_ = false; return parser::make_DEVEND(loc_); } @@ -339,7 +341,7 @@ auto lexer::lex() -> parser::symbol_type state_ = state::preprocessor; goto lex_name; case '*': - if (curr != '/' && curr != '=') + if (curr != '=' && curr != '/') return parser::make_MUL(loc_); advance(); @@ -352,13 +354,9 @@ auto lexer::lex() -> parser::symbol_type state_ = state::string; goto lex_string; case '.': - advance(); - - if (state == reader::end) - throw comp_error(loc_, "unterminated field ('.')"); - - state_ = state::field; - goto lex_name_or_number; + if (curr < '0' || curr > '9') + return parser::make_DOT(loc_); + goto lex_number; case '(': return parser::make_LPAREN(loc_); case ')': @@ -482,7 +480,6 @@ auto lexer::lex() -> parser::symbol_type advance(); return parser::make_ASSIGN_RSHIFT(loc_); default: -lex_name_or_number: if (last >= '0' && last <= '9') goto lex_number; else if (last == '_' || last >= 'A' && last <= 'Z' || last >= 'a' && last <= 'z') @@ -564,23 +561,8 @@ lex_name: advance(); } - if (state_ == state::field) + if (state_ == state::preprocessor) { - if (path) - throw comp_error(loc_, "invalid field token '\\'"); - - if (std::string_view(buffer_.data, buffer_.length) == "size") - { - return parser::make_SIZE(loc_); - } - - return parser::make_FIELD(std::string(buffer_.data, buffer_.length), loc_); - } - else if (state_ == state::preprocessor) - { - if (path) - throw comp_error(loc_, "invalid preprocessor directive"); - auto token = parser::token::S4UNDEF; if (buffer_.length < 16) @@ -596,7 +578,8 @@ lex_name: } } - preprocessor(token); + preprocessor_run(token); + state_ = state::start; continue; } @@ -633,14 +616,11 @@ lex_name: } lex_number: - if (state_ == state::field) - buffer_.push('.'); - - if (state_ == state::field || last == '.' || last != '0' || (last == '0' && (curr != 'o' && curr != 'b' && curr != 'x'))) + if (last == '.' || last != '0' || (last == '0' && (curr != 'o' && curr != 'b' && curr != 'x'))) { buffer_.push(last); - auto dot = 0; + auto dot = last == '.' ? 1 : 0; auto flt = 0; while (true) @@ -676,10 +656,10 @@ lex_number: if (last == '\'') throw comp_error(loc_, "invalid number literal"); - if (state_ == state::field && dot || dot > 1 || flt > 1 || flt && buffer_.data[buffer_.length - 1] != 'f') + if (dot > 1 || flt > 1 || flt && buffer_.data[buffer_.length - 1] != 'f') throw comp_error(loc_, "invalid number literal"); - if (state_ == state::field || dot || flt) + if (dot || flt) return parser::make_FLOAT(std::string(buffer_.data, buffer_.length), loc_); return parser::make_INTEGER(std::string(buffer_.data, buffer_.length), loc_); @@ -694,7 +674,7 @@ lex_number: break; if (curr == '\'' && (last == '\'' || last == 'o') || (curr == 'o' && last == '\'')) - throw comp_error(loc_, "invalid octal literal"); + throw comp_error(loc_, "invalid octal literal"); if (curr == '\'') { @@ -784,18 +764,22 @@ lex_number: return parser::make_INTEGER(xsk::utils::string::hex_to_dec(buffer_.data), loc_); } - // cant get here! + + throw error("UNEXPECTED LEXER INTERNAL ERROR!"); } } void lexer::advance() { reader_.advance(); + loc_.end.column++; - // dont wrap comment marks '/\/' '/\*' outside strings - if (state_ == state::start && reader_.last_byte == '/') - return; + if (reader_.current_byte == '\\') [[unlikely]] + preprocessor_wrap(); +} +void lexer::preprocessor_wrap() +{ while (reader_.current_byte == '\\') { if (reader_.bytes_remaining == 1) @@ -837,7 +821,7 @@ void lexer::advance() } } -void lexer::preprocessor(parser::token::token_kind_type token) +void lexer::preprocessor_run(parser::token::token_kind_type token) { if (!clean_) throw comp_error(loc_, "invalid token ('#')"); diff --git a/src/s4/xsk/lexer.hpp b/src/s4/xsk/lexer.hpp index 12b33453..a70a6d06 100644 --- a/src/s4/xsk/lexer.hpp +++ b/src/s4/xsk/lexer.hpp @@ -44,7 +44,7 @@ struct reader class lexer { - enum class state : std::uint8_t { start, string, localize, field, preprocessor }; + enum class state : std::uint8_t { start, string, localize, preprocessor }; reader reader_; buffer buffer_; @@ -66,7 +66,8 @@ public: private: void advance(); - void preprocessor(parser::token::token_kind_type token); + void preprocessor_wrap(); + void preprocessor_run(parser::token::token_kind_type token); }; } // namespace xsk::gsc::s4 diff --git a/src/s4/xsk/parser.cpp b/src/s4/xsk/parser.cpp index 88100fd4..dd2397e7 100644 --- a/src/s4/xsk/parser.cpp +++ b/src/s4/xsk/parser.cpp @@ -301,6 +301,7 @@ namespace xsk { namespace gsc { namespace s4 { value.YY_MOVE_OR_COPY< ast::expr_game::ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_expr_identifier_nosize: // expr_identifier_nosize case symbol_kind::S_expr_identifier: // expr_identifier value.YY_MOVE_OR_COPY< ast::expr_identifier::ptr > (YY_MOVE (that.value)); break; @@ -500,7 +501,6 @@ namespace xsk { namespace gsc { namespace s4 { value.YY_MOVE_OR_COPY< ast::stmt_while::ptr > (YY_MOVE (that.value)); break; - case symbol_kind::S_FIELD: // "field" case symbol_kind::S_PATH: // "path" case symbol_kind::S_IDENTIFIER: // "identifier" case symbol_kind::S_STRING: // "string literal" @@ -611,6 +611,7 @@ namespace xsk { namespace gsc { namespace s4 { value.move< ast::expr_game::ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_expr_identifier_nosize: // expr_identifier_nosize case symbol_kind::S_expr_identifier: // expr_identifier value.move< ast::expr_identifier::ptr > (YY_MOVE (that.value)); break; @@ -810,7 +811,6 @@ namespace xsk { namespace gsc { namespace s4 { value.move< ast::stmt_while::ptr > (YY_MOVE (that.value)); break; - case symbol_kind::S_FIELD: // "field" case symbol_kind::S_PATH: // "path" case symbol_kind::S_IDENTIFIER: // "identifier" case symbol_kind::S_STRING: // "string literal" @@ -921,6 +921,7 @@ namespace xsk { namespace gsc { namespace s4 { value.copy< ast::expr_game::ptr > (that.value); break; + case symbol_kind::S_expr_identifier_nosize: // expr_identifier_nosize case symbol_kind::S_expr_identifier: // expr_identifier value.copy< ast::expr_identifier::ptr > (that.value); break; @@ -1120,7 +1121,6 @@ namespace xsk { namespace gsc { namespace s4 { value.copy< ast::stmt_while::ptr > (that.value); break; - case symbol_kind::S_FIELD: // "field" case symbol_kind::S_PATH: // "path" case symbol_kind::S_IDENTIFIER: // "identifier" case symbol_kind::S_STRING: // "string literal" @@ -1230,6 +1230,7 @@ namespace xsk { namespace gsc { namespace s4 { value.move< ast::expr_game::ptr > (that.value); break; + case symbol_kind::S_expr_identifier_nosize: // expr_identifier_nosize case symbol_kind::S_expr_identifier: // expr_identifier value.move< ast::expr_identifier::ptr > (that.value); break; @@ -1429,7 +1430,6 @@ namespace xsk { namespace gsc { namespace s4 { value.move< ast::stmt_while::ptr > (that.value); break; - case symbol_kind::S_FIELD: // "field" case symbol_kind::S_PATH: // "path" case symbol_kind::S_IDENTIFIER: // "identifier" case symbol_kind::S_STRING: // "string literal" @@ -1794,6 +1794,7 @@ namespace xsk { namespace gsc { namespace s4 { yylhs.value.emplace< ast::expr_game::ptr > (); break; + case symbol_kind::S_expr_identifier_nosize: // expr_identifier_nosize case symbol_kind::S_expr_identifier: // expr_identifier yylhs.value.emplace< ast::expr_identifier::ptr > (); break; @@ -1993,7 +1994,6 @@ namespace xsk { namespace gsc { namespace s4 { yylhs.value.emplace< ast::stmt_while::ptr > (); break; - case symbol_kind::S_FIELD: // "field" case symbol_kind::S_PATH: // "path" case symbol_kind::S_IDENTIFIER: // "identifier" case symbol_kind::S_STRING: // "string literal" @@ -2024,1339 +2024,1345 @@ namespace xsk { namespace gsc { namespace s4 { switch (yyn) { case 2: // root: program -#line 258 "parser.ypp" +#line 259 "parser.ypp" { ast = std::move(yystack_[0].value.as < ast::program::ptr > ()); } #line 2030 "parser.cpp" break; case 3: // root: %empty -#line 259 "parser.ypp" +#line 260 "parser.ypp" { ast = std::make_unique(yylhs.location); } #line 2036 "parser.cpp" break; case 4: // program: program inline -#line 264 "parser.ypp" +#line 265 "parser.ypp" { yylhs.value.as < ast::program::ptr > () = std::move(yystack_[1].value.as < ast::program::ptr > ()); } #line 2042 "parser.cpp" break; case 5: // program: program include -#line 266 "parser.ypp" +#line 267 "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" break; case 6: // program: program declaration -#line 268 "parser.ypp" +#line 269 "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" break; case 7: // program: inline -#line 270 "parser.ypp" +#line 271 "parser.ypp" { yylhs.value.as < ast::program::ptr > () = std::make_unique(yylhs.location); } #line 2060 "parser.cpp" break; case 8: // program: include -#line 272 "parser.ypp" +#line 273 "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" break; case 9: // program: declaration -#line 274 "parser.ypp" +#line 275 "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" break; case 10: // inline: "#inline" expr_path ";" -#line 278 "parser.ypp" +#line 279 "parser.ypp" { lexer.push_header(yystack_[1].value.as < ast::expr_path::ptr > ()->value); } #line 2078 "parser.cpp" break; case 11: // include: "#include" expr_path ";" -#line 283 "parser.ypp" +#line 284 "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" break; case 12: // declaration: "/#" -#line 287 "parser.ypp" +#line 288 "parser.ypp" { yylhs.value.as < ast::decl > ().as_dev_begin = std::make_unique(yylhs.location); } #line 2090 "parser.cpp" break; case 13: // declaration: "#/" -#line 288 "parser.ypp" +#line 289 "parser.ypp" { yylhs.value.as < ast::decl > ().as_dev_end = std::make_unique(yylhs.location); } #line 2096 "parser.cpp" break; case 14: // declaration: decl_usingtree -#line 289 "parser.ypp" +#line 290 "parser.ypp" { yylhs.value.as < ast::decl > ().as_usingtree = std::move(yystack_[0].value.as < ast::decl_usingtree::ptr > ()); } #line 2102 "parser.cpp" break; case 15: // declaration: decl_constant -#line 290 "parser.ypp" +#line 291 "parser.ypp" { yylhs.value.as < ast::decl > ().as_constant = std::move(yystack_[0].value.as < ast::decl_constant::ptr > ()); } #line 2108 "parser.cpp" break; case 16: // declaration: decl_thread -#line 291 "parser.ypp" +#line 292 "parser.ypp" { yylhs.value.as < ast::decl > ().as_thread = std::move(yystack_[0].value.as < ast::decl_thread::ptr > ()); } #line 2114 "parser.cpp" break; case 17: // decl_usingtree: "#using_animtree" "(" expr_string ")" ";" -#line 296 "parser.ypp" +#line 297 "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" break; case 18: // decl_constant: expr_identifier "=" expr ";" -#line 301 "parser.ypp" +#line 302 "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" break; case 19: // decl_thread: expr_identifier "(" expr_parameters ")" stmt_block -#line 306 "parser.ypp" +#line 307 "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" break; case 20: // stmt: stmt_block -#line 310 "parser.ypp" +#line 311 "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_call -#line 311 "parser.ypp" +#line 312 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_call = std::move(yystack_[0].value.as < ast::stmt_call::ptr > ()); } #line 2144 "parser.cpp" break; case 22: // stmt: stmt_assign -#line 312 "parser.ypp" +#line 313 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_assign = std::move(yystack_[0].value.as < ast::stmt_assign::ptr > ()); } #line 2150 "parser.cpp" break; case 23: // stmt: stmt_endon -#line 313 "parser.ypp" +#line 314 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_endon = std::move(yystack_[0].value.as < ast::stmt_endon::ptr > ()); } #line 2156 "parser.cpp" break; case 24: // stmt: stmt_notify -#line 314 "parser.ypp" +#line 315 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_notify = std::move(yystack_[0].value.as < ast::stmt_notify::ptr > ()); } #line 2162 "parser.cpp" break; case 25: // stmt: stmt_wait -#line 315 "parser.ypp" +#line 316 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_wait = std::move(yystack_[0].value.as < ast::stmt_wait::ptr > ()); } #line 2168 "parser.cpp" break; case 26: // stmt: stmt_waittill -#line 316 "parser.ypp" +#line 317 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_waittill = std::move(yystack_[0].value.as < ast::stmt_waittill::ptr > ()); } #line 2174 "parser.cpp" break; case 27: // stmt: stmt_waittillmatch -#line 317 "parser.ypp" +#line 318 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_waittillmatch = std::move(yystack_[0].value.as < ast::stmt_waittillmatch::ptr > ()); } #line 2180 "parser.cpp" break; case 28: // stmt: stmt_waittillframeend -#line 318 "parser.ypp" +#line 319 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_waittillframeend = std::move(yystack_[0].value.as < ast::stmt_waittillframeend::ptr > ()); } #line 2186 "parser.cpp" break; case 29: // stmt: stmt_waitframe -#line 319 "parser.ypp" +#line 320 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_waitframe = std::move(yystack_[0].value.as < ast::stmt_waitframe::ptr > ()); } #line 2192 "parser.cpp" break; case 30: // stmt: stmt_if -#line 320 "parser.ypp" +#line 321 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_if = std::move(yystack_[0].value.as < ast::stmt_if::ptr > ()); } #line 2198 "parser.cpp" break; case 31: // stmt: stmt_ifelse -#line 321 "parser.ypp" +#line 322 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_ifelse = std::move(yystack_[0].value.as < ast::stmt_ifelse::ptr > ()); } #line 2204 "parser.cpp" break; case 32: // stmt: stmt_while -#line 322 "parser.ypp" +#line 323 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_while = std::move(yystack_[0].value.as < ast::stmt_while::ptr > ()); } #line 2210 "parser.cpp" break; case 33: // stmt: stmt_dowhile -#line 323 "parser.ypp" +#line 324 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_dowhile = std::move(yystack_[0].value.as < ast::stmt_dowhile::ptr > ()); } #line 2216 "parser.cpp" break; case 34: // stmt: stmt_for -#line 324 "parser.ypp" +#line 325 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_for = std::move(yystack_[0].value.as < ast::stmt_for::ptr > ()); } #line 2222 "parser.cpp" break; case 35: // stmt: stmt_foreach -#line 325 "parser.ypp" +#line 326 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_foreach = std::move(yystack_[0].value.as < ast::stmt_foreach::ptr > ()); } #line 2228 "parser.cpp" break; case 36: // stmt: stmt_switch -#line 326 "parser.ypp" +#line 327 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_switch = std::move(yystack_[0].value.as < ast::stmt_switch::ptr > ()); } #line 2234 "parser.cpp" break; case 37: // stmt: stmt_case -#line 327 "parser.ypp" +#line 328 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_case = std::move(yystack_[0].value.as < ast::stmt_case::ptr > ()); } #line 2240 "parser.cpp" break; case 38: // stmt: stmt_default -#line 328 "parser.ypp" +#line 329 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_default = std::move(yystack_[0].value.as < ast::stmt_default::ptr > ()); } #line 2246 "parser.cpp" break; case 39: // stmt: stmt_break -#line 329 "parser.ypp" +#line 330 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_break = std::move(yystack_[0].value.as < ast::stmt_break::ptr > ()); } #line 2252 "parser.cpp" break; case 40: // stmt: stmt_continue -#line 330 "parser.ypp" +#line 331 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_continue = std::move(yystack_[0].value.as < ast::stmt_continue::ptr > ()); } #line 2258 "parser.cpp" break; case 41: // stmt: stmt_return -#line 331 "parser.ypp" +#line 332 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_return = std::move(yystack_[0].value.as < ast::stmt_return::ptr > ()); } #line 2264 "parser.cpp" break; case 42: // stmt: stmt_breakpoint -#line 332 "parser.ypp" +#line 333 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_breakpoint = std::move(yystack_[0].value.as < ast::stmt_breakpoint::ptr > ()); } #line 2270 "parser.cpp" break; case 43: // stmt: stmt_prof_begin -#line 333 "parser.ypp" +#line 334 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_prof_begin = std::move(yystack_[0].value.as < ast::stmt_prof_begin::ptr > ()); } #line 2276 "parser.cpp" break; case 44: // stmt: stmt_prof_end -#line 334 "parser.ypp" +#line 335 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_prof_end = std::move(yystack_[0].value.as < ast::stmt_prof_end::ptr > ()); } #line 2282 "parser.cpp" break; case 45: // stmt_or_dev: stmt -#line 338 "parser.ypp" +#line 339 "parser.ypp" { yylhs.value.as < ast::stmt > () = std::move(yystack_[0].value.as < ast::stmt > ()); } #line 2288 "parser.cpp" break; case 46: // stmt_or_dev: stmt_dev -#line 339 "parser.ypp" +#line 340 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_dev = std::move(yystack_[0].value.as < ast::stmt_dev::ptr > ()); } #line 2294 "parser.cpp" break; case 47: // stmt_list: stmt_list stmt -#line 344 "parser.ypp" +#line 345 "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 2300 "parser.cpp" break; case 48: // stmt_list: stmt -#line 346 "parser.ypp" +#line 347 "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 2306 "parser.cpp" break; case 49: // stmt_or_dev_list: stmt_or_dev_list stmt_or_dev -#line 351 "parser.ypp" +#line 352 "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 2312 "parser.cpp" break; case 50: // stmt_or_dev_list: stmt_or_dev -#line 353 "parser.ypp" +#line 354 "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 2318 "parser.cpp" break; case 51: // stmt_dev: "/#" stmt_list "#/" -#line 357 "parser.ypp" +#line 358 "parser.ypp" { yylhs.value.as < ast::stmt_dev::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::stmt_list::ptr > ())); } #line 2324 "parser.cpp" break; case 52: // stmt_dev: "/#" "#/" -#line 358 "parser.ypp" +#line 359 "parser.ypp" { yylhs.value.as < ast::stmt_dev::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } #line 2330 "parser.cpp" break; case 53: // stmt_block: "{" stmt_or_dev_list "}" -#line 362 "parser.ypp" +#line 363 "parser.ypp" { yylhs.value.as < ast::stmt_list::ptr > () = std::move(yystack_[1].value.as < ast::stmt_list::ptr > ()); } #line 2336 "parser.cpp" break; case 54: // stmt_block: "{" "}" -#line 363 "parser.ypp" +#line 364 "parser.ypp" { yylhs.value.as < ast::stmt_list::ptr > () = std::make_unique(yylhs.location); } #line 2342 "parser.cpp" break; case 55: // stmt_expr: expr_assign -#line 368 "parser.ypp" +#line 369 "parser.ypp" { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } #line 2348 "parser.cpp" break; case 56: // stmt_expr: expr_increment -#line 370 "parser.ypp" +#line 371 "parser.ypp" { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } #line 2354 "parser.cpp" break; case 57: // stmt_expr: expr_decrement -#line 372 "parser.ypp" +#line 373 "parser.ypp" { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } #line 2360 "parser.cpp" break; case 58: // stmt_expr: %empty -#line 374 "parser.ypp" +#line 375 "parser.ypp" { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } #line 2366 "parser.cpp" break; case 59: // stmt_call: expr_call ";" -#line 379 "parser.ypp" +#line 380 "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 2372 "parser.cpp" break; case 60: // stmt_call: expr_method ";" -#line 381 "parser.ypp" +#line 382 "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 2378 "parser.cpp" break; case 61: // stmt_assign: expr_assign ";" -#line 386 "parser.ypp" +#line 387 "parser.ypp" { yylhs.value.as < ast::stmt_assign::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } #line 2384 "parser.cpp" break; case 62: // stmt_assign: expr_increment ";" -#line 388 "parser.ypp" +#line 389 "parser.ypp" { yylhs.value.as < ast::stmt_assign::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } #line 2390 "parser.cpp" break; case 63: // stmt_assign: expr_decrement ";" -#line 390 "parser.ypp" +#line 391 "parser.ypp" { yylhs.value.as < ast::stmt_assign::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } #line 2396 "parser.cpp" break; case 64: // stmt_endon: expr_object "endon" "(" expr ")" ";" -#line 395 "parser.ypp" +#line 396 "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 2402 "parser.cpp" break; case 65: // stmt_notify: expr_object "notify" "(" expr "," expr_arguments_no_empty ")" ";" -#line 400 "parser.ypp" +#line 401 "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 2408 "parser.cpp" break; case 66: // stmt_notify: expr_object "notify" "(" expr ")" ";" -#line 402 "parser.ypp" +#line 403 "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 2414 "parser.cpp" break; case 67: // stmt_wait: "wait" expr ";" -#line 407 "parser.ypp" +#line 408 "parser.ypp" { yylhs.value.as < ast::stmt_wait::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } #line 2420 "parser.cpp" break; case 68: // stmt_waittill: expr_object "waittill" "(" expr "," expr_arguments_no_empty ")" ";" -#line 412 "parser.ypp" +#line 413 "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 2426 "parser.cpp" break; case 69: // stmt_waittill: expr_object "waittill" "(" expr ")" ";" -#line 414 "parser.ypp" +#line 415 "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 2432 "parser.cpp" break; case 70: // stmt_waittillmatch: expr_object "waittillmatch" "(" expr "," expr_arguments_no_empty ")" ";" -#line 419 "parser.ypp" +#line 420 "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 2438 "parser.cpp" break; case 71: // stmt_waittillmatch: expr_object "waittillmatch" "(" expr ")" ";" -#line 421 "parser.ypp" +#line 422 "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 2444 "parser.cpp" break; case 72: // stmt_waittillframeend: "waittillframeend" ";" -#line 426 "parser.ypp" +#line 427 "parser.ypp" { yylhs.value.as < ast::stmt_waittillframeend::ptr > () = std::make_unique(yylhs.location); } #line 2450 "parser.cpp" break; case 73: // stmt_waitframe: "waitframe" ";" -#line 431 "parser.ypp" +#line 432 "parser.ypp" { yylhs.value.as < ast::stmt_waitframe::ptr > () = std::make_unique(yylhs.location); } #line 2456 "parser.cpp" break; case 74: // stmt_waitframe: "waitframe" "(" ")" ";" -#line 433 "parser.ypp" +#line 434 "parser.ypp" { yylhs.value.as < ast::stmt_waitframe::ptr > () = std::make_unique(yylhs.location); } #line 2462 "parser.cpp" break; case 75: // stmt_if: "if" "(" expr ")" stmt -#line 438 "parser.ypp" +#line 439 "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 2468 "parser.cpp" break; case 76: // stmt_ifelse: "if" "(" expr ")" stmt "else" stmt -#line 443 "parser.ypp" +#line 444 "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 2474 "parser.cpp" break; case 77: // stmt_while: "while" "(" expr ")" stmt -#line 448 "parser.ypp" +#line 449 "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 2480 "parser.cpp" break; case 78: // stmt_dowhile: "do" stmt "while" "(" expr ")" ";" -#line 453 "parser.ypp" +#line 454 "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 2486 "parser.cpp" break; case 79: // stmt_for: "for" "(" stmt_expr ";" expr_or_empty ";" stmt_expr ")" stmt -#line 458 "parser.ypp" +#line 459 "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 2492 "parser.cpp" break; case 80: // stmt_foreach: "foreach" "(" expr_identifier "in" expr ")" stmt -#line 463 "parser.ypp" +#line 464 "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 2498 "parser.cpp" break; case 81: // stmt_foreach: "foreach" "(" expr_identifier "," expr_identifier "in" expr ")" stmt -#line 465 "parser.ypp" +#line 466 "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 2504 "parser.cpp" break; case 82: // stmt_switch: "switch" "(" expr ")" stmt_block -#line 470 "parser.ypp" +#line 471 "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 2510 "parser.cpp" break; case 83: // stmt_case: "case" expr_integer ":" -#line 475 "parser.ypp" +#line 476 "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 2516 "parser.cpp" break; case 84: // stmt_case: "case" expr_string ":" -#line 477 "parser.ypp" +#line 478 "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 2522 "parser.cpp" break; case 85: // stmt_default: "default" ":" -#line 482 "parser.ypp" +#line 483 "parser.ypp" { yylhs.value.as < ast::stmt_default::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } #line 2528 "parser.cpp" break; case 86: // stmt_break: "break" ";" -#line 487 "parser.ypp" +#line 488 "parser.ypp" { yylhs.value.as < ast::stmt_break::ptr > () = std::make_unique(yylhs.location); } #line 2534 "parser.cpp" break; case 87: // stmt_continue: "continue" ";" -#line 492 "parser.ypp" +#line 493 "parser.ypp" { yylhs.value.as < ast::stmt_continue::ptr > () = std::make_unique(yylhs.location); } #line 2540 "parser.cpp" break; case 88: // stmt_return: "return" expr ";" -#line 497 "parser.ypp" +#line 498 "parser.ypp" { yylhs.value.as < ast::stmt_return::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } #line 2546 "parser.cpp" break; case 89: // stmt_return: "return" ";" -#line 499 "parser.ypp" +#line 500 "parser.ypp" { yylhs.value.as < ast::stmt_return::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } #line 2552 "parser.cpp" break; case 90: // stmt_breakpoint: "breakpoint" ";" -#line 504 "parser.ypp" +#line 505 "parser.ypp" { yylhs.value.as < ast::stmt_breakpoint::ptr > () = std::make_unique(yylhs.location); } #line 2558 "parser.cpp" break; case 91: // stmt_prof_begin: "prof_begin" "(" expr_arguments ")" ";" -#line 509 "parser.ypp" +#line 510 "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 2564 "parser.cpp" break; case 92: // stmt_prof_end: "prof_end" "(" expr_arguments ")" ";" -#line 514 "parser.ypp" +#line 515 "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 2570 "parser.cpp" break; case 93: // expr: expr_ternary -#line 518 "parser.ypp" +#line 519 "parser.ypp" { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } #line 2576 "parser.cpp" break; case 94: // expr: expr_binary -#line 519 "parser.ypp" +#line 520 "parser.ypp" { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } #line 2582 "parser.cpp" break; case 95: // expr: expr_primitive -#line 520 "parser.ypp" +#line 521 "parser.ypp" { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } #line 2588 "parser.cpp" break; case 96: // expr_or_empty: expr -#line 524 "parser.ypp" +#line 525 "parser.ypp" { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } #line 2594 "parser.cpp" break; case 97: // expr_or_empty: %empty -#line 525 "parser.ypp" +#line 526 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location); } #line 2600 "parser.cpp" break; case 98: // expr_assign: expr_object "=" expr -#line 530 "parser.ypp" +#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 2606 "parser.cpp" break; case 99: // expr_assign: expr_object "|=" expr -#line 532 "parser.ypp" +#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 2612 "parser.cpp" break; case 100: // expr_assign: expr_object "&=" expr -#line 534 "parser.ypp" +#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 2618 "parser.cpp" break; case 101: // expr_assign: expr_object "^=" expr -#line 536 "parser.ypp" +#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 2624 "parser.cpp" break; case 102: // expr_assign: expr_object "<<=" expr -#line 538 "parser.ypp" +#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 2630 "parser.cpp" break; case 103: // expr_assign: expr_object ">>=" expr -#line 540 "parser.ypp" +#line 541 "parser.ypp" { yylhs.value.as < ast::expr > ().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 542 "parser.ypp" +#line 543 "parser.ypp" { yylhs.value.as < ast::expr > ().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 544 "parser.ypp" +#line 545 "parser.ypp" { yylhs.value.as < ast::expr > ().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_assign: expr_object "*=" expr -#line 546 "parser.ypp" +#line 547 "parser.ypp" { yylhs.value.as < ast::expr > ().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" break; case 107: // expr_assign: expr_object "/=" expr -#line 548 "parser.ypp" +#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 2660 "parser.cpp" break; case 108: // expr_assign: expr_object "%=" expr -#line 550 "parser.ypp" +#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 2666 "parser.cpp" break; case 109: // expr_increment: "++" expr_object -#line 555 "parser.ypp" +#line 556 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ()), true); } #line 2672 "parser.cpp" break; case 110: // expr_increment: expr_object "++" -#line 557 "parser.ypp" +#line 558 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ()), false); } #line 2678 "parser.cpp" break; case 111: // expr_decrement: "--" expr_object -#line 562 "parser.ypp" +#line 563 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ()), true); } #line 2684 "parser.cpp" break; case 112: // expr_decrement: expr_object "--" -#line 564 "parser.ypp" +#line 565 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ()), false); } #line 2690 "parser.cpp" break; case 113: // expr_ternary: expr "?" expr ":" expr -#line 569 "parser.ypp" +#line 570 "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 2696 "parser.cpp" break; case 114: // expr_binary: expr "||" expr -#line 574 "parser.ypp" +#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 2702 "parser.cpp" break; case 115: // expr_binary: expr "&&" expr -#line 576 "parser.ypp" +#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 2708 "parser.cpp" break; case 116: // expr_binary: expr "==" expr -#line 578 "parser.ypp" +#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 2714 "parser.cpp" break; case 117: // expr_binary: expr "!=" expr -#line 580 "parser.ypp" +#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 2720 "parser.cpp" break; case 118: // expr_binary: expr "<=" expr -#line 582 "parser.ypp" +#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 2726 "parser.cpp" break; case 119: // expr_binary: expr ">=" expr -#line 584 "parser.ypp" +#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 2732 "parser.cpp" break; case 120: // expr_binary: expr "<" expr -#line 586 "parser.ypp" +#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 2738 "parser.cpp" break; case 121: // expr_binary: expr ">" expr -#line 588 "parser.ypp" +#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 2744 "parser.cpp" break; case 122: // expr_binary: expr "|" expr -#line 590 "parser.ypp" +#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 2750 "parser.cpp" break; case 123: // expr_binary: expr "&" expr -#line 592 "parser.ypp" +#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 2756 "parser.cpp" break; case 124: // expr_binary: expr "^" expr -#line 594 "parser.ypp" +#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 2762 "parser.cpp" break; case 125: // expr_binary: expr "<<" expr -#line 596 "parser.ypp" +#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 2768 "parser.cpp" break; case 126: // expr_binary: expr ">>" expr -#line 598 "parser.ypp" +#line 599 "parser.ypp" { yylhs.value.as < ast::expr > ().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 600 "parser.ypp" +#line 601 "parser.ypp" { yylhs.value.as < ast::expr > ().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 602 "parser.ypp" +#line 603 "parser.ypp" { yylhs.value.as < ast::expr > ().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_binary: expr "*" expr -#line 604 "parser.ypp" +#line 605 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } #line 2792 "parser.cpp" break; case 130: // expr_binary: expr "/" expr -#line 606 "parser.ypp" +#line 607 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } #line 2798 "parser.cpp" break; case 131: // expr_binary: expr "%" expr -#line 608 "parser.ypp" +#line 609 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } #line 2804 "parser.cpp" break; case 132: // expr_primitive: expr_complement -#line 612 "parser.ypp" +#line 613 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_complement::ptr > ()); } #line 2810 "parser.cpp" break; case 133: // expr_primitive: expr_not -#line 613 "parser.ypp" +#line 614 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_not::ptr > ()); } #line 2816 "parser.cpp" break; case 134: // expr_primitive: expr_call -#line 614 "parser.ypp" +#line 615 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_call::ptr > ()); } #line 2822 "parser.cpp" break; case 135: // expr_primitive: expr_method -#line 615 "parser.ypp" +#line 616 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_method::ptr > ()); } #line 2828 "parser.cpp" break; case 136: // expr_primitive: expr_add_array -#line 616 "parser.ypp" +#line 617 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_add_array::ptr > ()); } #line 2834 "parser.cpp" break; case 137: // expr_primitive: expr_isdefined -#line 617 "parser.ypp" +#line 618 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_isdefined::ptr > ()); } #line 2840 "parser.cpp" break; case 138: // expr_primitive: expr_istrue -#line 618 "parser.ypp" +#line 619 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_istrue::ptr > ()); } #line 2846 "parser.cpp" break; case 139: // expr_primitive: expr_reference -#line 619 "parser.ypp" +#line 620 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_reference::ptr > ()); } #line 2852 "parser.cpp" break; case 140: // expr_primitive: expr_array -#line 620 "parser.ypp" +#line 621 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_array::ptr > ()); } #line 2858 "parser.cpp" break; case 141: // expr_primitive: expr_field -#line 621 "parser.ypp" +#line 622 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_field::ptr > ()); } #line 2864 "parser.cpp" break; case 142: // expr_primitive: expr_size -#line 622 "parser.ypp" +#line 623 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_size::ptr > ()); } #line 2870 "parser.cpp" break; case 143: // expr_primitive: expr_paren -#line 623 "parser.ypp" +#line 624 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_paren::ptr > ()); } #line 2876 "parser.cpp" break; case 144: // expr_primitive: expr_thisthread -#line 624 "parser.ypp" +#line 625 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_thisthread::ptr > ()); } #line 2882 "parser.cpp" break; case 145: // expr_primitive: expr_empty_array -#line 625 "parser.ypp" +#line 626 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_empty_array::ptr > ()); } #line 2888 "parser.cpp" break; case 146: // expr_primitive: expr_undefined -#line 626 "parser.ypp" +#line 627 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_undefined::ptr > ()); } #line 2894 "parser.cpp" break; case 147: // expr_primitive: expr_game -#line 627 "parser.ypp" +#line 628 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_game::ptr > ()); } #line 2900 "parser.cpp" break; case 148: // expr_primitive: expr_self -#line 628 "parser.ypp" +#line 629 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_self::ptr > ()); } #line 2906 "parser.cpp" break; case 149: // expr_primitive: expr_anim -#line 629 "parser.ypp" +#line 630 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_anim::ptr > ()); } #line 2912 "parser.cpp" break; case 150: // expr_primitive: expr_level -#line 630 "parser.ypp" +#line 631 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_level::ptr > ()); } #line 2918 "parser.cpp" break; case 151: // expr_primitive: expr_animation -#line 631 "parser.ypp" +#line 632 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_animation::ptr > ()); } #line 2924 "parser.cpp" break; case 152: // expr_primitive: expr_animtree -#line 632 "parser.ypp" +#line 633 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_animtree::ptr > ()); } #line 2930 "parser.cpp" break; case 153: // expr_primitive: expr_identifier -#line 633 "parser.ypp" +#line 634 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ()); } #line 2936 "parser.cpp" break; case 154: // expr_primitive: expr_istring -#line 634 "parser.ypp" +#line 635 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_istring::ptr > ()); } #line 2942 "parser.cpp" break; case 155: // expr_primitive: expr_string -#line 635 "parser.ypp" +#line 636 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_string::ptr > ()); } #line 2948 "parser.cpp" break; case 156: // expr_primitive: expr_vector -#line 636 "parser.ypp" +#line 637 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_vector::ptr > ()); } #line 2954 "parser.cpp" break; case 157: // expr_primitive: expr_float -#line 637 "parser.ypp" +#line 638 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_float::ptr > ()); } #line 2960 "parser.cpp" break; case 158: // expr_primitive: expr_integer -#line 638 "parser.ypp" +#line 639 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_integer::ptr > ()); } #line 2966 "parser.cpp" break; case 159: // expr_primitive: expr_false -#line 639 "parser.ypp" +#line 640 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_false::ptr > ()); } #line 2972 "parser.cpp" break; case 160: // expr_primitive: expr_true -#line 640 "parser.ypp" +#line 641 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_true::ptr > ()); } #line 2978 "parser.cpp" break; case 161: // expr_complement: "~" expr -#line 645 "parser.ypp" +#line 646 "parser.ypp" { yylhs.value.as < ast::expr_complement::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } #line 2984 "parser.cpp" break; case 162: // expr_not: "!" expr -#line 650 "parser.ypp" +#line 651 "parser.ypp" { yylhs.value.as < ast::expr_not::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } #line 2990 "parser.cpp" break; case 163: // expr_call: expr_function -#line 654 "parser.ypp" +#line 655 "parser.ypp" { yylhs.value.as < ast::expr_call::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::call > ())); } #line 2996 "parser.cpp" break; case 164: // expr_call: expr_pointer -#line 655 "parser.ypp" +#line 656 "parser.ypp" { yylhs.value.as < ast::expr_call::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::call > ())); } #line 3002 "parser.cpp" break; case 165: // expr_method: expr_object expr_function -#line 658 "parser.ypp" +#line 659 "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 3008 "parser.cpp" break; case 166: // expr_method: expr_object expr_pointer -#line 659 "parser.ypp" +#line 660 "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 3014 "parser.cpp" break; case 167: // expr_function: expr_identifier "(" expr_arguments ")" -#line 664 "parser.ypp" +#line 665 "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 3020 "parser.cpp" break; case 168: // expr_function: expr_path "::" expr_identifier "(" expr_arguments ")" -#line 666 "parser.ypp" +#line 667 "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 3026 "parser.cpp" break; case 169: // expr_function: "thread" expr_identifier "(" expr_arguments ")" -#line 668 "parser.ypp" +#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::thread); } #line 3032 "parser.cpp" break; case 170: // expr_function: "thread" expr_path "::" expr_identifier "(" expr_arguments ")" -#line 670 "parser.ypp" +#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::thread); } #line 3038 "parser.cpp" break; case 171: // expr_function: "childthread" expr_identifier "(" expr_arguments ")" -#line 672 "parser.ypp" +#line 673 "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 3044 "parser.cpp" break; case 172: // expr_function: "childthread" expr_path "::" expr_identifier "(" expr_arguments ")" -#line 674 "parser.ypp" +#line 675 "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 3050 "parser.cpp" break; case 173: // expr_pointer: "[" "[" expr "]" "]" "(" expr_arguments ")" -#line 679 "parser.ypp" +#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::normal); } #line 3056 "parser.cpp" break; case 174: // expr_pointer: "thread" "[" "[" expr "]" "]" "(" expr_arguments ")" -#line 681 "parser.ypp" +#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::thread); } #line 3062 "parser.cpp" break; case 175: // expr_pointer: "childthread" "[" "[" expr "]" "]" "(" expr_arguments ")" -#line 683 "parser.ypp" +#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::childthread); } #line 3068 "parser.cpp" break; case 176: // expr_pointer: "call" "[" "[" expr "]" "]" "(" expr_arguments ")" -#line 685 "parser.ypp" +#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::builtin); } #line 3074 "parser.cpp" break; case 177: // expr_add_array: "[" expr_arguments_no_empty "]" -#line 690 "parser.ypp" +#line 691 "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 3080 "parser.cpp" break; case 178: // expr_parameters: expr_parameters "," expr_identifier -#line 695 "parser.ypp" +#line 696 "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 3086 "parser.cpp" break; case 179: // expr_parameters: expr_identifier -#line 697 "parser.ypp" +#line 698 "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 3092 "parser.cpp" break; case 180: // expr_parameters: %empty -#line 699 "parser.ypp" +#line 700 "parser.ypp" { yylhs.value.as < ast::expr_parameters::ptr > () = std::make_unique(yylhs.location); } #line 3098 "parser.cpp" break; case 181: // expr_arguments: expr_arguments_no_empty -#line 704 "parser.ypp" +#line 705 "parser.ypp" { yylhs.value.as < ast::expr_arguments::ptr > () = std::move(yystack_[0].value.as < ast::expr_arguments::ptr > ()); } #line 3104 "parser.cpp" break; case 182: // expr_arguments: %empty -#line 706 "parser.ypp" +#line 707 "parser.ypp" { yylhs.value.as < ast::expr_arguments::ptr > () = std::make_unique(yylhs.location); } #line 3110 "parser.cpp" break; case 183: // expr_arguments_no_empty: expr_arguments "," expr -#line 711 "parser.ypp" +#line 712 "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 3116 "parser.cpp" break; case 184: // expr_arguments_no_empty: expr -#line 713 "parser.ypp" +#line 714 "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 3122 "parser.cpp" break; case 185: // expr_isdefined: "isdefined" "(" expr ")" -#line 718 "parser.ypp" +#line 719 "parser.ypp" { yylhs.value.as < ast::expr_isdefined::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } #line 3128 "parser.cpp" break; case 186: // expr_istrue: "istrue" "(" expr ")" -#line 723 "parser.ypp" +#line 724 "parser.ypp" { yylhs.value.as < ast::expr_istrue::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } #line 3134 "parser.cpp" break; case 187: // expr_reference: "::" expr_identifier -#line 728 "parser.ypp" +#line 729 "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 3140 "parser.cpp" break; case 188: // expr_reference: expr_path "::" expr_identifier -#line 730 "parser.ypp" +#line 731 "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 3146 "parser.cpp" break; case 189: // expr_array: expr_object "[" expr "]" -#line 735 "parser.ypp" +#line 736 "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 3152 "parser.cpp" break; - case 190: // expr_field: expr_object "." expr_identifier -#line 740 "parser.ypp" + case 190: // expr_field: expr_object "." expr_identifier_nosize +#line 741 "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 3158 "parser.cpp" break; - case 191: // expr_field: expr_object "field" -#line 742 "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 > ())); } + case 191: // expr_size: expr_object "." "size" +#line 746 "parser.ypp" + { yylhs.value.as < ast::expr_size::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ())); } #line 3164 "parser.cpp" break; - case 192: // expr_size: expr_object ".size" -#line 747 "parser.ypp" - { yylhs.value.as < ast::expr_size::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } + case 192: // expr_paren: "(" expr ")" +#line 751 "parser.ypp" + { yylhs.value.as < ast::expr_paren::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } #line 3170 "parser.cpp" break; - case 193: // expr_paren: "(" expr ")" -#line 752 "parser.ypp" - { yylhs.value.as < ast::expr_paren::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } + case 193: // expr_object: expr_call +#line 755 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_call::ptr > ()); } #line 3176 "parser.cpp" break; - case 194: // expr_object: expr_call + case 194: // expr_object: expr_method #line 756 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_call::ptr > ()); } + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_method::ptr > ()); } #line 3182 "parser.cpp" break; - case 195: // expr_object: expr_method + case 195: // expr_object: expr_array #line 757 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_method::ptr > ()); } + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_array::ptr > ()); } #line 3188 "parser.cpp" break; - case 196: // expr_object: expr_array + case 196: // expr_object: expr_field #line 758 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_array::ptr > ()); } + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_field::ptr > ()); } #line 3194 "parser.cpp" break; - case 197: // expr_object: expr_field + case 197: // expr_object: expr_game #line 759 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_field::ptr > ()); } + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_game::ptr > ()); } #line 3200 "parser.cpp" break; - case 198: // expr_object: expr_game + case 198: // expr_object: expr_self #line 760 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_game::ptr > ()); } + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_self::ptr > ()); } #line 3206 "parser.cpp" break; - case 199: // expr_object: expr_self + case 199: // expr_object: expr_anim #line 761 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_self::ptr > ()); } + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_anim::ptr > ()); } #line 3212 "parser.cpp" break; - case 200: // expr_object: expr_anim + case 200: // expr_object: expr_level #line 762 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_anim::ptr > ()); } + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_level::ptr > ()); } #line 3218 "parser.cpp" break; - case 201: // expr_object: expr_level + case 201: // expr_object: expr_identifier #line 763 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_level::ptr > ()); } + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ()); } #line 3224 "parser.cpp" break; - case 202: // expr_object: expr_identifier -#line 764 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ()); } + case 202: // expr_thisthread: "thisthread" +#line 768 "parser.ypp" + { yylhs.value.as < ast::expr_thisthread::ptr > () = std::make_unique(yylhs.location); } #line 3230 "parser.cpp" break; - case 203: // expr_thisthread: "thisthread" -#line 769 "parser.ypp" - { yylhs.value.as < ast::expr_thisthread::ptr > () = std::make_unique(yylhs.location); } + case 203: // expr_empty_array: "[" "]" +#line 773 "parser.ypp" + { yylhs.value.as < ast::expr_empty_array::ptr > () = std::make_unique(yylhs.location); } #line 3236 "parser.cpp" break; - case 204: // expr_empty_array: "[" "]" -#line 774 "parser.ypp" - { yylhs.value.as < ast::expr_empty_array::ptr > () = std::make_unique(yylhs.location); } + case 204: // expr_undefined: "undefined" +#line 778 "parser.ypp" + { yylhs.value.as < ast::expr_undefined::ptr > () = std::make_unique(yylhs.location); } #line 3242 "parser.cpp" break; - case 205: // expr_undefined: "undefined" -#line 779 "parser.ypp" - { yylhs.value.as < ast::expr_undefined::ptr > () = std::make_unique(yylhs.location); } + case 205: // expr_game: "game" +#line 783 "parser.ypp" + { yylhs.value.as < ast::expr_game::ptr > () = std::make_unique(yylhs.location); } #line 3248 "parser.cpp" break; - case 206: // expr_game: "game" -#line 784 "parser.ypp" - { yylhs.value.as < ast::expr_game::ptr > () = std::make_unique(yylhs.location); } + case 206: // expr_self: "self" +#line 788 "parser.ypp" + { yylhs.value.as < ast::expr_self::ptr > () = std::make_unique(yylhs.location); } #line 3254 "parser.cpp" break; - case 207: // expr_self: "self" -#line 789 "parser.ypp" - { yylhs.value.as < ast::expr_self::ptr > () = std::make_unique(yylhs.location); } + case 207: // expr_anim: "anim" +#line 793 "parser.ypp" + { yylhs.value.as < ast::expr_anim::ptr > () = std::make_unique(yylhs.location); } #line 3260 "parser.cpp" break; - case 208: // expr_anim: "anim" -#line 794 "parser.ypp" - { yylhs.value.as < ast::expr_anim::ptr > () = std::make_unique(yylhs.location); } + case 208: // expr_level: "level" +#line 798 "parser.ypp" + { yylhs.value.as < ast::expr_level::ptr > () = std::make_unique(yylhs.location); } #line 3266 "parser.cpp" break; - case 209: // expr_level: "level" -#line 799 "parser.ypp" - { yylhs.value.as < ast::expr_level::ptr > () = std::make_unique(yylhs.location); } + case 209: // expr_animation: "%" "identifier" +#line 803 "parser.ypp" + { yylhs.value.as < ast::expr_animation::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 3272 "parser.cpp" break; - case 210: // expr_animation: "%" "identifier" -#line 804 "parser.ypp" - { yylhs.value.as < ast::expr_animation::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 210: // expr_animtree: "#animtree" +#line 808 "parser.ypp" + { yylhs.value.as < ast::expr_animtree::ptr > () = std::make_unique(yylhs.location); } #line 3278 "parser.cpp" break; - case 211: // expr_animtree: "#animtree" -#line 809 "parser.ypp" - { yylhs.value.as < ast::expr_animtree::ptr > () = std::make_unique(yylhs.location); } + case 211: // expr_identifier_nosize: "identifier" +#line 813 "parser.ypp" + { yylhs.value.as < ast::expr_identifier::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 3284 "parser.cpp" break; case 212: // expr_identifier: "identifier" -#line 814 "parser.ypp" +#line 818 "parser.ypp" { yylhs.value.as < ast::expr_identifier::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 3290 "parser.cpp" break; - case 213: // expr_path: "path" -#line 819 "parser.ypp" - { yylhs.value.as < ast::expr_path::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 213: // expr_identifier: "size" +#line 820 "parser.ypp" + { yylhs.value.as < ast::expr_identifier::ptr > () = std::make_unique(yylhs.location, "size"); } #line 3296 "parser.cpp" break; - case 214: // expr_path: expr_identifier -#line 821 "parser.ypp" - { yylhs.value.as < ast::expr_path::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < ast::expr_identifier::ptr > ()->value); } + case 214: // expr_path: "identifier" +#line 825 "parser.ypp" + { yylhs.value.as < ast::expr_path::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 3302 "parser.cpp" break; - case 215: // expr_istring: "localized string" -#line 826 "parser.ypp" - { yylhs.value.as < ast::expr_istring::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 215: // expr_path: "path" +#line 827 "parser.ypp" + { yylhs.value.as < ast::expr_path::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 3308 "parser.cpp" break; - case 216: // expr_string: "string literal" -#line 831 "parser.ypp" - { yylhs.value.as < ast::expr_string::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 216: // expr_istring: "localized string" +#line 832 "parser.ypp" + { yylhs.value.as < ast::expr_istring::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 3314 "parser.cpp" break; - case 217: // expr_vector: "(" expr "," expr "," expr ")" -#line 836 "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 > ())); } + case 217: // expr_string: "string literal" +#line 837 "parser.ypp" + { yylhs.value.as < ast::expr_string::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 3320 "parser.cpp" break; - case 218: // expr_float: "-" "float" -#line 841 "parser.ypp" - { yylhs.value.as < ast::expr_float::ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } + case 218: // expr_vector: "(" expr "," expr "," expr ")" +#line 842 "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 3326 "parser.cpp" break; - case 219: // expr_float: "float" -#line 843 "parser.ypp" - { yylhs.value.as < ast::expr_float::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 219: // expr_float: "-" "float" +#line 847 "parser.ypp" + { yylhs.value.as < ast::expr_float::ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } #line 3332 "parser.cpp" break; - case 220: // expr_integer: "-" "integer" -#line 848 "parser.ypp" - { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } + 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 3338 "parser.cpp" break; - case 221: // expr_integer: "integer" -#line 850 "parser.ypp" - { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 221: // expr_integer: "-" "integer" +#line 854 "parser.ypp" + { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } #line 3344 "parser.cpp" break; - case 222: // expr_false: "false" -#line 855 "parser.ypp" - { yylhs.value.as < ast::expr_false::ptr > () = std::make_unique(yylhs.location); } + 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 3350 "parser.cpp" break; - case 223: // expr_true: "true" -#line 860 "parser.ypp" - { yylhs.value.as < ast::expr_true::ptr > () = std::make_unique(yylhs.location); } + case 223: // expr_false: "false" +#line 861 "parser.ypp" + { yylhs.value.as < ast::expr_false::ptr > () = std::make_unique(yylhs.location); } #line 3356 "parser.cpp" break; + case 224: // expr_true: "true" +#line 866 "parser.ypp" + { yylhs.value.as < ast::expr_true::ptr > () = std::make_unique(yylhs.location); } +#line 3362 "parser.cpp" + break; -#line 3360 "parser.cpp" + +#line 3366 "parser.cpp" default: break; @@ -3547,32 +3553,33 @@ namespace xsk { namespace gsc { namespace s4 { "else", "do", "while", "for", "foreach", "in", "switch", "case", "default", "break", "continue", "return", "breakpoint", "prof_begin", "prof_end", "thread", "childthread", "thisthread", "call", "true", - "false", "undefined", ".size", "game", "self", "anim", "level", + "false", "undefined", "size", "game", "self", "anim", "level", "isdefined", "istrue", "(", ")", "{", "}", "[", "]", ",", ".", "::", ":", ";", "?", "++", "--", "<<", ">>", "||", "&&", "==", "!=", "<=", ">=", "<", ">", "!", "~", "=", "+=", "-=", "*=", "/=", "%=", "|=", "&=", "^=", - ">>=", "<<=", "|", "&", "^", "+", "-", "*", "/", "%", "field", "path", + ">>=", "<<=", "|", "&", "^", "+", "-", "*", "/", "%", "path", "identifier", "string literal", "localized string", "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_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_vector", "expr_float", + "SIZEOF", "ADD_ARRAY", "THEN", "TERN", "NEG", "ANIMREF", "PREINC", + "PREDEC", "POSTINC", "POSTDEC", "$accept", "root", "program", "inline", + "include", "declaration", "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_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_nosize", "expr_identifier", + "expr_path", "expr_istring", "expr_string", "expr_vector", "expr_float", "expr_integer", "expr_false", "expr_true", YY_NULLPTR }; return yy_sname[yysymbol]; @@ -3838,539 +3845,517 @@ namespace xsk { namespace gsc { namespace s4 { } - const short parser::yypact_ninf_ = -276; + const short parser::yypact_ninf_ = -279; const short parser::yytable_ninf_ = -215; const short parser::yypact_[] = { - 4, -276, -276, 25, 25, 10, -276, 45, 4, -276, - -276, -276, -276, -276, -276, -28, -276, -276, -26, -11, - -41, -276, -276, -276, -276, -30, 1074, -276, -276, -276, - 13, -18, -276, -276, -38, -34, -276, 24, -276, -276, - -276, -276, -276, -276, -276, 41, 47, 1074, 644, -30, - 1074, 1074, -77, 2, -276, -276, -276, 2141, -276, -276, - -276, -276, -276, 134, 554, -276, -276, -276, -276, -276, - -276, 716, 726, -276, -276, 1034, -276, -276, -276, 1100, - 1285, 1340, 1348, -276, -276, 59, 22, -276, -276, -276, - -276, -276, -276, -276, 48, 53, -30, 69, 68, 66, - 76, 87, 81, 86, 1074, 1074, 1359, 644, -276, 2224, - 85, 91, -276, -276, -276, -276, -276, -276, -276, 1074, - 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, - 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, -276, 1140, - -30, -276, -276, -276, 102, 106, 1074, -30, -276, 812, - -276, -276, 1074, 1074, -30, 1074, 1074, -30, 1074, 1525, - 1559, -276, 1074, 1871, 1074, -276, 2106, 110, 110, 2255, - 2265, 2306, 2306, 67, 67, 67, 67, 2296, 724, 467, - 35, 35, -276, -276, -276, 1911, -276, -30, -16, -276, - 115, 922, 1074, 107, -32, 118, 1271, 119, 122, 124, - 128, -72, 120, 121, 125, 1008, 126, 139, 140, -276, - 152, 29, 29, -276, -276, 866, -276, -276, -276, -276, - -276, -276, -276, -276, -276, -276, -276, -276, -276, -276, - -276, -276, -276, -276, -276, -276, -276, -276, -276, -276, - -276, -276, 149, 150, 155, 160, 161, -276, -276, 1188, - -276, -276, -276, -276, -33, 1951, -9, 144, 1991, -1, - 162, 2031, -276, -276, 2070, 167, 2224, 1074, -276, 115, - -276, 1074, -276, -276, 978, 2176, -276, 172, -276, 1074, - 201, 1074, 7, -30, 1074, 127, 173, 177, -276, -276, - -276, -276, 2211, -276, 1074, 1074, 1074, -276, -276, 532, - 532, -276, -276, -276, -276, -276, -276, -276, 187, 188, - 189, 191, -276, -276, 1074, 1074, 1074, 1074, 1074, 1074, - 1074, 1074, 1074, 1074, 1074, 192, -276, 1074, 193, -276, - 1074, 194, 1074, 196, 2224, 28, -276, -276, -276, 182, - 1593, 200, 1627, 199, -276, -276, -276, 1275, -17, 1661, - -276, -276, -276, 30, 31, 1871, 1074, 1074, 1074, 1074, - 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, - 2224, 202, 34, 203, 37, 204, 1695, 1074, -276, -276, - 1271, 1074, 1271, 1074, 1074, -30, 53, 207, 208, 1729, - 1403, 1447, 1491, 1074, -276, 1074, -276, 1074, -276, 38, - 235, 1763, -276, 2224, 209, 1797, 237, -276, -276, -276, - 211, 212, 1074, 213, 1074, 215, 1074, 55, 56, 64, - -276, 1271, 217, 7, 1271, 1074, -276, -276, 210, -276, - 232, -276, 234, -276, -276, -276, -276, -276, 236, -276, - 1831, 226, 228, 230, 1271, 1271, -276, -276, -276, -276, - -276 + 8, -279, -279, -75, -75, -49, -279, -279, 16, 8, + -279, -279, -279, -279, -279, -279, -36, -279, -279, -57, + -35, -69, -279, -279, -279, -279, -20, 1152, -279, -279, + -279, -27, -8, -279, -279, 21, 23, -279, -7, -279, + -279, -279, -279, -279, -279, -279, 18, 46, 1152, 1022, + -20, 1152, 1152, -21, -46, 31, -279, -279, -279, 2015, + -279, -279, -279, -279, -279, 123, 207, -279, -279, -279, + -279, -279, -279, 361, 497, -279, -279, 594, -279, -279, + -279, 606, 737, 868, 947, -279, -279, 17, 51, -279, + -279, -279, -279, -279, -279, -279, 37, 68, -20, 57, + 53, 76, 94, 85, 97, 103, 1152, 1152, 1313, 1022, + -279, 2098, 80, 109, -279, -279, -279, -279, -279, -279, + -279, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, + 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, + 1217, -13, -279, -279, 115, 110, 1152, -20, -279, 782, + -279, -279, 1152, 1152, -20, 1152, 1152, -20, 1152, 1479, + 1513, -279, 1152, 1148, 1152, -279, 1980, 177, 177, 2129, + 2139, 822, 822, 166, 166, 166, 166, 2170, 601, 2180, + 78, 78, -279, -279, -279, 1213, -279, -279, -279, -20, + 14, -279, 117, 915, 1152, 113, -5, 125, 1303, 126, + 136, 137, 140, -28, 132, 135, 139, 1087, 142, 147, + 155, -279, 152, -10, -10, -279, -279, 836, -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, 148, 151, 154, 161, 162, -279, + -279, 45, -279, -279, -279, -279, 115, 1825, 36, 165, + 1865, 39, 173, 1905, -279, -279, 1944, 157, 2098, 1152, + -279, 117, -279, 1152, -279, -279, 994, 2050, -279, 181, + -279, 1152, 205, 1152, 561, -20, 1152, 133, 178, 179, + -279, -279, -279, -279, 2085, -279, 1152, 1152, 1152, -279, + -279, 1048, 1048, -279, -279, -279, -279, -279, -279, -279, + 186, 190, 195, 203, 159, -279, -279, 1152, 1152, 1152, + 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 210, -279, + 1152, 220, -279, 1152, 222, 1152, 228, 2098, 42, -279, + -279, -279, 224, 1547, 235, 1581, 226, -279, -279, -279, + 675, -15, 1615, -279, -279, -279, 49, 50, 1148, 1152, + 1152, 1152, 1152, 2098, 2098, 2098, 2098, 2098, 2098, 2098, + 2098, 2098, 2098, 2098, 238, 59, 239, 81, 241, 1649, + 1152, -279, -279, 1303, 1152, 1303, 1152, 1152, -20, 68, + 233, 240, 1683, 1357, 1401, 1445, 1152, -279, 1152, -279, + 1152, -279, 82, 261, 1717, -279, 2098, 248, 1751, 269, + -279, -279, -279, 250, 251, 1152, 252, 1152, 253, 1152, + 91, 98, 105, -279, 1303, 254, 561, 1303, 1152, -279, + -279, 264, -279, 266, -279, 267, -279, -279, -279, -279, + -279, 268, -279, 1785, 256, 260, 282, 1303, 1303, -279, + -279, -279, -279, -279 }; const unsigned char parser::yydefact_[] = { - 3, 12, 13, 0, 0, 0, 212, 0, 2, 7, - 8, 9, 14, 15, 16, 0, 213, 214, 0, 0, - 0, 1, 4, 5, 6, 180, 0, 10, 11, 216, - 0, 0, 179, 211, 0, 0, 203, 0, 223, 222, - 205, 206, 207, 208, 209, 0, 0, 0, 182, 0, - 0, 0, 0, 0, 215, 219, 221, 0, 93, 94, - 95, 132, 133, 134, 135, 163, 164, 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, 0, 0, 0, 0, 214, 0, - 0, 214, 0, 0, 0, 0, 0, 182, 204, 184, - 0, 181, 187, 162, 161, 218, 220, 210, 18, 0, + 3, 12, 13, 0, 0, 0, 213, 212, 0, 2, + 7, 8, 9, 14, 15, 16, 0, 215, 214, 0, + 0, 0, 1, 4, 5, 6, 180, 0, 10, 11, + 217, 0, 0, 179, 210, 0, 0, 202, 0, 224, + 223, 204, 205, 206, 207, 208, 0, 0, 0, 182, + 0, 0, 0, 0, 0, 212, 216, 220, 222, 0, + 93, 94, 95, 132, 133, 134, 135, 163, 164, 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, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 182, + 203, 184, 0, 181, 187, 162, 161, 219, 221, 209, + 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 192, 0, - 0, 191, 165, 166, 214, 0, 182, 0, 17, 0, + 0, 0, 165, 166, 0, 0, 182, 0, 17, 0, 19, 178, 0, 182, 0, 0, 182, 0, 0, 0, - 0, 193, 0, 184, 0, 177, 0, 125, 126, 114, + 0, 192, 0, 184, 0, 177, 0, 125, 126, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 127, 128, 129, 130, 131, 0, 190, 0, 0, 181, - 188, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 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, 194, 195, 196, 197, 0, - 198, 199, 200, 201, 202, 0, 0, 0, 0, 0, - 0, 0, 185, 186, 0, 0, 183, 0, 189, 0, - 167, 182, 52, 48, 0, 0, 72, 0, 73, 0, - 0, 0, 58, 0, 0, 0, 0, 0, 85, 86, - 87, 89, 0, 90, 182, 182, 0, 194, 195, 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, 169, 182, 0, 171, - 182, 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, 182, 168, 74, - 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 182, 170, 182, 172, 182, 217, 0, - 75, 0, 77, 96, 0, 0, 0, 82, 91, 92, - 0, 0, 182, 0, 182, 0, 182, 0, 0, 0, - 173, 0, 0, 58, 0, 0, 64, 66, 181, 69, - 181, 71, 181, 174, 175, 176, 76, 78, 0, 80, - 0, 0, 0, 0, 0, 0, 65, 68, 70, 79, - 81 + 127, 128, 129, 130, 131, 0, 191, 211, 190, 0, + 0, 181, 188, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 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, 193, 194, 195, + 196, 0, 197, 198, 199, 200, 201, 0, 0, 0, + 0, 0, 0, 0, 185, 186, 0, 0, 183, 0, + 189, 0, 167, 182, 52, 48, 0, 0, 72, 0, + 73, 0, 0, 0, 58, 0, 0, 0, 0, 0, + 85, 86, 87, 89, 0, 90, 182, 182, 0, 193, + 194, 109, 111, 53, 49, 61, 62, 63, 59, 60, + 0, 0, 0, 0, 0, 110, 112, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 169, + 182, 0, 171, 182, 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, + 182, 168, 74, 0, 0, 0, 97, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 182, 170, 182, 172, + 182, 218, 0, 75, 0, 77, 96, 0, 0, 0, + 82, 91, 92, 0, 0, 182, 0, 182, 0, 182, + 0, 0, 0, 173, 0, 0, 58, 0, 0, 64, + 66, 181, 69, 181, 71, 181, 174, 175, 176, 76, + 78, 0, 80, 0, 0, 0, 0, 0, 0, 65, + 68, 70, 79, 81 }; const short parser::yypgoto_[] = { - -276, -276, -276, 260, 287, 288, -276, -276, -276, -160, - 82, -276, -276, -276, -93, -125, -276, -276, -276, -276, - -276, -276, -276, -276, -276, -276, -276, -276, -276, -276, - -276, -276, -276, -276, -276, -276, -276, -276, -276, -276, - 197, -276, -275, -271, -270, -276, -276, -276, -276, -276, - -73, -45, -69, -61, -276, -276, 113, -47, -276, -276, - -276, -12, 205, -276, -276, 256, -276, -276, -276, 286, - 292, 337, 388, -276, -276, 0, 6, -276, -15, -276, - -276, 109, -276, -276 + -279, -279, -279, 294, 296, 338, -279, -279, -279, -181, + 131, -279, -279, -279, -95, -77, -279, -279, -279, -279, + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + 204, -279, -278, -276, -271, -279, -279, -279, -279, -279, + -31, -6, -73, -63, -279, -279, -100, -48, -279, -279, + -279, 196, 232, -279, -279, 265, -279, -279, -279, 283, + 301, 319, 355, -279, -279, -279, 0, 7, -279, -18, + -279, -279, 150, -279, -279 }; const short parser::yydefgoto_[] = { - 0, 7, 8, 9, 10, 11, 12, 13, 14, 213, - 214, 274, 215, 216, 217, 343, 218, 219, 220, 221, - 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, - 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 109, 404, 242, 243, 244, 58, 59, 60, 61, 62, - 63, 64, 65, 66, 67, 31, 110, 189, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, - 90, 91, 92, 93 + 0, 8, 9, 10, 11, 12, 13, 14, 15, 215, + 216, 276, 217, 218, 219, 346, 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, 407, 244, 245, 246, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 32, 112, 191, 70, 71, + 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, + 82, 83, 84, 85, 86, 188, 87, 88, 89, 90, + 91, 92, 93, 94, 95 }; const short parser::yytable_[] = { - 15, 111, 150, 17, 17, 30, 142, 344, 15, 18, - 19, 345, 346, 384, 143, 1, 2, 3, 4, 5, - 97, 146, 277, 285, 100, 32, 25, 115, 116, -214, - 29, 273, 278, 56, 98, 101, 280, 95, 27, 270, - 99, 102, 96, 385, 164, 21, 326, 34, 35, 112, - 37, 164, 26, 28, 329, 41, 42, 43, 44, 164, - 111, 29, 16, 6, 20, 210, 16, 6, 94, 34, - 35, 6, 37, 211, 212, 144, 245, 41, 42, 43, - 44, 145, 103, 378, 147, 387, 388, 210, 164, 394, - 164, 164, 396, 420, 164, 104, 151, 164, 164, -202, - -202, 105, -202, 117, 246, 6, -202, 16, 6, 149, - 433, 434, 148, 146, 337, 164, 164, -202, 245, 435, - -202, -214, 153, 245, 164, 16, 6, 152, 154, 16, - 6, 135, 136, 137, 155, 120, 121, 247, 297, 297, - 186, 156, 245, 157, 158, 164, 246, 190, 344, 254, - 165, 246, 345, 346, 257, 145, 146, 260, -202, -202, - -202, 133, 134, 135, 136, 137, 298, 298, 187, 271, - 246, 276, 279, 281, -194, -194, 282, -194, 283, 247, - 142, -194, 284, 288, 247, 289, 286, 269, 143, 290, - 293, 254, -194, 294, 295, -194, 254, 145, 327, 247, - 247, 245, 145, 247, 133, 134, 135, 136, 137, 297, - 296, 254, 254, 303, 304, 254, 330, 145, 145, 305, - 400, 145, 402, 57, 306, 307, 333, 339, 341, 246, - 142, 142, 116, -194, -194, -194, 350, 298, 143, 143, - 351, 356, 357, 358, 106, 359, 379, 113, 114, 144, - 377, 371, 373, 375, 381, 145, 393, 395, 397, 188, - 421, 436, 247, 383, 439, 441, 256, 425, 22, 259, - 247, 408, 409, 423, 254, 426, 427, 429, 142, 431, - 145, 437, 254, 348, 449, 450, 143, 442, 145, 443, - 446, 444, 447, 407, 448, 23, 24, 302, 438, 144, - 144, 159, 160, 0, 163, 145, 145, 245, 0, 245, - 287, 0, 0, 0, 0, 0, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, 246, 185, 246, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 144, 245, 255, - 297, 245, 258, 145, 248, 261, 0, 0, 0, 264, - 0, 266, 0, 0, 0, 428, 0, 430, 247, 432, - 247, 245, 245, 0, 0, 0, 246, 0, 298, 246, - 254, 0, 254, 0, 335, 406, 145, 0, 145, 275, - 0, 0, 0, 0, 0, 0, 248, 0, 0, 246, - 246, 248, 292, 0, 0, 249, 0, 353, 354, 247, - 0, 247, 247, 0, 0, 0, 248, 248, 0, 0, - 248, 254, 0, 254, 254, 0, 0, 145, 0, 145, - 145, 0, 247, 247, 0, 250, 0, 0, 0, 0, - 372, 251, 0, 374, 254, 254, 0, 249, 0, 0, - 145, 145, 249, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 334, 0, 0, 299, 300, 0, - 0, 249, 0, 0, 0, 0, 340, 250, 342, 248, - 0, 349, 250, 251, 0, 0, 252, 248, 251, 0, - 399, 0, 0, 355, 0, 0, 0, 250, 250, 0, - 0, 250, 0, 251, 251, 0, 417, 251, 418, 0, - 419, 360, 361, 362, 363, 364, 365, 366, 367, 368, - 369, 370, 0, 0, 0, 0, 0, 0, 252, 376, - 249, 0, 0, 252, 0, 120, 121, 253, 347, 124, - 125, 126, 127, 128, 129, 0, 0, 0, 252, 252, - 0, 0, 252, 389, 390, 391, 392, 0, 0, 131, - 250, 133, 134, 135, 136, 137, 251, 0, 250, 0, - 0, 0, 34, 35, 251, 37, 0, 0, 401, 253, - 403, 405, 0, 0, 253, 248, 0, 248, 0, 0, - 139, 0, 0, 140, -195, -195, 0, -195, 0, 253, - 253, -195, 0, 253, 0, 0, 0, 0, 0, 0, - 0, 252, -195, 0, 0, -195, 0, 0, 0, 252, - 0, 0, 440, 0, 0, 0, 248, 0, 248, 248, - 0, 141, 16, 6, 0, 0, 249, 0, 249, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 248, - 248, 0, 0, -195, -195, -195, 0, 0, 0, 0, - 33, 0, 253, 0, 0, 0, 250, 0, 250, 0, - 253, 0, 251, 0, 251, 0, 0, 249, 0, 347, - 249, 0, 0, 0, 34, 35, 36, 37, 38, 39, - 40, 0, 41, 42, 43, 44, 45, 46, 47, 0, - 249, 249, 107, 108, 0, 0, 49, 250, 0, 250, - 250, 0, 0, 251, 0, 251, 251, 252, 0, 252, - 0, 0, 50, 51, 0, 0, 0, 0, 0, 0, - 250, 250, 0, 0, 0, 0, 251, 251, 0, 52, - 0, 0, 53, 0, 16, 6, 29, 54, 55, 56, - 0, 0, 0, 0, 0, 0, -196, -196, 252, -196, - 252, 252, 0, -196, 0, 0, -197, -197, 253, -197, - 253, 0, 0, -197, -196, 0, 0, -196, 0, 0, - 0, 252, 252, 0, -197, 0, 0, -197, 0, 0, - 0, 0, 120, 121, 0, 0, 124, 125, 126, 127, - 128, 129, 0, 0, 0, 0, 0, 0, 0, 253, - 0, 253, 253, 0, 0, -196, -196, -196, 133, 134, - 135, 136, 137, 191, 0, -197, -197, -197, 0, 0, - 0, 192, 253, 253, 193, 194, 195, 0, 196, 197, - 198, 199, 0, 200, 201, 202, 203, 204, 205, 206, - 207, 208, 34, 35, 0, 37, 0, 0, 0, 0, - 41, 42, 43, 44, 0, 0, 0, 0, 149, 209, - 210, 0, 0, 0, 0, 0, 0, 191, 211, 212, - 0, 0, 0, 0, 0, 192, 0, 0, 193, 194, - 195, 0, 196, 197, 198, 199, 0, 200, 201, 202, - 203, 204, 205, 206, 207, 208, 34, 35, 0, 37, - 0, 0, 16, 6, 41, 42, 43, 44, 0, 0, - 0, 0, 149, 301, 210, 0, 0, 0, 0, 0, - 0, 0, 211, 212, 272, 0, 0, 0, 0, 0, - 0, 192, 0, 0, 193, 194, 195, 0, 196, 197, - 198, 199, 0, 200, 201, 202, 203, 204, 205, 206, - 207, 208, 34, 35, 0, 37, 16, 6, 0, 0, - 41, 42, 43, 44, 0, 0, 0, 0, 149, 0, - 210, 0, 0, 0, 0, 0, 0, 0, 211, 212, - 336, 0, 0, 0, 0, 0, 0, 192, 0, 0, - 193, 194, 195, 0, 196, 197, 198, 199, 0, 200, - 201, 202, 203, 204, 205, 206, 207, 208, 34, 35, - 0, 37, 16, 6, 33, 0, 41, 42, 43, 44, - 0, 0, 0, 0, 149, 0, 210, 0, 0, 0, - 0, 0, 0, 0, 211, 212, 0, 0, 34, 35, - 36, 37, 38, 39, 40, 0, 41, 42, 43, 44, - 45, 46, 47, 0, 0, 0, 48, 0, 0, 0, - 49, 0, 291, 0, 34, 35, 0, 37, 16, 6, - 0, 138, 0, 0, 0, 0, 50, 51, 0, 0, - 33, 0, 139, 0, 0, 140, 0, 0, 0, 0, - 0, 0, 0, 52, 0, 0, 53, 0, 16, 6, - 29, 54, 55, 56, 34, 35, 36, 37, 38, 39, - 40, 0, 41, 42, 43, 44, 45, 46, 47, 0, - 0, 0, 48, 141, 16, 6, 49, 0, 0, 0, - -198, -198, 0, -198, 0, 0, 0, -198, 0, 0, - 0, 0, 50, 51, 0, 0, 33, 0, -198, 0, - 0, -198, 0, 0, 0, 0, 0, 0, 0, 52, - 0, 0, 53, 0, 16, 6, 29, 54, 55, 56, - 34, 35, 36, 37, 38, 39, 40, 0, 41, 42, - 43, 44, 45, 46, 47, 0, 0, 0, 107, -198, - -198, -198, 49, 0, 0, 308, 309, 0, 310, 311, - 0, 0, 0, 0, 0, 0, 0, 0, 50, 51, - 0, 0, 0, 0, 0, 0, 0, 0, 34, 35, - 0, 37, 0, 0, 0, 52, 0, 0, 53, 0, - 16, 6, 29, 54, 55, 56, 139, 0, 0, 140, - 0, 0, 0, 0, 312, 313, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 314, 315, - 316, 317, 318, 319, 320, 321, 322, 323, 324, 0, - 0, 0, 0, 0, 0, 0, 0, 141, 16, 6, - 192, 0, 0, 193, 194, 195, 0, 196, 197, 198, - 199, 0, 200, 201, 202, 203, 204, 205, 206, 207, - 208, 34, 35, 0, 37, 34, 35, 0, 37, 41, - 42, 43, 44, 0, 0, -199, -199, 149, -199, 210, - 0, 0, -199, 139, 0, 0, 140, 211, 212, 0, - 0, 312, 313, -199, 0, 0, -199, 0, 0, 0, - 0, 0, 0, 0, 0, 314, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 324, 0, 0, 0, 0, - 0, 16, 6, 0, 141, 16, 6, 0, 0, 0, - -200, -200, 0, -200, -199, -199, -199, -200, -201, -201, - 0, -201, 0, 0, 0, -201, 0, 0, -200, 0, - 0, -200, 0, 0, 0, 0, -201, 0, 0, -201, - 0, 0, 0, 0, 161, 0, 0, 0, 0, 162, - 0, 0, 0, 0, 119, 0, 0, 120, 121, 122, - 123, 124, 125, 126, 127, 128, 129, 0, 0, -200, - -200, -200, 0, 0, 0, 0, 0, -201, -201, -201, - 130, 131, 132, 133, 134, 135, 136, 137, 411, 0, - 0, 0, 0, 412, 0, 0, 0, 0, 119, 0, - 0, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 130, 131, 132, 133, 134, 135, - 136, 137, 413, 0, 0, 0, 0, 414, 0, 0, - 0, 0, 119, 0, 0, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 130, 131, - 132, 133, 134, 135, 136, 137, 415, 0, 0, 0, - 0, 416, 0, 0, 0, 0, 119, 0, 0, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 0, + 16, 113, 150, 31, 142, 21, 347, 28, 348, 16, + 19, 20, 275, 349, 143, 387, 22, 282, 26, 1, + 2, 3, 4, 5, 17, 18, 33, 6, 96, 29, + 35, 36, 30, 38, 186, 100, 103, 6, 42, 43, + 44, 45, 101, 104, 27, 388, 190, 97, 212, 279, + 114, 105, 98, 258, 119, 6, 261, -201, -201, 280, + -201, 113, 310, 311, -201, 312, 313, 287, 6, 272, + 6, 146, 106, 30, 164, -201, 58, 144, -201, 99, + 7, 102, 117, 118, 145, 35, 36, 187, 38, 17, + 55, 329, 6, -214, 332, 340, 164, 381, 151, 164, + 107, 148, 164, 140, 390, 391, 314, 153, 7, 164, + 164, 315, 316, 147, 397, 152, -201, -201, 247, 164, + 17, 55, 17, 55, 149, 317, 318, 319, 320, 321, + 322, 323, 324, 325, 326, 327, 399, 423, 154, 156, + 164, 164, 164, 248, 17, 55, 436, 192, 347, 256, + 348, 164, 155, 437, 259, 349, 145, 262, 164, 157, + 438, 158, 247, -193, -193, 164, -193, 247, 165, 146, + -193, 273, 189, 338, 137, 138, 139, 278, 142, 281, + 283, -193, 299, 299, -193, 288, 247, 248, 143, 271, + 284, 285, 248, 256, 286, 290, 356, 357, 256, 291, + 145, 296, 403, 292, 405, 145, 295, 300, 300, 297, + 298, 248, 305, 256, 256, 306, 336, 256, 307, 330, + 145, 145, -193, -193, 145, 308, 309, 333, 142, 142, + 375, 59, 344, 377, 122, 123, 342, 118, 143, 143, + 359, 353, 354, 439, 360, 247, 442, -194, -194, 361, + -194, 144, 108, 299, -194, 115, 116, 362, 145, 187, + 135, 136, 137, 138, 139, -194, 452, 453, -194, 374, + 248, 135, 136, 137, 138, 139, 256, 142, 300, 376, + 402, 378, 380, 145, 256, 351, 424, 143, 382, 384, + 386, 145, 396, 398, 410, 400, 420, 411, 421, 428, + 422, 144, 144, 23, 412, 24, -194, -194, 145, 145, + 159, 160, 426, 163, 429, 430, 432, 434, 440, 444, + 449, 445, 446, 447, 450, 166, 167, 168, 169, 170, + 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, + 181, 182, 183, 184, 185, 249, 451, 25, 304, 441, + 144, 0, 247, 289, 247, 0, 257, 145, 0, 260, + 0, 0, 263, 0, 0, 0, 266, 431, 268, 433, + 0, 435, 0, 0, 0, 0, 0, 248, 0, 248, + 0, 250, 0, 256, 0, 256, 0, 0, 409, 249, + 145, 0, 145, 247, 249, 299, 247, 0, 277, 0, + 0, -195, -195, 0, -195, 0, 0, 0, -195, 249, + 249, 294, 0, 249, 251, 0, 247, 247, 248, -195, + 300, 248, -195, 0, 256, 250, 256, 256, 0, 0, + 250, 145, 252, 145, 145, 0, 0, 0, 0, 0, + 0, 248, 248, 0, 0, 250, 250, 256, 256, 250, + 253, 0, 0, 0, 145, 145, 0, 0, 251, 0, + -195, -195, 0, 251, 0, 0, 0, 0, 254, 0, + 0, 0, 249, 337, 0, 0, 252, 0, 301, 302, + 249, 252, 251, 0, 0, 343, 0, 345, 0, 0, + 352, 0, 0, 0, 253, 0, 252, 252, 0, 253, + 252, 0, 358, 0, 255, 0, 0, 0, 250, 0, + 0, 0, 254, 0, 253, 253, 250, 254, 253, 0, + 0, 363, 364, 365, 366, 367, 368, 369, 370, 371, + 372, 373, 254, 254, 0, 0, 254, -196, -196, 379, + -196, 251, 0, 0, -196, 0, 0, 0, 255, 350, + 0, 0, 0, 255, 0, -196, 0, 0, -196, 252, + 0, 0, 0, 392, 393, 394, 395, 252, 255, 255, + 0, 0, 255, 0, 0, 0, 0, 253, 0, 249, + 0, 249, 0, 0, 0, 253, 0, 0, 404, 0, + 406, 408, 0, 0, 0, 254, -196, -196, 0, 0, + 0, 35, 36, 254, 38, 0, 0, 0, 6, 42, + 43, 44, 45, 0, 0, 250, 0, 250, 0, 212, + 249, 0, 249, 249, 0, 0, 0, 213, 214, 0, + 0, 255, 443, 0, 35, 36, 0, 38, 0, 255, + 0, 6, 0, 249, 249, 0, -197, -197, 251, -197, + 251, 0, 140, -197, 0, 141, 250, 0, 250, 250, + 17, 55, 0, 0, -197, 0, 252, -197, 252, 122, + 123, 0, 0, 126, 127, 128, 129, 130, 131, 250, + 250, 0, 0, 0, 253, 0, 253, 0, 0, 251, + 0, 350, 251, 17, 55, 135, 136, 137, 138, 139, + 0, 0, 254, 0, 254, -197, -197, 252, 0, 252, + 252, 0, 251, 251, 0, 35, 36, 0, 38, 0, + 0, 0, 6, 0, 0, 253, 0, 253, 253, 0, + 252, 252, 0, 140, 0, 0, 314, 0, 255, 0, + 255, 315, 316, 254, 0, 254, 254, 0, 253, 253, + 0, 0, 0, 0, 0, 317, 318, 319, 320, 321, + 322, 323, 324, 325, 326, 327, 254, 254, 0, 0, + 0, 0, 0, 0, 17, 55, 0, -198, -198, 255, + -198, 255, 255, 0, -198, 0, 0, 0, 0, 0, + 0, 0, 0, 193, 0, -198, 0, 0, -198, 0, + 0, 194, 255, 255, 195, 196, 197, 0, 198, 199, + 200, 201, 0, 202, 203, 204, 205, 206, 207, 208, + 209, 210, 35, 36, 0, 38, 0, 0, 0, 6, + 42, 43, 44, 45, 0, 0, -198, -198, 149, 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, 35, 36, 0, 38, + 0, 17, 55, 6, 42, 43, 44, 45, 0, 0, + 122, 123, 149, 303, 212, 0, 128, 129, 130, 131, + 0, 0, 213, 214, 0, 0, 0, 0, -199, -199, + 0, -199, 0, 0, 0, -199, 135, 136, 137, 138, + 139, 0, 0, 0, 0, 0, -199, 274, 0, -199, + 0, 0, 0, 0, 194, 17, 55, 195, 196, 197, + 0, 198, 199, 200, 201, 0, 202, 203, 204, 205, + 206, 207, 208, 209, 210, 35, 36, 0, 38, 0, + 0, 0, 6, 42, 43, 44, 45, -199, -199, 0, + 0, 149, 0, 212, 0, 0, 0, 0, 0, 0, + 0, 213, 214, 0, 0, 0, 0, -200, -200, 0, + -200, 0, 0, 0, -200, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, -200, 339, 0, -200, 0, + 0, 0, 0, 194, 17, 55, 195, 196, 197, 0, + 198, 199, 200, 201, 0, 202, 203, 204, 205, 206, + 207, 208, 209, 210, 35, 36, 0, 38, 34, 0, + 0, 6, 42, 43, 44, 45, -200, -200, 0, 0, + 149, 0, 212, 0, 0, 0, 0, 0, 0, 0, + 213, 214, 35, 36, 37, 38, 39, 40, 41, 6, + 42, 43, 44, 45, 46, 47, 48, 0, 0, 0, + 109, 110, 0, 0, 50, 0, 0, 0, 35, 36, + 0, 38, 0, 17, 55, 6, 0, 0, 0, 0, + 51, 52, 0, 34, 0, 0, 140, 0, 0, 314, + 0, 0, 0, 0, 0, 0, 0, 53, 0, 0, + 54, 17, 55, 30, 56, 57, 58, 35, 36, 37, + 38, 39, 40, 41, 6, 42, 43, 44, 45, 46, + 47, 48, 0, 0, 0, 49, 0, 17, 55, 50, + 0, 293, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 51, 52, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 262, 0, 130, 131, 132, 133, 134, 135, 136, 137, - 119, 0, 0, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 263, 0, 130, 131, 132, 133, - 134, 135, 136, 137, 119, 0, 0, 120, 121, 122, - 123, 124, 125, 126, 127, 128, 129, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 380, 0, - 130, 131, 132, 133, 134, 135, 136, 137, 119, 0, - 0, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 382, 0, 130, 131, 132, 133, 134, 135, - 136, 137, 119, 0, 0, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 386, 0, 130, 131, - 132, 133, 134, 135, 136, 137, 119, 0, 0, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 0, + 0, 0, 53, 0, 0, 54, 17, 55, 30, 56, + 57, 58, 35, 36, 37, 38, 39, 40, 41, 6, + 42, 43, 44, 45, 46, 47, 48, 267, 0, 0, + 49, 0, 0, 121, 50, 0, 122, 123, 124, 125, + 126, 127, 128, 129, 130, 131, 0, 0, 0, 0, + 51, 52, 0, 34, 0, 0, 0, 0, 0, 132, + 133, 134, 135, 136, 137, 138, 139, 53, 0, 0, + 54, 17, 55, 30, 56, 57, 58, 35, 36, 37, + 38, 39, 40, 41, 6, 42, 43, 44, 45, 46, + 47, 48, 270, 0, 0, 109, 0, 0, 121, 50, + 0, 122, 123, 124, 125, 126, 127, 128, 129, 130, + 131, 0, 0, 0, 0, 51, 52, 0, 0, 0, + 0, 0, 0, 0, 132, 133, 134, 135, 136, 137, + 138, 139, 53, 0, 0, 54, 17, 55, 30, 56, + 57, 58, 194, 0, 0, 195, 196, 197, 0, 198, + 199, 200, 201, 0, 202, 203, 204, 205, 206, 207, + 208, 209, 210, 35, 36, 0, 38, 0, 0, 0, + 6, 42, 43, 44, 45, 0, 0, 0, 0, 149, + 0, 212, 0, 0, 0, 0, 0, 0, 161, 213, + 214, 0, 0, 162, 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, 17, 55, 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, 0, 0, 132, 133, + 134, 135, 136, 137, 138, 139, 416, 0, 0, 0, + 0, 417, 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, - 398, 0, 130, 131, 132, 133, 134, 135, 136, 137, - 119, 0, 0, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 410, 0, 130, 131, 132, 133, - 134, 135, 136, 137, 119, 0, 0, 120, 121, 122, - 123, 124, 125, 126, 127, 128, 129, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 422, 0, - 130, 131, 132, 133, 134, 135, 136, 137, 119, 0, - 0, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 424, 0, 130, 131, 132, 133, 134, 135, - 136, 137, 119, 0, 0, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 445, 0, 130, 131, - 132, 133, 134, 135, 136, 137, 119, 0, 0, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 0, + 0, 0, 132, 133, 134, 135, 136, 137, 138, 139, + 418, 0, 0, 0, 0, 419, 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, 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, 383, 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, - 0, 0, 130, 131, 132, 133, 134, 135, 136, 137, - 265, 0, 0, 0, 0, 0, 119, 0, 0, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 0, + 389, 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, 401, 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, 413, 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, 425, 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, 427, 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, 130, 131, 132, 133, 134, 135, 136, 137, - 268, 0, 0, 0, 0, 0, 119, 0, 0, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 0, + 448, 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, 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, 334, 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, 335, 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, 0, 130, 131, 132, 133, 134, 135, 136, 137, - 325, 0, 0, 0, 0, 0, 119, 0, 0, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 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, 341, 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, 130, 131, 132, 133, 134, 135, 136, 137, - 328, 0, 0, 0, 0, 0, 119, 0, 0, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 130, 131, 132, 133, 134, 135, 136, 137, - 331, 0, 0, 0, 0, 0, 119, 0, 0, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 130, 131, 132, 133, 134, 135, 136, 137, - 332, 0, 0, 0, 0, 119, 0, 0, 120, 121, - 122, 123, 124, 125, 126, 127, 128, 129, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 130, 131, 132, 133, 134, 135, 136, 137, 267, - 0, 119, 0, 0, 120, 121, 122, 123, 124, 125, - 126, 127, 128, 129, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 130, 131, 132, - 133, 134, 135, 136, 137, 118, 119, 0, 0, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 130, 131, 132, 133, 134, 135, 136, 137, - 338, 119, 0, 0, 120, 121, 122, 123, 124, 125, - 126, 127, 128, 129, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 130, 131, 132, - 133, 134, 135, 136, 137, 352, 119, 0, 0, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 119, - 0, 0, 120, 121, 122, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, - 0, 0, 0, 0, 0, 130, 131, 132, 133, 134, - 135, 136, 137, 120, 121, 0, 123, 124, 125, 126, - 127, 128, 129, 120, 121, 0, 0, 124, 125, 126, - 127, 128, 129, 0, 0, 0, 130, 131, 132, 133, - 134, 135, 136, 137, 0, 0, 130, 131, 132, 133, - 134, 135, 136, 137, 120, 121, 0, 0, 124, 125, - 126, 127, 128, 129, 120, 121, 0, 0, 0, 0, - 126, 127, 128, 129, 0, 0, 0, 0, 131, 132, - 133, 134, 135, 136, 137, 0, 0, 0, 0, 0, - 133, 134, 135, 136, 137 + 0, 132, 133, 134, 135, 136, 137, 138, 139, 355, + 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, 95, 3, 4, 20, 75, 282, 8, 3, - 4, 282, 282, 30, 75, 11, 12, 13, 14, 15, - 58, 54, 54, 95, 58, 25, 54, 104, 105, 62, - 102, 191, 64, 105, 34, 35, 196, 55, 64, 55, - 34, 35, 60, 60, 60, 0, 55, 40, 41, 49, - 43, 60, 80, 64, 55, 48, 49, 50, 51, 60, - 107, 102, 100, 101, 54, 58, 100, 101, 55, 40, - 41, 101, 43, 66, 67, 75, 149, 48, 49, 50, - 51, 75, 58, 55, 62, 55, 55, 58, 60, 55, - 60, 60, 55, 55, 60, 54, 96, 60, 60, 40, - 41, 54, 43, 101, 149, 101, 47, 100, 101, 56, - 55, 55, 64, 54, 274, 60, 60, 58, 191, 55, - 61, 62, 54, 196, 60, 100, 101, 58, 62, 100, - 101, 96, 97, 98, 58, 68, 69, 149, 211, 212, - 140, 54, 215, 62, 58, 60, 191, 147, 423, 149, - 59, 196, 423, 423, 154, 149, 54, 157, 99, 100, - 101, 94, 95, 96, 97, 98, 211, 212, 62, 54, - 215, 64, 54, 54, 40, 41, 54, 43, 54, 191, - 249, 47, 54, 63, 196, 64, 201, 187, 249, 64, - 64, 191, 58, 54, 54, 61, 196, 191, 54, 211, - 212, 274, 196, 215, 94, 95, 96, 97, 98, 282, - 58, 211, 212, 64, 64, 215, 54, 211, 212, 64, - 380, 215, 382, 26, 64, 64, 59, 55, 27, 274, - 299, 300, 105, 99, 100, 101, 63, 282, 299, 300, - 63, 54, 54, 54, 47, 54, 64, 50, 51, 249, - 54, 59, 59, 59, 54, 249, 54, 54, 54, 146, - 25, 421, 274, 64, 424, 55, 153, 30, 8, 156, - 282, 64, 64, 64, 274, 64, 64, 64, 347, 64, - 274, 64, 282, 283, 444, 445, 347, 55, 282, 55, - 64, 55, 64, 386, 64, 8, 8, 215, 423, 299, - 300, 104, 105, -1, 107, 299, 300, 380, -1, 382, - 201, -1, -1, -1, -1, -1, 119, 120, 121, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 135, 136, 137, 380, 139, 382, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 347, 421, 152, - 423, 424, 155, 347, 149, 158, -1, -1, -1, 162, - -1, 164, -1, -1, -1, 412, -1, 414, 380, 416, - 382, 444, 445, -1, -1, -1, 421, -1, 423, 424, - 380, -1, 382, -1, 271, 385, 380, -1, 382, 192, - -1, -1, -1, -1, -1, -1, 191, -1, -1, 444, - 445, 196, 205, -1, -1, 149, -1, 294, 295, 421, - -1, 423, 424, -1, -1, -1, 211, 212, -1, -1, - 215, 421, -1, 423, 424, -1, -1, 421, -1, 423, - 424, -1, 444, 445, -1, 149, -1, -1, -1, -1, - 327, 149, -1, 330, 444, 445, -1, 191, -1, -1, - 444, 445, 196, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 267, -1, -1, 211, 212, -1, - -1, 215, -1, -1, -1, -1, 279, 191, 281, 274, - -1, 284, 196, 191, -1, -1, 149, 282, 196, -1, - 377, -1, -1, 296, -1, -1, -1, 211, 212, -1, - -1, 215, -1, 211, 212, -1, 393, 215, 395, -1, - 397, 314, 315, 316, 317, 318, 319, 320, 321, 322, - 323, 324, -1, -1, -1, -1, -1, -1, 191, 332, - 274, -1, -1, 196, -1, 68, 69, 149, 282, 72, - 73, 74, 75, 76, 77, -1, -1, -1, 211, 212, - -1, -1, 215, 356, 357, 358, 359, -1, -1, 92, - 274, 94, 95, 96, 97, 98, 274, -1, 282, -1, - -1, -1, 40, 41, 282, 43, -1, -1, 381, 191, - 383, 384, -1, -1, 196, 380, -1, 382, -1, -1, - 58, -1, -1, 61, 40, 41, -1, 43, -1, 211, - 212, 47, -1, 215, -1, -1, -1, -1, -1, -1, - -1, 274, 58, -1, -1, 61, -1, -1, -1, 282, - -1, -1, 425, -1, -1, -1, 421, -1, 423, 424, - -1, 99, 100, 101, -1, -1, 380, -1, 382, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 444, - 445, -1, -1, 99, 100, 101, -1, -1, -1, -1, - 16, -1, 274, -1, -1, -1, 380, -1, 382, -1, - 282, -1, 380, -1, 382, -1, -1, 421, -1, 423, - 424, -1, -1, -1, 40, 41, 42, 43, 44, 45, - 46, -1, 48, 49, 50, 51, 52, 53, 54, -1, - 444, 445, 58, 59, -1, -1, 62, 421, -1, 423, - 424, -1, -1, 421, -1, 423, 424, 380, -1, 382, - -1, -1, 78, 79, -1, -1, -1, -1, -1, -1, - 444, 445, -1, -1, -1, -1, 444, 445, -1, 95, - -1, -1, 98, -1, 100, 101, 102, 103, 104, 105, - -1, -1, -1, -1, -1, -1, 40, 41, 421, 43, - 423, 424, -1, 47, -1, -1, 40, 41, 380, 43, - 382, -1, -1, 47, 58, -1, -1, 61, -1, -1, - -1, 444, 445, -1, 58, -1, -1, 61, -1, -1, - -1, -1, 68, 69, -1, -1, 72, 73, 74, 75, - 76, 77, -1, -1, -1, -1, -1, -1, -1, 421, - -1, 423, 424, -1, -1, 99, 100, 101, 94, 95, - 96, 97, 98, 11, -1, 99, 100, 101, -1, -1, - -1, 19, 444, 445, 22, 23, 24, -1, 26, 27, + 0, 49, 97, 21, 77, 54, 284, 64, 284, 9, + 3, 4, 193, 284, 77, 30, 0, 198, 54, 11, + 12, 13, 14, 15, 99, 100, 26, 47, 55, 64, + 40, 41, 101, 43, 47, 35, 36, 47, 48, 49, + 50, 51, 35, 36, 80, 60, 146, 55, 58, 54, + 50, 58, 60, 153, 100, 47, 156, 40, 41, 64, + 43, 109, 17, 18, 47, 20, 21, 95, 47, 55, + 47, 54, 54, 101, 60, 58, 104, 77, 61, 58, + 100, 58, 103, 104, 77, 40, 41, 100, 43, 99, + 100, 55, 47, 62, 55, 276, 60, 55, 98, 60, + 54, 64, 60, 58, 55, 55, 61, 54, 100, 60, + 60, 66, 67, 62, 55, 58, 99, 100, 149, 60, + 99, 100, 99, 100, 56, 80, 81, 82, 83, 84, + 85, 86, 87, 88, 89, 90, 55, 55, 62, 54, + 60, 60, 60, 149, 99, 100, 55, 147, 426, 149, + 426, 60, 58, 55, 154, 426, 149, 157, 60, 62, + 55, 58, 193, 40, 41, 60, 43, 198, 59, 54, + 47, 54, 62, 273, 96, 97, 98, 64, 251, 54, + 54, 58, 213, 214, 61, 203, 217, 193, 251, 189, + 54, 54, 198, 193, 54, 63, 296, 297, 198, 64, + 193, 54, 383, 64, 385, 198, 64, 213, 214, 54, + 58, 217, 64, 213, 214, 64, 59, 217, 64, 54, + 213, 214, 99, 100, 217, 64, 64, 54, 301, 302, + 330, 27, 27, 333, 68, 69, 55, 104, 301, 302, + 54, 63, 63, 424, 54, 276, 427, 40, 41, 54, + 43, 251, 48, 284, 47, 51, 52, 54, 251, 100, + 94, 95, 96, 97, 98, 58, 447, 448, 61, 59, + 276, 94, 95, 96, 97, 98, 276, 350, 284, 59, + 380, 59, 54, 276, 284, 285, 25, 350, 64, 54, + 64, 284, 54, 54, 389, 54, 396, 64, 398, 30, + 400, 301, 302, 9, 64, 9, 99, 100, 301, 302, + 106, 107, 64, 109, 64, 64, 64, 64, 64, 55, + 64, 55, 55, 55, 64, 121, 122, 123, 124, 125, + 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, + 136, 137, 138, 139, 140, 149, 64, 9, 217, 426, + 350, -1, 383, 203, 385, -1, 152, 350, -1, 155, + -1, -1, 158, -1, -1, -1, 162, 415, 164, 417, + -1, 419, -1, -1, -1, -1, -1, 383, -1, 385, + -1, 149, -1, 383, -1, 385, -1, -1, 388, 193, + 383, -1, 385, 424, 198, 426, 427, -1, 194, -1, + -1, 40, 41, -1, 43, -1, -1, -1, 47, 213, + 214, 207, -1, 217, 149, -1, 447, 448, 424, 58, + 426, 427, 61, -1, 424, 193, 426, 427, -1, -1, + 198, 424, 149, 426, 427, -1, -1, -1, -1, -1, + -1, 447, 448, -1, -1, 213, 214, 447, 448, 217, + 149, -1, -1, -1, 447, 448, -1, -1, 193, -1, + 99, 100, -1, 198, -1, -1, -1, -1, 149, -1, + -1, -1, 276, 269, -1, -1, 193, -1, 213, 214, + 284, 198, 217, -1, -1, 281, -1, 283, -1, -1, + 286, -1, -1, -1, 193, -1, 213, 214, -1, 198, + 217, -1, 298, -1, 149, -1, -1, -1, 276, -1, + -1, -1, 193, -1, 213, 214, 284, 198, 217, -1, + -1, 317, 318, 319, 320, 321, 322, 323, 324, 325, + 326, 327, 213, 214, -1, -1, 217, 40, 41, 335, + 43, 276, -1, -1, 47, -1, -1, -1, 193, 284, + -1, -1, -1, 198, -1, 58, -1, -1, 61, 276, + -1, -1, -1, 359, 360, 361, 362, 284, 213, 214, + -1, -1, 217, -1, -1, -1, -1, 276, -1, 383, + -1, 385, -1, -1, -1, 284, -1, -1, 384, -1, + 386, 387, -1, -1, -1, 276, 99, 100, -1, -1, + -1, 40, 41, 284, 43, -1, -1, -1, 47, 48, + 49, 50, 51, -1, -1, 383, -1, 385, -1, 58, + 424, -1, 426, 427, -1, -1, -1, 66, 67, -1, + -1, 276, 428, -1, 40, 41, -1, 43, -1, 284, + -1, 47, -1, 447, 448, -1, 40, 41, 383, 43, + 385, -1, 58, 47, -1, 61, 424, -1, 426, 427, + 99, 100, -1, -1, 58, -1, 383, 61, 385, 68, + 69, -1, -1, 72, 73, 74, 75, 76, 77, 447, + 448, -1, -1, -1, 383, -1, 385, -1, -1, 424, + -1, 426, 427, 99, 100, 94, 95, 96, 97, 98, + -1, -1, 383, -1, 385, 99, 100, 424, -1, 426, + 427, -1, 447, 448, -1, 40, 41, -1, 43, -1, + -1, -1, 47, -1, -1, 424, -1, 426, 427, -1, + 447, 448, -1, 58, -1, -1, 61, -1, 383, -1, + 385, 66, 67, 424, -1, 426, 427, -1, 447, 448, + -1, -1, -1, -1, -1, 80, 81, 82, 83, 84, + 85, 86, 87, 88, 89, 90, 447, 448, -1, -1, + -1, -1, -1, -1, 99, 100, -1, 40, 41, 424, + 43, 426, 427, -1, 47, -1, -1, -1, -1, -1, + -1, -1, -1, 11, -1, 58, -1, -1, 61, -1, + -1, 19, 447, 448, 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, + 38, 39, 40, 41, -1, 43, -1, -1, -1, 47, + 48, 49, 50, 51, -1, -1, 99, 100, 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, - -1, -1, 100, 101, 48, 49, 50, 51, -1, -1, - -1, -1, 56, 57, 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, -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, 16, -1, 48, 49, 50, 51, - -1, -1, -1, -1, 56, -1, 58, -1, -1, -1, - -1, -1, -1, -1, 66, 67, -1, -1, 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, 40, 41, -1, 43, 100, 101, - -1, 47, -1, -1, -1, -1, 78, 79, -1, -1, - 16, -1, 58, -1, -1, 61, -1, -1, -1, -1, - -1, -1, -1, 95, -1, -1, 98, -1, 100, 101, - 102, 103, 104, 105, 40, 41, 42, 43, 44, 45, - 46, -1, 48, 49, 50, 51, 52, 53, 54, -1, - -1, -1, 58, 99, 100, 101, 62, -1, -1, -1, - 40, 41, -1, 43, -1, -1, -1, 47, -1, -1, - -1, -1, 78, 79, -1, -1, 16, -1, 58, -1, - -1, 61, -1, -1, -1, -1, -1, -1, -1, 95, - -1, -1, 98, -1, 100, 101, 102, 103, 104, 105, - 40, 41, 42, 43, 44, 45, 46, -1, 48, 49, - 50, 51, 52, 53, 54, -1, -1, -1, 58, 99, - 100, 101, 62, -1, -1, 17, 18, -1, 20, 21, - -1, -1, -1, -1, -1, -1, -1, -1, 78, 79, - -1, -1, -1, -1, -1, -1, -1, -1, 40, 41, - -1, 43, -1, -1, -1, 95, -1, -1, 98, -1, - 100, 101, 102, 103, 104, 105, 58, -1, -1, 61, - -1, -1, -1, -1, 66, 67, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, -1, - -1, -1, -1, -1, -1, -1, -1, 99, 100, 101, - 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, 40, 41, 56, 43, 58, - -1, -1, 47, 58, -1, -1, 61, 66, 67, -1, - -1, 66, 67, 58, -1, -1, 61, -1, -1, -1, - -1, -1, -1, -1, -1, 80, 81, 82, 83, 84, - 85, 86, 87, 88, 89, 90, -1, -1, -1, -1, - -1, 100, 101, -1, 99, 100, 101, -1, -1, -1, - 40, 41, -1, 43, 99, 100, 101, 47, 40, 41, - -1, 43, -1, -1, -1, 47, -1, -1, 58, -1, - -1, 61, -1, -1, -1, -1, 58, -1, -1, 61, - -1, -1, -1, -1, 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, 99, - 100, 101, -1, -1, -1, -1, -1, 99, 100, 101, - 91, 92, 93, 94, 95, 96, 97, 98, 55, -1, - -1, -1, -1, 60, -1, -1, -1, -1, 65, -1, + -1, 99, 100, 47, 48, 49, 50, 51, -1, -1, + 68, 69, 56, 57, 58, -1, 74, 75, 76, 77, + -1, -1, 66, 67, -1, -1, -1, -1, 40, 41, + -1, 43, -1, -1, -1, 47, 94, 95, 96, 97, + 98, -1, -1, -1, -1, -1, 58, 12, -1, 61, + -1, -1, -1, -1, 19, 99, 100, 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, 47, 48, 49, 50, 51, 99, 100, -1, + -1, 56, -1, 58, -1, -1, -1, -1, -1, -1, + -1, 66, 67, -1, -1, -1, -1, 40, 41, -1, + 43, -1, -1, -1, 47, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 58, 12, -1, 61, -1, + -1, -1, -1, 19, 99, 100, 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, 47, 48, 49, 50, 51, 99, 100, -1, -1, + 56, -1, 58, -1, -1, -1, -1, -1, -1, -1, + 66, 67, 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, -1, -1, -1, + 58, 59, -1, -1, 62, -1, -1, -1, 40, 41, + -1, 43, -1, 99, 100, 47, -1, -1, -1, -1, + 78, 79, -1, 16, -1, -1, 58, -1, -1, 61, + -1, -1, -1, -1, -1, -1, -1, 95, -1, -1, + 98, 99, 100, 101, 102, 103, 104, 40, 41, 42, + 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, + 53, 54, -1, -1, -1, 58, -1, 99, 100, 62, + -1, 64, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 78, 79, -1, 16, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 95, -1, -1, 98, 99, 100, 101, 102, + 103, 104, 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 59, -1, -1, + 58, -1, -1, 65, 62, -1, 68, 69, 70, 71, + 72, 73, 74, 75, 76, 77, -1, -1, -1, -1, + 78, 79, -1, 16, -1, -1, -1, -1, -1, 91, + 92, 93, 94, 95, 96, 97, 98, 95, -1, -1, + 98, 99, 100, 101, 102, 103, 104, 40, 41, 42, + 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 59, -1, -1, 58, -1, -1, 65, 62, + -1, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 77, -1, -1, -1, -1, 78, 79, -1, -1, -1, + -1, -1, -1, -1, 91, 92, 93, 94, 95, 96, + 97, 98, 95, -1, -1, 98, 99, 100, 101, 102, + 103, 104, 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, + 47, 48, 49, 50, 51, -1, -1, -1, -1, 56, + -1, 58, -1, -1, -1, -1, -1, -1, 55, 66, + 67, -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, + -1, -1, 99, 100, 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, @@ -4379,7 +4364,8 @@ namespace xsk { namespace gsc { namespace s4 { -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, + -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, @@ -4413,106 +4399,101 @@ namespace xsk { namespace gsc { namespace s4 { 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, + 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, 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, 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, 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, -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, -1, -1, - 74, 75, 76, 77, -1, -1, -1, -1, 92, 93, - 94, 95, 96, 97, 98, -1, -1, -1, -1, -1, - 94, 95, 96, 97, 98 + -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, 116, 117, 118, - 119, 120, 121, 122, 123, 190, 100, 190, 191, 191, - 54, 0, 118, 119, 120, 54, 80, 64, 64, 102, - 193, 170, 190, 16, 40, 41, 42, 43, 44, 45, - 46, 48, 49, 50, 51, 52, 53, 54, 58, 62, - 78, 79, 95, 98, 103, 104, 105, 155, 160, 161, - 162, 163, 164, 165, 166, 167, 168, 169, 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, 190, 191, - 58, 190, 191, 58, 54, 54, 155, 58, 59, 155, - 171, 172, 190, 155, 155, 104, 105, 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, 167, 168, 190, 191, 54, 62, 64, 56, - 129, 190, 58, 54, 62, 58, 54, 62, 58, 155, + 0, 11, 12, 13, 14, 15, 47, 100, 116, 117, + 118, 119, 120, 121, 122, 123, 191, 99, 100, 192, + 192, 54, 0, 118, 119, 120, 54, 80, 64, 64, + 101, 194, 170, 191, 16, 40, 41, 42, 43, 44, + 45, 46, 48, 49, 50, 51, 52, 53, 54, 58, + 62, 78, 79, 95, 98, 100, 102, 103, 104, 155, + 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, + 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, + 183, 184, 185, 186, 187, 188, 189, 191, 192, 193, + 194, 195, 196, 197, 198, 199, 55, 55, 60, 58, + 191, 192, 58, 191, 192, 58, 54, 54, 155, 58, + 59, 155, 171, 172, 191, 155, 155, 103, 104, 100, + 64, 65, 68, 69, 70, 71, 72, 73, 74, 75, + 76, 77, 91, 92, 93, 94, 95, 96, 97, 98, + 58, 61, 167, 168, 191, 192, 54, 62, 64, 56, + 129, 191, 58, 54, 62, 58, 54, 62, 58, 155, 155, 55, 60, 155, 60, 59, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, - 155, 155, 155, 155, 155, 155, 190, 62, 171, 172, - 190, 11, 19, 22, 23, 24, 26, 27, 28, 29, - 31, 32, 33, 34, 35, 36, 37, 38, 39, 57, - 58, 66, 67, 124, 125, 127, 128, 129, 131, 132, - 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, - 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, 157, 158, 159, 165, 166, 176, 177, 180, - 184, 185, 186, 187, 190, 155, 171, 190, 155, 171, - 190, 155, 55, 55, 155, 59, 155, 63, 59, 190, - 55, 54, 12, 124, 126, 155, 64, 54, 64, 54, - 124, 54, 54, 54, 54, 95, 193, 196, 63, 64, - 64, 64, 155, 64, 54, 54, 58, 165, 166, 180, - 180, 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, 155, 171, 12, 124, 64, 55, - 155, 27, 155, 130, 157, 158, 159, 180, 190, 155, - 63, 63, 64, 171, 171, 155, 54, 54, 54, 54, - 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, - 155, 59, 171, 59, 171, 59, 155, 54, 55, 64, - 55, 54, 55, 64, 30, 60, 55, 55, 55, 155, - 155, 155, 155, 54, 55, 54, 55, 54, 55, 171, - 124, 155, 124, 155, 156, 155, 190, 129, 64, 64, - 55, 55, 60, 55, 60, 55, 60, 171, 171, 171, - 55, 25, 55, 64, 55, 30, 64, 64, 172, 64, - 172, 64, 172, 55, 55, 55, 124, 64, 130, 124, - 155, 55, 55, 55, 55, 55, 64, 64, 64, 124, - 124 + 155, 155, 155, 155, 155, 155, 47, 100, 190, 62, + 171, 172, 191, 11, 19, 22, 23, 24, 26, 27, + 28, 29, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 57, 58, 66, 67, 124, 125, 127, 128, 129, + 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, + 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, + 151, 152, 153, 154, 157, 158, 159, 165, 166, 176, + 177, 180, 184, 185, 186, 187, 191, 155, 171, 191, + 155, 171, 191, 155, 55, 55, 155, 59, 155, 63, + 59, 191, 55, 54, 12, 124, 126, 155, 64, 54, + 64, 54, 124, 54, 54, 54, 54, 95, 194, 197, + 63, 64, 64, 64, 155, 64, 54, 54, 58, 165, + 166, 180, 180, 57, 125, 64, 64, 64, 64, 64, + 17, 18, 20, 21, 61, 66, 67, 80, 81, 82, + 83, 84, 85, 86, 87, 88, 89, 90, 59, 55, + 54, 59, 55, 54, 59, 60, 59, 155, 171, 12, + 124, 64, 55, 155, 27, 155, 130, 157, 158, 159, + 180, 191, 155, 63, 63, 64, 171, 171, 155, 54, + 54, 54, 54, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 59, 171, 59, 171, 59, 155, + 54, 55, 64, 55, 54, 55, 64, 30, 60, 55, + 55, 55, 155, 155, 155, 155, 54, 55, 54, 55, + 54, 55, 171, 124, 155, 124, 155, 156, 155, 191, + 129, 64, 64, 55, 55, 60, 55, 60, 55, 60, + 171, 171, 171, 55, 25, 55, 64, 55, 30, 64, + 64, 172, 64, 172, 64, 172, 55, 55, 55, 124, + 64, 130, 124, 155, 55, 55, 55, 55, 55, 64, + 64, 64, 124, 124 }; const unsigned char @@ -4537,10 +4518,10 @@ namespace xsk { namespace gsc { namespace s4 { 162, 163, 164, 165, 165, 166, 166, 167, 167, 167, 167, 167, 167, 168, 168, 168, 168, 169, 170, 170, 170, 171, 171, 172, 172, 173, 174, 175, 175, 176, - 177, 177, 178, 179, 180, 180, 180, 180, 180, 180, - 180, 180, 180, 181, 182, 183, 184, 185, 186, 187, - 188, 189, 190, 191, 191, 192, 193, 194, 195, 195, - 196, 196, 197, 198 + 177, 178, 179, 180, 180, 180, 180, 180, 180, 180, + 180, 180, 181, 182, 183, 184, 185, 186, 187, 188, + 189, 190, 191, 191, 192, 192, 193, 194, 195, 196, + 196, 197, 197, 198, 199 }; const signed char @@ -4565,10 +4546,10 @@ namespace xsk { namespace gsc { namespace s4 { 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, 7, 2, 1, - 2, 1, 1, 1 + 3, 3, 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, 1, 7, 2, + 1, 2, 1, 1, 1 }; @@ -4578,29 +4559,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, 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, - 640, 644, 649, 654, 655, 658, 659, 663, 665, 667, - 669, 671, 673, 678, 680, 682, 684, 689, 694, 696, - 699, 703, 706, 710, 712, 717, 722, 727, 729, 734, - 739, 741, 746, 751, 756, 757, 758, 759, 760, 761, - 762, 763, 764, 768, 773, 778, 783, 788, 793, 798, - 803, 808, 813, 818, 820, 825, 830, 835, 840, 842, - 847, 849, 854, 859 + 0, 259, 259, 260, 264, 266, 268, 270, 272, 274, + 279, 283, 288, 289, 290, 291, 292, 296, 301, 306, + 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, 346, 351, + 353, 358, 359, 363, 364, 368, 370, 372, 375, 379, + 381, 386, 388, 390, 395, 400, 402, 407, 412, 414, + 419, 421, 426, 431, 433, 438, 443, 448, 453, 458, + 463, 465, 470, 475, 477, 482, 487, 492, 497, 499, + 504, 509, 514, 519, 520, 521, 525, 526, 530, 532, + 534, 536, 538, 540, 542, 544, 546, 548, 550, 555, + 557, 562, 564, 569, 574, 576, 578, 580, 582, 584, + 586, 588, 590, 592, 594, 596, 598, 600, 602, 604, + 606, 608, 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, 640, + 641, 645, 650, 655, 656, 659, 660, 664, 666, 668, + 670, 672, 674, 679, 681, 683, 685, 690, 695, 697, + 700, 704, 707, 711, 713, 718, 723, 728, 730, 735, + 740, 745, 750, 755, 756, 757, 758, 759, 760, 761, + 762, 763, 767, 772, 777, 782, 787, 792, 797, 802, + 807, 812, 817, 819, 824, 826, 831, 836, 841, 846, + 848, 853, 855, 860, 865 }; void @@ -4633,9 +4614,9 @@ namespace xsk { namespace gsc { namespace s4 { #line 13 "parser.ypp" } } } // xsk::gsc::s4 -#line 4637 "parser.cpp" +#line 4618 "parser.cpp" -#line 863 "parser.ypp" +#line 869 "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 f232b2ec..95bd929a 100644 --- a/src/s4/xsk/parser.hpp +++ b/src/s4/xsk/parser.hpp @@ -474,6 +474,7 @@ namespace xsk { namespace gsc { namespace s4 { // expr_game char dummy19[sizeof (ast::expr_game::ptr)]; + // expr_identifier_nosize // expr_identifier char dummy20[sizeof (ast::expr_identifier::ptr)]; @@ -624,7 +625,6 @@ namespace xsk { namespace gsc { namespace s4 { // stmt_while char dummy68[sizeof (ast::stmt_while::ptr)]; - // "field" // "path" // "identifier" // "string literal" @@ -727,7 +727,7 @@ namespace xsk { namespace gsc { namespace s4 { TRUE = 44, // "true" FALSE = 45, // "false" UNDEFINED = 46, // "undefined" - SIZE = 47, // ".size" + SIZE = 47, // "size" GAME = 48, // "game" SELF = 49, // "self" ANIM = 50, // "anim" @@ -779,13 +779,13 @@ namespace xsk { namespace gsc { namespace s4 { MUL = 96, // "*" DIV = 97, // "/" MOD = 98, // "%" - FIELD = 99, // "field" - PATH = 100, // "path" - IDENTIFIER = 101, // "identifier" - STRING = 102, // "string literal" - ISTRING = 103, // "localized string" - FLOAT = 104, // "float" - INTEGER = 105, // "integer" + PATH = 99, // "path" + IDENTIFIER = 100, // "identifier" + STRING = 101, // "string literal" + ISTRING = 102, // "localized string" + FLOAT = 103, // "float" + INTEGER = 104, // "integer" + SIZEOF = 105, // SIZEOF ADD_ARRAY = 106, // ADD_ARRAY THEN = 107, // THEN TERN = 108, // TERN @@ -860,7 +860,7 @@ namespace xsk { namespace gsc { namespace s4 { S_TRUE = 44, // "true" S_FALSE = 45, // "false" S_UNDEFINED = 46, // "undefined" - S_SIZE = 47, // ".size" + S_SIZE = 47, // "size" S_GAME = 48, // "game" S_SELF = 49, // "self" S_ANIM = 50, // "anim" @@ -912,13 +912,13 @@ namespace xsk { namespace gsc { namespace s4 { S_MUL = 96, // "*" S_DIV = 97, // "/" S_MOD = 98, // "%" - S_FIELD = 99, // "field" - S_PATH = 100, // "path" - S_IDENTIFIER = 101, // "identifier" - S_STRING = 102, // "string literal" - S_ISTRING = 103, // "localized string" - S_FLOAT = 104, // "float" - S_INTEGER = 105, // "integer" + S_PATH = 99, // "path" + S_IDENTIFIER = 100, // "identifier" + S_STRING = 101, // "string literal" + S_ISTRING = 102, // "localized string" + S_FLOAT = 103, // "float" + S_INTEGER = 104, // "integer" + S_SIZEOF = 105, // SIZEOF S_ADD_ARRAY = 106, // ADD_ARRAY S_THEN = 107, // THEN S_TERN = 108, // TERN @@ -1003,15 +1003,16 @@ namespace xsk { namespace gsc { namespace s4 { S_expr_level = 187, // expr_level S_expr_animation = 188, // expr_animation S_expr_animtree = 189, // expr_animtree - S_expr_identifier = 190, // expr_identifier - S_expr_path = 191, // expr_path - S_expr_istring = 192, // expr_istring - S_expr_string = 193, // expr_string - 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_expr_identifier_nosize = 190, // expr_identifier_nosize + 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_vector = 195, // expr_vector + S_expr_float = 196, // expr_float + S_expr_integer = 197, // expr_integer + S_expr_false = 198, // expr_false + S_expr_true = 199 // expr_true }; }; @@ -1134,6 +1135,7 @@ namespace xsk { namespace gsc { namespace s4 { value.move< ast::expr_game::ptr > (std::move (that.value)); break; + case symbol_kind::S_expr_identifier_nosize: // expr_identifier_nosize case symbol_kind::S_expr_identifier: // expr_identifier value.move< ast::expr_identifier::ptr > (std::move (that.value)); break; @@ -1333,7 +1335,6 @@ namespace xsk { namespace gsc { namespace s4 { value.move< ast::stmt_while::ptr > (std::move (that.value)); break; - case symbol_kind::S_FIELD: // "field" case symbol_kind::S_PATH: // "path" case symbol_kind::S_IDENTIFIER: // "identifier" case symbol_kind::S_STRING: // "string literal" @@ -2440,6 +2441,7 @@ switch (yykind) value.template destroy< ast::expr_game::ptr > (); break; + case symbol_kind::S_expr_identifier_nosize: // expr_identifier_nosize case symbol_kind::S_expr_identifier: // expr_identifier value.template destroy< ast::expr_identifier::ptr > (); break; @@ -2639,7 +2641,6 @@ switch (yykind) value.template destroy< ast::stmt_while::ptr > (); break; - case symbol_kind::S_FIELD: // "field" case symbol_kind::S_PATH: // "path" case symbol_kind::S_IDENTIFIER: // "identifier" case symbol_kind::S_STRING: // "string literal" @@ -2745,7 +2746,7 @@ switch (yykind) { S4_ASSERT (tok == token::S4EOF || (token::S4error <= tok && tok <= token::MOD) - || (token::ADD_ARRAY <= tok && tok <= token::POSTDEC)); + || (token::SIZEOF <= tok && tok <= token::POSTDEC)); } #if 201103L <= YY_CPLUSPLUS symbol_type (int tok, std::string v, location_type l) @@ -2755,7 +2756,7 @@ switch (yykind) : super_type(token_type (tok), v, l) #endif { - S4_ASSERT ((token::FIELD <= tok && tok <= token::INTEGER)); + S4_ASSERT ((token::PATH <= tok && tok <= token::INTEGER)); } }; @@ -4290,21 +4291,6 @@ switch (yykind) return symbol_type (token::MOD, l); } #endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_FIELD (std::string v, location_type l) - { - return symbol_type (token::FIELD, std::move (v), std::move (l)); - } -#else - static - symbol_type - make_FIELD (const std::string& v, const location_type& l) - { - return symbol_type (token::FIELD, v, l); - } -#endif #if 201103L <= YY_CPLUSPLUS static symbol_type @@ -4395,6 +4381,21 @@ switch (yykind) return symbol_type (token::INTEGER, v, l); } #endif +#if 201103L <= YY_CPLUSPLUS + static + symbol_type + make_SIZEOF (location_type l) + { + return symbol_type (token::SIZEOF, std::move (l)); + } +#else + static + symbol_type + make_SIZEOF (const location_type& l) + { + return symbol_type (token::SIZEOF, l); + } +#endif #if 201103L <= YY_CPLUSPLUS static symbol_type @@ -4874,9 +4875,9 @@ switch (yykind) /// Constants. enum { - yylast_ = 2404, ///< Last index in yytable_. - yynnts_ = 84, ///< Number of nonterminal symbols. - yyfinal_ = 21 ///< Termination state number. + yylast_ = 2278, ///< Last index in yytable_. + yynnts_ = 85, ///< Number of nonterminal symbols. + yyfinal_ = 22 ///< Termination state number. }; @@ -4988,6 +4989,7 @@ switch (yykind) value.copy< ast::expr_game::ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_expr_identifier_nosize: // expr_identifier_nosize case symbol_kind::S_expr_identifier: // expr_identifier value.copy< ast::expr_identifier::ptr > (YY_MOVE (that.value)); break; @@ -5187,7 +5189,6 @@ switch (yykind) value.copy< ast::stmt_while::ptr > (YY_MOVE (that.value)); break; - case symbol_kind::S_FIELD: // "field" case symbol_kind::S_PATH: // "path" case symbol_kind::S_IDENTIFIER: // "identifier" case symbol_kind::S_STRING: // "string literal" @@ -5312,6 +5313,7 @@ switch (yykind) value.move< ast::expr_game::ptr > (YY_MOVE (s.value)); break; + case symbol_kind::S_expr_identifier_nosize: // expr_identifier_nosize case symbol_kind::S_expr_identifier: // expr_identifier value.move< ast::expr_identifier::ptr > (YY_MOVE (s.value)); break; @@ -5511,7 +5513,6 @@ switch (yykind) value.move< ast::stmt_while::ptr > (YY_MOVE (s.value)); break; - case symbol_kind::S_FIELD: // "field" case symbol_kind::S_PATH: // "path" case symbol_kind::S_IDENTIFIER: // "identifier" case symbol_kind::S_STRING: // "string literal" @@ -5584,7 +5585,7 @@ switch (yykind) #line 13 "parser.ypp" } } } // xsk::gsc::s4 -#line 5588 "parser.hpp" +#line 5589 "parser.hpp" diff --git a/src/t6/xsk/compiler.cpp b/src/t6/xsk/compiler.cpp index 5cad5fe9..97c086de 100644 --- a/src/t6/xsk/compiler.cpp +++ b/src/t6/xsk/compiler.cpp @@ -1272,11 +1272,11 @@ void compiler::emit_expr_call_function(const ast::expr_function::ptr& expr) switch (expr->mode) { case ast::call::mode::normal: - flags |= std::uint8_t(import_flags::func_call); + flags |= std::uint8_t(import_flags::func_call); emit_opcode(opcode::OP_ScriptFunctionCall, { expr->path->value, expr->name->value, argcount, utils::string::va("%d", flags) }); break; case ast::call::mode::thread: - flags |= std::uint8_t(import_flags::func_call_thread); + flags |= std::uint8_t(import_flags::func_call_thread); emit_opcode(opcode::OP_ScriptThreadCall, { expr->path->value, expr->name->value, argcount, utils::string::va("%d", flags) }); break; default: @@ -1348,11 +1348,11 @@ void compiler::emit_expr_method_function(const ast::expr_function::ptr& expr, co switch (expr->mode) { case ast::call::mode::normal: - flags |= std::uint8_t(import_flags::meth_call); + flags |= std::uint8_t(import_flags::meth_call); emit_opcode(opcode::OP_ScriptMethodCall, { expr->path->value, expr->name->value, argcount, utils::string::va("%d", flags) }); break; case ast::call::mode::thread: - flags |= std::uint8_t(import_flags::meth_call_thread); + flags |= std::uint8_t(import_flags::meth_call_thread); emit_opcode(opcode::OP_ScriptMethodThreadCall, { expr->path->value, expr->name->value, argcount, utils::string::va("%d", flags) }); break; default: @@ -1529,14 +1529,14 @@ void compiler::emit_expr_reference(const ast::expr_reference::ptr& expr) auto flags = developer_thread_ ? std::uint8_t(import_flags::developer) : 0; - flags |= std::uint8_t(import_flags::func_reference); + flags |= std::uint8_t(import_flags::func_reference); emit_opcode(opcode::OP_GetFunction, { expr->path->value, expr->name->value, "0", utils::string::va("%d", flags) }); } void compiler::emit_expr_size(const ast::expr_size::ptr& expr) { - emit_expr_variable(expr->obj); + emit_expr(expr->obj); emit_opcode(opcode::OP_SizeOf); } diff --git a/src/t6/xsk/decompiler.cpp b/src/t6/xsk/decompiler.cpp index ce63e630..3f8a693f 100644 --- a/src/t6/xsk/decompiler.cpp +++ b/src/t6/xsk/decompiler.cpp @@ -1412,7 +1412,7 @@ void decompiler::decompile_aborts(const ast::stmt_list::ptr& stmt) void decompiler::decompile_devblocks(const ast::stmt_list::ptr& stmt) { - for (auto i = 0; i < stmt->list.size(); i++) + for (auto i = 0u; i < stmt->list.size(); i++) { if (stmt->list.at(i) == ast::kind::asm_dev) { diff --git a/src/t6/xsk/disassembler.cpp b/src/t6/xsk/disassembler.cpp index 65355a62..dcf7b259 100644 --- a/src/t6/xsk/disassembler.cpp +++ b/src/t6/xsk/disassembler.cpp @@ -542,7 +542,7 @@ void disassembler::disassemble_end_switch(const instruction::ptr& inst) const auto count = script_->read(); inst->data.push_back(utils::string::va("%i", count)); - for (auto i = 0; i < count; i++) + for (auto i = 0u; i < count; i++) { const auto value = script_->read(); diff --git a/src/t6/xsk/lexer.cpp b/src/t6/xsk/lexer.cpp index 407a3626..1dcfb8d0 100644 --- a/src/t6/xsk/lexer.cpp +++ b/src/t6/xsk/lexer.cpp @@ -55,6 +55,7 @@ const std::unordered_map keywo { "true", parser::token::TRUE }, { "false", parser::token::FALSE }, { "undefined", parser::token::UNDEFINED }, + { "size", parser::token::SIZE }, { "game", parser::token::GAME }, { "self", parser::token::SELF }, { "anim", parser::token::ANIM }, @@ -99,8 +100,8 @@ bool buffer::push(char c) return true; } -reader::reader() : state(reader::end), buffer_pos(0), bytes_remaining(0), - last_byte(0), current_byte(0) { } +reader::reader() : state(reader::end), buffer_pos(0), + bytes_remaining(0), last_byte(0), current_byte(0) {} void reader::init(const char* data, size_t size) { @@ -188,7 +189,6 @@ auto lexer::lex() -> parser::symbol_type { buffer_.length = 0; state_ = state::start; - loc_.step(); while (true) { @@ -196,6 +196,7 @@ auto lexer::lex() -> parser::symbol_type auto& last = reader_.last_byte; auto& curr = reader_.current_byte; auto path = false; + loc_.step(); if (state == reader::end) { @@ -228,7 +229,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 != '*' && curr != '/') return parser::make_DIV(loc_); advance(); @@ -260,14 +261,35 @@ auto lexer::lex() -> parser::symbol_type } else if (last == '#' && curr == '/') { - reader_.advance(); + advance(); break; } - reader_.advance(); + advance(); } } } + else if (last == '@') + { + while (true) + { + if (state == reader::end) + throw comp_error(loc_, "unmatched script doc comment start ('/@')"); + + if (curr == '\n') + { + loc_.lines(); + loc_.step(); + } + else if (last == '@' && curr == '/') + { + advance(); + break; + } + + advance(); + } + } else if (last == '*') { while (true) @@ -280,13 +302,13 @@ auto lexer::lex() -> parser::symbol_type loc_.lines(); loc_.step(); } - else if (last == '*' && curr == '/') + else if (last == '*' && curr == '/') { - reader_.advance(); + advance(); break; } - reader_.advance(); + advance(); } } else if (last == '/') @@ -296,30 +318,10 @@ auto lexer::lex() -> parser::symbol_type if (state == reader::end) break; - if (last == '\\' && (curr == '\r' || curr == '\n')) - { - reader_.advance(); - - if (state == reader::end) - break; - - if (last == '\r') - { - if (curr != '\n') - throw comp_error(loc_, "invalid token ('\')"); - - reader_.advance(); - } - - loc_.lines(); - loc_.step(); - continue; - } - if (curr == '\n') break; - reader_.advance(); + advance(); } } continue; @@ -329,8 +331,8 @@ auto lexer::lex() -> parser::symbol_type if (!indev_) throw comp_error(loc_, "unmatched devblock end ('#/')"); - indev_ = false; advance(); + indev_ = false; return parser::make_DEVEND(loc_); } @@ -351,7 +353,7 @@ auto lexer::lex() -> parser::symbol_type state_ = state::preprocessor; goto lex_name; case '*': - if (curr != '/' && curr != '=') + if (curr != '=' && curr != '/') return parser::make_MUL(loc_); advance(); @@ -364,13 +366,9 @@ auto lexer::lex() -> parser::symbol_type state_ = state::string; goto lex_string; case '.': - advance(); - - if (state == reader::end) - throw comp_error(loc_, "unterminated field ('.')"); - - state_ = state::field; - goto lex_name_or_number; + if (curr < '0' || curr > '9') + return parser::make_DOT(loc_); + goto lex_number; case '(': return parser::make_LPAREN(loc_); case ')': @@ -494,7 +492,6 @@ auto lexer::lex() -> parser::symbol_type advance(); return parser::make_ASSIGN_RSHIFT(loc_); default: -lex_name_or_number: if (last >= '0' && last <= '9') goto lex_number; else if (last == '_' || last >= 'A' && last <= 'Z' || last >= 'a' && last <= 'z') @@ -576,23 +573,8 @@ lex_name: advance(); } - if (state_ == state::field) + if (state_ == state::preprocessor) { - if (path) - throw comp_error(loc_, "invalid field token '\\'"); - - if (std::string_view(buffer_.data, buffer_.length) == "size") - { - return parser::make_SIZE(loc_); - } - - return parser::make_FIELD(std::string(buffer_.data, buffer_.length), loc_); - } - else if (state_ == state::preprocessor) - { - if (path) - throw comp_error(loc_, "invalid preprocessor directive"); - auto token = parser::token::T6UNDEF; if (buffer_.length < 16) @@ -608,7 +590,8 @@ lex_name: } } - preprocessor(token); + preprocessor_run(token); + state_ = state::start; continue; } @@ -647,14 +630,11 @@ lex_name: } lex_number: - if (state_ == state::field) - buffer_.push('.'); - - if (state_ == state::field || last == '.' || last != '0' || (last == '0' && (curr != 'o' && curr != 'b' && curr != 'x'))) + if (last == '.' || last != '0' || (last == '0' && (curr != 'o' && curr != 'b' && curr != 'x'))) { buffer_.push(last); - auto dot = 0; + auto dot = last == '.' ? 1 : 0; auto flt = 0; while (true) @@ -690,10 +670,10 @@ lex_number: if (last == '\'') throw comp_error(loc_, "invalid number literal"); - if (state_ == state::field && dot || dot > 1 || flt > 1 || flt && buffer_.data[buffer_.length - 1] != 'f') + if (dot > 1 || flt > 1 || flt && buffer_.data[buffer_.length - 1] != 'f') throw comp_error(loc_, "invalid number literal"); - if (state_ == state::field || dot || flt) + if (dot || flt) return parser::make_FLOAT(std::string(buffer_.data, buffer_.length), loc_); return parser::make_INTEGER(std::string(buffer_.data, buffer_.length), loc_); @@ -708,7 +688,7 @@ lex_number: break; if (curr == '\'' && (last == '\'' || last == 'o') || (curr == 'o' && last == '\'')) - throw comp_error(loc_, "invalid octal literal"); + throw comp_error(loc_, "invalid octal literal"); if (curr == '\'') { @@ -798,18 +778,22 @@ lex_number: return parser::make_INTEGER(xsk::utils::string::hex_to_dec(buffer_.data), loc_); } - // cant get here! + + throw error("UNEXPECTED LEXER INTERNAL ERROR!"); } } void lexer::advance() { reader_.advance(); + loc_.end.column++; - // dont wrap comment marks '/\/' '/\*' outside strings - if (state_ == state::start && reader_.last_byte == '/') - return; + if (reader_.current_byte == '\\') [[unlikely]] + preprocessor_wrap(); +} +void lexer::preprocessor_wrap() +{ while (reader_.current_byte == '\\') { if (reader_.bytes_remaining == 1) @@ -851,7 +835,7 @@ void lexer::advance() } } -void lexer::preprocessor(parser::token::token_kind_type token) +void lexer::preprocessor_run(parser::token::token_kind_type token) { if (!clean_) throw comp_error(loc_, "invalid token ('#')"); diff --git a/src/t6/xsk/lexer.hpp b/src/t6/xsk/lexer.hpp index f283989c..b8f668e9 100644 --- a/src/t6/xsk/lexer.hpp +++ b/src/t6/xsk/lexer.hpp @@ -44,7 +44,7 @@ struct reader class lexer { - enum class state : std::uint8_t { start, string, localize, field, preprocessor }; + enum class state : std::uint8_t { start, string, localize, preprocessor }; reader reader_; buffer buffer_; @@ -66,7 +66,8 @@ public: private: void advance(); - void preprocessor(parser::token::token_kind_type token); + void preprocessor_wrap(); + void preprocessor_run(parser::token::token_kind_type token); }; } // namespace xsk::arc::t6 diff --git a/src/t6/xsk/parser.cpp b/src/t6/xsk/parser.cpp index 7821bbd9..4f0f3cfc 100644 --- a/src/t6/xsk/parser.cpp +++ b/src/t6/xsk/parser.cpp @@ -361,6 +361,7 @@ namespace xsk { namespace arc { namespace t6 { value.YY_MOVE_OR_COPY< ast::expr_hash::ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_expr_identifier_nosize: // expr_identifier_nosize case symbol_kind::S_expr_identifier: // expr_identifier value.YY_MOVE_OR_COPY< ast::expr_identifier::ptr > (YY_MOVE (that.value)); break; @@ -556,7 +557,6 @@ namespace xsk { namespace arc { namespace t6 { value.YY_MOVE_OR_COPY< ast::stmt_while::ptr > (YY_MOVE (that.value)); break; - case symbol_kind::S_FIELD: // "field" case symbol_kind::S_PATH: // "path" case symbol_kind::S_IDENTIFIER: // "identifier" case symbol_kind::S_STRING: // "string literal" @@ -728,6 +728,7 @@ namespace xsk { namespace arc { namespace t6 { value.move< ast::expr_hash::ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_expr_identifier_nosize: // expr_identifier_nosize case symbol_kind::S_expr_identifier: // expr_identifier value.move< ast::expr_identifier::ptr > (YY_MOVE (that.value)); break; @@ -923,7 +924,6 @@ namespace xsk { namespace arc { namespace t6 { value.move< ast::stmt_while::ptr > (YY_MOVE (that.value)); break; - case symbol_kind::S_FIELD: // "field" case symbol_kind::S_PATH: // "path" case symbol_kind::S_IDENTIFIER: // "identifier" case symbol_kind::S_STRING: // "string literal" @@ -1095,6 +1095,7 @@ namespace xsk { namespace arc { namespace t6 { value.copy< ast::expr_hash::ptr > (that.value); break; + case symbol_kind::S_expr_identifier_nosize: // expr_identifier_nosize case symbol_kind::S_expr_identifier: // expr_identifier value.copy< ast::expr_identifier::ptr > (that.value); break; @@ -1290,7 +1291,6 @@ namespace xsk { namespace arc { namespace t6 { value.copy< ast::stmt_while::ptr > (that.value); break; - case symbol_kind::S_FIELD: // "field" case symbol_kind::S_PATH: // "path" case symbol_kind::S_IDENTIFIER: // "identifier" case symbol_kind::S_STRING: // "string literal" @@ -1461,6 +1461,7 @@ namespace xsk { namespace arc { namespace t6 { value.move< ast::expr_hash::ptr > (that.value); break; + case symbol_kind::S_expr_identifier_nosize: // expr_identifier_nosize case symbol_kind::S_expr_identifier: // expr_identifier value.move< ast::expr_identifier::ptr > (that.value); break; @@ -1656,7 +1657,6 @@ namespace xsk { namespace arc { namespace t6 { value.move< ast::stmt_while::ptr > (that.value); break; - case symbol_kind::S_FIELD: // "field" case symbol_kind::S_PATH: // "path" case symbol_kind::S_IDENTIFIER: // "identifier" case symbol_kind::S_STRING: // "string literal" @@ -2082,6 +2082,7 @@ namespace xsk { namespace arc { namespace t6 { yylhs.value.emplace< ast::expr_hash::ptr > (); break; + case symbol_kind::S_expr_identifier_nosize: // expr_identifier_nosize case symbol_kind::S_expr_identifier: // expr_identifier yylhs.value.emplace< ast::expr_identifier::ptr > (); break; @@ -2277,7 +2278,6 @@ namespace xsk { namespace arc { namespace t6 { yylhs.value.emplace< ast::stmt_while::ptr > (); break; - case symbol_kind::S_FIELD: // "field" case symbol_kind::S_PATH: // "path" case symbol_kind::S_IDENTIFIER: // "identifier" case symbol_kind::S_STRING: // "string literal" @@ -2309,1477 +2309,1483 @@ namespace xsk { namespace arc { namespace t6 { switch (yyn) { case 2: // root: program -#line 284 "parser.ypp" +#line 285 "parser.ypp" { ast = std::move(yystack_[0].value.as < ast::program::ptr > ()); } #line 2315 "parser.cpp" break; case 3: // root: %empty -#line 285 "parser.ypp" +#line 286 "parser.ypp" { ast = std::make_unique(yylhs.location); } #line 2321 "parser.cpp" break; case 4: // program: program inline -#line 290 "parser.ypp" +#line 291 "parser.ypp" { yylhs.value.as < ast::program::ptr > () = std::move(yystack_[1].value.as < ast::program::ptr > ()); } #line 2327 "parser.cpp" break; case 5: // program: program include -#line 292 "parser.ypp" +#line 293 "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 2333 "parser.cpp" break; case 6: // program: program declaration -#line 294 "parser.ypp" +#line 295 "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 2339 "parser.cpp" break; case 7: // program: inline -#line 296 "parser.ypp" +#line 297 "parser.ypp" { yylhs.value.as < ast::program::ptr > () = std::make_unique(yylhs.location); } #line 2345 "parser.cpp" break; case 8: // program: include -#line 298 "parser.ypp" +#line 299 "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 2351 "parser.cpp" break; case 9: // program: declaration -#line 300 "parser.ypp" +#line 301 "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 2357 "parser.cpp" break; case 10: // inline: "#inline" expr_path ";" -#line 304 "parser.ypp" +#line 305 "parser.ypp" { lexer.push_header(yystack_[1].value.as < ast::expr_path::ptr > ()->value); } #line 2363 "parser.cpp" break; case 11: // include: "#include" expr_path ";" -#line 309 "parser.ypp" +#line 310 "parser.ypp" { yylhs.value.as < ast::include::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr_path::ptr > ())); } #line 2369 "parser.cpp" break; case 12: // declaration: "/#" -#line 313 "parser.ypp" +#line 314 "parser.ypp" { yylhs.value.as < ast::decl > ().as_dev_begin = std::make_unique(yylhs.location); } #line 2375 "parser.cpp" break; case 13: // declaration: "#/" -#line 314 "parser.ypp" +#line 315 "parser.ypp" { yylhs.value.as < ast::decl > ().as_dev_end = std::make_unique(yylhs.location); } #line 2381 "parser.cpp" break; case 14: // declaration: decl_usingtree -#line 315 "parser.ypp" +#line 316 "parser.ypp" { yylhs.value.as < ast::decl > ().as_usingtree = std::move(yystack_[0].value.as < ast::decl_usingtree::ptr > ()); } #line 2387 "parser.cpp" break; case 15: // declaration: decl_constant -#line 316 "parser.ypp" +#line 317 "parser.ypp" { yylhs.value.as < ast::decl > ().as_constant = std::move(yystack_[0].value.as < ast::decl_constant::ptr > ()); } #line 2393 "parser.cpp" break; case 16: // declaration: decl_thread -#line 317 "parser.ypp" +#line 318 "parser.ypp" { yylhs.value.as < ast::decl > ().as_thread = std::move(yystack_[0].value.as < ast::decl_thread::ptr > ()); } #line 2399 "parser.cpp" break; case 17: // decl_usingtree: "#using_animtree" "(" expr_string ")" ";" -#line 322 "parser.ypp" +#line 323 "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 2405 "parser.cpp" break; case 18: // decl_constant: expr_identifier "=" expr ";" -#line 327 "parser.ypp" +#line 328 "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 2411 "parser.cpp" break; case 19: // decl_thread: expr_identifier "(" expr_parameters ")" stmt_block -#line 332 "parser.ypp" +#line 333 "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 2417 "parser.cpp" break; case 20: // stmt: stmt_block -#line 336 "parser.ypp" +#line 337 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_list = std::move(yystack_[0].value.as < ast::stmt_list::ptr > ()); } #line 2423 "parser.cpp" break; case 21: // stmt: stmt_call -#line 337 "parser.ypp" +#line 338 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_call = std::move(yystack_[0].value.as < ast::stmt_call::ptr > ()); } #line 2429 "parser.cpp" break; case 22: // stmt: stmt_assign -#line 338 "parser.ypp" +#line 339 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_assign = std::move(yystack_[0].value.as < ast::stmt_assign::ptr > ()); } #line 2435 "parser.cpp" break; case 23: // stmt: stmt_endon -#line 339 "parser.ypp" +#line 340 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_endon = std::move(yystack_[0].value.as < ast::stmt_endon::ptr > ()); } #line 2441 "parser.cpp" break; case 24: // stmt: stmt_notify -#line 340 "parser.ypp" +#line 341 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_notify = std::move(yystack_[0].value.as < ast::stmt_notify::ptr > ()); } #line 2447 "parser.cpp" break; case 25: // stmt: stmt_wait -#line 341 "parser.ypp" +#line 342 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_wait = std::move(yystack_[0].value.as < ast::stmt_wait::ptr > ()); } #line 2453 "parser.cpp" break; case 26: // stmt: stmt_waittill -#line 342 "parser.ypp" +#line 343 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_waittill = std::move(yystack_[0].value.as < ast::stmt_waittill::ptr > ()); } #line 2459 "parser.cpp" break; case 27: // stmt: stmt_waittillmatch -#line 343 "parser.ypp" +#line 344 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_waittillmatch = std::move(yystack_[0].value.as < ast::stmt_waittillmatch::ptr > ()); } #line 2465 "parser.cpp" break; case 28: // stmt: stmt_waittillframeend -#line 344 "parser.ypp" +#line 345 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_waittillframeend = std::move(yystack_[0].value.as < ast::stmt_waittillframeend::ptr > ()); } #line 2471 "parser.cpp" break; case 29: // stmt: stmt_if -#line 345 "parser.ypp" +#line 346 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_if = std::move(yystack_[0].value.as < ast::stmt_if::ptr > ()); } #line 2477 "parser.cpp" break; case 30: // stmt: stmt_ifelse -#line 346 "parser.ypp" +#line 347 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_ifelse = std::move(yystack_[0].value.as < ast::stmt_ifelse::ptr > ()); } #line 2483 "parser.cpp" break; case 31: // stmt: stmt_while -#line 347 "parser.ypp" +#line 348 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_while = std::move(yystack_[0].value.as < ast::stmt_while::ptr > ()); } #line 2489 "parser.cpp" break; case 32: // stmt: stmt_dowhile -#line 348 "parser.ypp" +#line 349 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_dowhile = std::move(yystack_[0].value.as < ast::stmt_dowhile::ptr > ()); } #line 2495 "parser.cpp" break; case 33: // stmt: stmt_for -#line 349 "parser.ypp" +#line 350 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_for = std::move(yystack_[0].value.as < ast::stmt_for::ptr > ()); } #line 2501 "parser.cpp" break; case 34: // stmt: stmt_foreach -#line 350 "parser.ypp" +#line 351 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_foreach = std::move(yystack_[0].value.as < ast::stmt_foreach::ptr > ()); } #line 2507 "parser.cpp" break; case 35: // stmt: stmt_switch -#line 351 "parser.ypp" +#line 352 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_switch = std::move(yystack_[0].value.as < ast::stmt_switch::ptr > ()); } #line 2513 "parser.cpp" break; case 36: // stmt: stmt_case -#line 352 "parser.ypp" +#line 353 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_case = std::move(yystack_[0].value.as < ast::stmt_case::ptr > ()); } #line 2519 "parser.cpp" break; case 37: // stmt: stmt_default -#line 353 "parser.ypp" +#line 354 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_default = std::move(yystack_[0].value.as < ast::stmt_default::ptr > ()); } #line 2525 "parser.cpp" break; case 38: // stmt: stmt_break -#line 354 "parser.ypp" +#line 355 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_break = std::move(yystack_[0].value.as < ast::stmt_break::ptr > ()); } #line 2531 "parser.cpp" break; case 39: // stmt: stmt_continue -#line 355 "parser.ypp" +#line 356 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_continue = std::move(yystack_[0].value.as < ast::stmt_continue::ptr > ()); } #line 2537 "parser.cpp" break; case 40: // stmt: stmt_return -#line 356 "parser.ypp" +#line 357 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_return = std::move(yystack_[0].value.as < ast::stmt_return::ptr > ()); } #line 2543 "parser.cpp" break; case 41: // stmt: stmt_breakpoint -#line 357 "parser.ypp" +#line 358 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_breakpoint = std::move(yystack_[0].value.as < ast::stmt_breakpoint::ptr > ()); } #line 2549 "parser.cpp" break; case 42: // stmt: stmt_prof_begin -#line 358 "parser.ypp" +#line 359 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_prof_begin = std::move(yystack_[0].value.as < ast::stmt_prof_begin::ptr > ()); } #line 2555 "parser.cpp" break; case 43: // stmt: stmt_prof_end -#line 359 "parser.ypp" +#line 360 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_prof_end = std::move(yystack_[0].value.as < ast::stmt_prof_end::ptr > ()); } #line 2561 "parser.cpp" break; case 44: // stmt_or_dev: stmt -#line 363 "parser.ypp" +#line 364 "parser.ypp" { yylhs.value.as < ast::stmt > () = std::move(yystack_[0].value.as < ast::stmt > ()); } #line 2567 "parser.cpp" break; case 45: // stmt_or_dev: stmt_dev -#line 364 "parser.ypp" +#line 365 "parser.ypp" { yylhs.value.as < ast::stmt > ().as_dev = std::move(yystack_[0].value.as < ast::stmt_dev::ptr > ()); } #line 2573 "parser.cpp" break; case 46: // stmt_list: stmt_list stmt -#line 369 "parser.ypp" +#line 370 "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 2579 "parser.cpp" break; case 47: // stmt_list: stmt -#line 371 "parser.ypp" +#line 372 "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 2585 "parser.cpp" break; case 48: // stmt_or_dev_list: stmt_or_dev_list stmt_or_dev -#line 376 "parser.ypp" +#line 377 "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 2591 "parser.cpp" break; case 49: // stmt_or_dev_list: stmt_or_dev -#line 378 "parser.ypp" +#line 379 "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 2597 "parser.cpp" break; case 50: // stmt_dev: "/#" stmt_list "#/" -#line 382 "parser.ypp" +#line 383 "parser.ypp" { yylhs.value.as < ast::stmt_dev::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::stmt_list::ptr > ())); } #line 2603 "parser.cpp" break; case 51: // stmt_dev: "/#" "#/" -#line 383 "parser.ypp" +#line 384 "parser.ypp" { yylhs.value.as < ast::stmt_dev::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } #line 2609 "parser.cpp" break; case 52: // stmt_block: "{" stmt_or_dev_list "}" -#line 387 "parser.ypp" +#line 388 "parser.ypp" { yylhs.value.as < ast::stmt_list::ptr > () = std::move(yystack_[1].value.as < ast::stmt_list::ptr > ()); } #line 2615 "parser.cpp" break; case 53: // stmt_block: "{" "}" -#line 388 "parser.ypp" +#line 389 "parser.ypp" { yylhs.value.as < ast::stmt_list::ptr > () = std::make_unique(yylhs.location); } #line 2621 "parser.cpp" break; case 54: // stmt_expr: expr_assign -#line 393 "parser.ypp" +#line 394 "parser.ypp" { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } #line 2627 "parser.cpp" break; case 55: // stmt_expr: expr_increment -#line 395 "parser.ypp" +#line 396 "parser.ypp" { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } #line 2633 "parser.cpp" break; case 56: // stmt_expr: expr_decrement -#line 397 "parser.ypp" +#line 398 "parser.ypp" { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } #line 2639 "parser.cpp" break; case 57: // stmt_expr: %empty -#line 399 "parser.ypp" +#line 400 "parser.ypp" { yylhs.value.as < ast::stmt_expr::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } #line 2645 "parser.cpp" break; case 58: // stmt_call: expr_call ";" -#line 404 "parser.ypp" +#line 405 "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 2651 "parser.cpp" break; case 59: // stmt_call: expr_method ";" -#line 406 "parser.ypp" +#line 407 "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 2657 "parser.cpp" break; case 60: // stmt_assign: expr_assign ";" -#line 411 "parser.ypp" +#line 412 "parser.ypp" { yylhs.value.as < ast::stmt_assign::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } #line 2663 "parser.cpp" break; case 61: // stmt_assign: expr_increment ";" -#line 413 "parser.ypp" +#line 414 "parser.ypp" { yylhs.value.as < ast::stmt_assign::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } #line 2669 "parser.cpp" break; case 62: // stmt_assign: expr_decrement ";" -#line 415 "parser.ypp" +#line 416 "parser.ypp" { yylhs.value.as < ast::stmt_assign::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } #line 2675 "parser.cpp" break; case 63: // stmt_endon: expr_object "endon" "(" expr ")" ";" -#line 420 "parser.ypp" +#line 421 "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 2681 "parser.cpp" break; case 64: // stmt_notify: expr_object "notify" "(" expr "," expr_arguments_no_empty ")" ";" -#line 425 "parser.ypp" +#line 426 "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 2687 "parser.cpp" break; case 65: // stmt_notify: expr_object "notify" "(" expr ")" ";" -#line 427 "parser.ypp" +#line 428 "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 2693 "parser.cpp" break; case 66: // stmt_wait: "wait" expr ";" -#line 432 "parser.ypp" +#line 433 "parser.ypp" { yylhs.value.as < ast::stmt_wait::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } #line 2699 "parser.cpp" break; case 67: // stmt_waittill: expr_object "waittill" "(" expr "," expr_arguments_no_empty ")" ";" -#line 437 "parser.ypp" +#line 438 "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 2705 "parser.cpp" break; case 68: // stmt_waittill: expr_object "waittill" "(" expr ")" ";" -#line 439 "parser.ypp" +#line 440 "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 2711 "parser.cpp" break; case 69: // stmt_waittillmatch: expr_object "waittillmatch" "(" expr "," expr_arguments_no_empty ")" ";" -#line 444 "parser.ypp" +#line 445 "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 2717 "parser.cpp" break; case 70: // stmt_waittillmatch: expr_object "waittillmatch" "(" expr ")" ";" -#line 446 "parser.ypp" +#line 447 "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 2723 "parser.cpp" break; case 71: // stmt_waittillframeend: "waittillframeend" ";" -#line 451 "parser.ypp" +#line 452 "parser.ypp" { yylhs.value.as < ast::stmt_waittillframeend::ptr > () = std::make_unique(yylhs.location); } #line 2729 "parser.cpp" break; case 72: // stmt_if: "if" "(" expr ")" stmt -#line 456 "parser.ypp" +#line 457 "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 2735 "parser.cpp" break; case 73: // stmt_ifelse: "if" "(" expr ")" stmt "else" stmt -#line 461 "parser.ypp" +#line 462 "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 2741 "parser.cpp" break; case 74: // stmt_while: "while" "(" expr ")" stmt -#line 466 "parser.ypp" +#line 467 "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 2747 "parser.cpp" break; case 75: // stmt_dowhile: "do" stmt "while" "(" expr ")" ";" -#line 471 "parser.ypp" +#line 472 "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 2753 "parser.cpp" break; case 76: // stmt_for: "for" "(" stmt_expr ";" expr_or_empty ";" stmt_expr ")" stmt -#line 476 "parser.ypp" +#line 477 "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 2759 "parser.cpp" break; case 77: // stmt_foreach: "foreach" "(" expr_identifier "in" expr ")" stmt -#line 481 "parser.ypp" +#line 482 "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 2765 "parser.cpp" break; case 78: // stmt_foreach: "foreach" "(" expr_identifier "," expr_identifier "in" expr ")" stmt -#line 483 "parser.ypp" +#line 484 "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 2771 "parser.cpp" break; case 79: // stmt_switch: "switch" "(" expr ")" stmt_block -#line 488 "parser.ypp" +#line 489 "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 2777 "parser.cpp" break; case 80: // stmt_case: "case" expr_integer ":" -#line 493 "parser.ypp" +#line 494 "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 2783 "parser.cpp" break; case 81: // stmt_case: "case" expr_string ":" -#line 495 "parser.ypp" +#line 496 "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 2789 "parser.cpp" break; case 82: // stmt_default: "default" ":" -#line 500 "parser.ypp" +#line 501 "parser.ypp" { yylhs.value.as < ast::stmt_default::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } #line 2795 "parser.cpp" break; case 83: // stmt_break: "break" ";" -#line 505 "parser.ypp" +#line 506 "parser.ypp" { yylhs.value.as < ast::stmt_break::ptr > () = std::make_unique(yylhs.location); } #line 2801 "parser.cpp" break; case 84: // stmt_continue: "continue" ";" -#line 510 "parser.ypp" +#line 511 "parser.ypp" { yylhs.value.as < ast::stmt_continue::ptr > () = std::make_unique(yylhs.location); } #line 2807 "parser.cpp" break; case 85: // stmt_return: "return" expr ";" -#line 515 "parser.ypp" +#line 516 "parser.ypp" { yylhs.value.as < ast::stmt_return::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } #line 2813 "parser.cpp" break; case 86: // stmt_return: "return" ";" -#line 517 "parser.ypp" +#line 518 "parser.ypp" { yylhs.value.as < ast::stmt_return::ptr > () = std::make_unique(yylhs.location, std::make_unique(yylhs.location)); } #line 2819 "parser.cpp" break; case 87: // stmt_breakpoint: "breakpoint" ";" -#line 522 "parser.ypp" +#line 523 "parser.ypp" { yylhs.value.as < ast::stmt_breakpoint::ptr > () = std::make_unique(yylhs.location); } #line 2825 "parser.cpp" break; case 88: // stmt_prof_begin: "prof_begin" "(" expr_arguments ")" ";" -#line 527 "parser.ypp" +#line 528 "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 2831 "parser.cpp" break; case 89: // stmt_prof_end: "prof_end" "(" expr_arguments ")" ";" -#line 532 "parser.ypp" +#line 533 "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 2837 "parser.cpp" break; case 90: // expr: expr_ternary -#line 536 "parser.ypp" +#line 537 "parser.ypp" { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } #line 2843 "parser.cpp" break; case 91: // expr: expr_binary -#line 537 "parser.ypp" +#line 538 "parser.ypp" { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } #line 2849 "parser.cpp" break; case 92: // expr: expr_primitive -#line 538 "parser.ypp" +#line 539 "parser.ypp" { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } #line 2855 "parser.cpp" break; case 93: // expr_or_empty: expr -#line 542 "parser.ypp" +#line 543 "parser.ypp" { yylhs.value.as < ast::expr > () = std::move(yystack_[0].value.as < ast::expr > ()); } #line 2861 "parser.cpp" break; case 94: // expr_or_empty: %empty -#line 543 "parser.ypp" +#line 544 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location); } #line 2867 "parser.cpp" break; case 95: // expr_assign: expr_object "=" expr -#line 548 "parser.ypp" +#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 2873 "parser.cpp" break; case 96: // expr_assign: expr_object "|=" expr -#line 550 "parser.ypp" +#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 2879 "parser.cpp" break; case 97: // expr_assign: expr_object "&=" expr -#line 552 "parser.ypp" +#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 2885 "parser.cpp" break; case 98: // expr_assign: expr_object "^=" expr -#line 554 "parser.ypp" +#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 2891 "parser.cpp" break; case 99: // expr_assign: expr_object "<<=" expr -#line 556 "parser.ypp" +#line 557 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()),std::move( yystack_[0].value.as < ast::expr > ())); } #line 2897 "parser.cpp" break; case 100: // expr_assign: expr_object ">>=" expr -#line 558 "parser.ypp" +#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 2903 "parser.cpp" break; case 101: // expr_assign: expr_object "+=" expr -#line 560 "parser.ypp" +#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 2909 "parser.cpp" break; case 102: // expr_assign: expr_object "-=" expr -#line 562 "parser.ypp" +#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 2915 "parser.cpp" break; case 103: // expr_assign: expr_object "*=" expr -#line 564 "parser.ypp" +#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 2921 "parser.cpp" break; case 104: // expr_assign: expr_object "/=" expr -#line 566 "parser.ypp" +#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 2927 "parser.cpp" break; case 105: // expr_assign: expr_object "%=" expr -#line 568 "parser.ypp" +#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 2933 "parser.cpp" break; case 106: // expr_increment: "++" expr_object -#line 573 "parser.ypp" +#line 574 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ()), true); } #line 2939 "parser.cpp" break; case 107: // expr_increment: expr_object "++" -#line 575 "parser.ypp" +#line 576 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ()), false); } #line 2945 "parser.cpp" break; case 108: // expr_decrement: "--" expr_object -#line 580 "parser.ypp" +#line 581 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ()), true); } #line 2951 "parser.cpp" break; case 109: // expr_decrement: expr_object "--" -#line 582 "parser.ypp" +#line 583 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ()), false); } #line 2957 "parser.cpp" break; case 110: // expr_ternary: expr "?" expr ":" expr -#line 587 "parser.ypp" +#line 588 "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 2963 "parser.cpp" break; case 111: // expr_binary: expr "||" expr -#line 592 "parser.ypp" +#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 2969 "parser.cpp" break; case 112: // expr_binary: expr "&&" expr -#line 594 "parser.ypp" +#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 2975 "parser.cpp" break; case 113: // expr_binary: expr "==" expr -#line 596 "parser.ypp" +#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 2981 "parser.cpp" break; case 114: // expr_binary: expr "!=" expr -#line 598 "parser.ypp" +#line 599 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } #line 2987 "parser.cpp" break; case 115: // expr_binary: expr "<=" expr -#line 600 "parser.ypp" +#line 601 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } #line 2993 "parser.cpp" break; case 116: // expr_binary: expr ">=" expr -#line 602 "parser.ypp" +#line 603 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } #line 2999 "parser.cpp" break; case 117: // expr_binary: expr "<" expr -#line 604 "parser.ypp" +#line 605 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } #line 3005 "parser.cpp" break; case 118: // expr_binary: expr ">" expr -#line 606 "parser.ypp" +#line 607 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } #line 3011 "parser.cpp" break; case 119: // expr_binary: expr "|" expr -#line 608 "parser.ypp" +#line 609 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } #line 3017 "parser.cpp" break; case 120: // expr_binary: expr "&" expr -#line 610 "parser.ypp" +#line 611 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } #line 3023 "parser.cpp" break; case 121: // expr_binary: expr "^" expr -#line 612 "parser.ypp" +#line 613 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } #line 3029 "parser.cpp" break; case 122: // expr_binary: expr "<<" expr -#line 614 "parser.ypp" +#line 615 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } #line 3035 "parser.cpp" break; case 123: // expr_binary: expr ">>" expr -#line 616 "parser.ypp" +#line 617 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } #line 3041 "parser.cpp" break; case 124: // expr_binary: expr "+" expr -#line 618 "parser.ypp" +#line 619 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } #line 3047 "parser.cpp" break; case 125: // expr_binary: expr "-" expr -#line 620 "parser.ypp" +#line 621 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } #line 3053 "parser.cpp" break; case 126: // expr_binary: expr "*" expr -#line 622 "parser.ypp" +#line 623 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } #line 3059 "parser.cpp" break; case 127: // expr_binary: expr "/" expr -#line 624 "parser.ypp" +#line 625 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } #line 3065 "parser.cpp" break; case 128: // expr_binary: expr "%" expr -#line 626 "parser.ypp" +#line 627 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ()), std::move(yystack_[0].value.as < ast::expr > ())); } #line 3071 "parser.cpp" break; case 129: // expr_primitive: expr_complement -#line 630 "parser.ypp" +#line 631 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_complement::ptr > ()); } #line 3077 "parser.cpp" break; case 130: // expr_primitive: expr_not -#line 631 "parser.ypp" +#line 632 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_not::ptr > ()); } #line 3083 "parser.cpp" break; case 131: // expr_primitive: expr_call -#line 632 "parser.ypp" +#line 633 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_call::ptr > ()); } #line 3089 "parser.cpp" break; case 132: // expr_primitive: expr_method -#line 633 "parser.ypp" +#line 634 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_method::ptr > ()); } #line 3095 "parser.cpp" break; case 133: // expr_primitive: expr_getnextarraykey -#line 634 "parser.ypp" +#line 635 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_getnextarraykey::ptr > ()); } #line 3101 "parser.cpp" break; case 134: // expr_primitive: expr_getfirstarraykey -#line 635 "parser.ypp" +#line 636 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_getfirstarraykey::ptr > ()); } #line 3107 "parser.cpp" break; case 135: // expr_primitive: expr_getdvarcoloralpha -#line 636 "parser.ypp" +#line 637 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_getdvarcoloralpha::ptr > ()); } #line 3113 "parser.cpp" break; case 136: // expr_primitive: expr_getdvarcolorblue -#line 637 "parser.ypp" +#line 638 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_getdvarcolorblue::ptr > ()); } #line 3119 "parser.cpp" break; case 137: // expr_primitive: expr_getdvarcolorgreen -#line 638 "parser.ypp" +#line 639 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_getdvarcolorgreen::ptr > ()); } #line 3125 "parser.cpp" break; case 138: // expr_primitive: expr_getdvarcolorred -#line 639 "parser.ypp" +#line 640 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_getdvarcolorred::ptr > ()); } #line 3131 "parser.cpp" break; case 139: // expr_primitive: expr_getdvarvector -#line 640 "parser.ypp" +#line 641 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_getdvarvector::ptr > ()); } #line 3137 "parser.cpp" break; case 140: // expr_primitive: expr_getdvarfloat -#line 641 "parser.ypp" +#line 642 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_getdvarfloat::ptr > ()); } #line 3143 "parser.cpp" break; case 141: // expr_primitive: expr_getdvarint -#line 642 "parser.ypp" +#line 643 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_getdvarint::ptr > ()); } #line 3149 "parser.cpp" break; case 142: // expr_primitive: expr_getdvar -#line 643 "parser.ypp" +#line 644 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_getdvar::ptr > ()); } #line 3155 "parser.cpp" break; case 143: // expr_primitive: expr_gettime -#line 644 "parser.ypp" +#line 645 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_gettime::ptr > ()); } #line 3161 "parser.cpp" break; case 144: // expr_primitive: expr_abs -#line 645 "parser.ypp" +#line 646 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_abs::ptr > ()); } #line 3167 "parser.cpp" break; case 145: // expr_primitive: expr_vectortoangles -#line 646 "parser.ypp" +#line 647 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_vectortoangles::ptr > ()); } #line 3173 "parser.cpp" break; case 146: // expr_primitive: expr_angleclamp180 -#line 647 "parser.ypp" +#line 648 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_angleclamp180::ptr > ()); } #line 3179 "parser.cpp" break; case 147: // expr_primitive: expr_anglestoforward -#line 648 "parser.ypp" +#line 649 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_anglestoforward::ptr > ()); } #line 3185 "parser.cpp" break; case 148: // expr_primitive: expr_anglestoright -#line 649 "parser.ypp" +#line 650 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_anglestoright::ptr > ()); } #line 3191 "parser.cpp" break; case 149: // expr_primitive: expr_anglestoup -#line 650 "parser.ypp" +#line 651 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_anglestoup::ptr > ()); } #line 3197 "parser.cpp" break; case 150: // expr_primitive: expr_vectorscale -#line 651 "parser.ypp" +#line 652 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_vectorscale::ptr > ()); } #line 3203 "parser.cpp" break; case 151: // expr_primitive: expr_isdefined -#line 652 "parser.ypp" +#line 653 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_isdefined::ptr > ()); } #line 3209 "parser.cpp" break; case 152: // expr_primitive: expr_reference -#line 653 "parser.ypp" +#line 654 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_reference::ptr > ()); } #line 3215 "parser.cpp" break; case 153: // expr_primitive: expr_array -#line 654 "parser.ypp" +#line 655 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_array::ptr > ()); } #line 3221 "parser.cpp" break; case 154: // expr_primitive: expr_field -#line 655 "parser.ypp" +#line 656 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_field::ptr > ()); } #line 3227 "parser.cpp" break; case 155: // expr_primitive: expr_size -#line 656 "parser.ypp" +#line 657 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_size::ptr > ()); } #line 3233 "parser.cpp" break; case 156: // expr_primitive: expr_paren -#line 657 "parser.ypp" +#line 658 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_paren::ptr > ()); } #line 3239 "parser.cpp" break; case 157: // expr_primitive: expr_empty_array -#line 658 "parser.ypp" +#line 659 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_empty_array::ptr > ()); } #line 3245 "parser.cpp" break; case 158: // expr_primitive: expr_undefined -#line 659 "parser.ypp" +#line 660 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_undefined::ptr > ()); } #line 3251 "parser.cpp" break; case 159: // expr_primitive: expr_game -#line 660 "parser.ypp" +#line 661 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_game::ptr > ()); } #line 3257 "parser.cpp" break; case 160: // expr_primitive: expr_self -#line 661 "parser.ypp" +#line 662 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_self::ptr > ()); } #line 3263 "parser.cpp" break; case 161: // expr_primitive: expr_anim -#line 662 "parser.ypp" +#line 663 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_anim::ptr > ()); } #line 3269 "parser.cpp" break; case 162: // expr_primitive: expr_level -#line 663 "parser.ypp" +#line 664 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_level::ptr > ()); } #line 3275 "parser.cpp" break; case 163: // expr_primitive: expr_animation -#line 664 "parser.ypp" +#line 665 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_animation::ptr > ()); } #line 3281 "parser.cpp" break; case 164: // expr_primitive: expr_identifier -#line 665 "parser.ypp" +#line 666 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ()); } #line 3287 "parser.cpp" break; case 165: // expr_primitive: expr_istring -#line 666 "parser.ypp" +#line 667 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_istring::ptr > ()); } #line 3293 "parser.cpp" break; case 166: // expr_primitive: expr_string -#line 667 "parser.ypp" +#line 668 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_string::ptr > ()); } #line 3299 "parser.cpp" break; case 167: // expr_primitive: expr_vector -#line 668 "parser.ypp" +#line 669 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_vector::ptr > ()); } #line 3305 "parser.cpp" break; case 168: // expr_primitive: expr_hash -#line 669 "parser.ypp" +#line 670 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_hash::ptr > ()); } #line 3311 "parser.cpp" break; case 169: // expr_primitive: expr_float -#line 670 "parser.ypp" +#line 671 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_float::ptr > ()); } #line 3317 "parser.cpp" break; case 170: // expr_primitive: expr_integer -#line 671 "parser.ypp" +#line 672 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_integer::ptr > ()); } #line 3323 "parser.cpp" break; case 171: // expr_primitive: expr_false -#line 672 "parser.ypp" +#line 673 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_false::ptr > ()); } #line 3329 "parser.cpp" break; case 172: // expr_primitive: expr_true -#line 673 "parser.ypp" +#line 674 "parser.ypp" { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_true::ptr > ()); } #line 3335 "parser.cpp" break; case 173: // expr_complement: "~" expr -#line 678 "parser.ypp" +#line 679 "parser.ypp" { yylhs.value.as < ast::expr_complement::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } #line 3341 "parser.cpp" break; case 174: // expr_not: "!" expr -#line 683 "parser.ypp" +#line 684 "parser.ypp" { yylhs.value.as < ast::expr_not::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::expr > ())); } #line 3347 "parser.cpp" break; case 175: // expr_call: expr_function -#line 687 "parser.ypp" +#line 688 "parser.ypp" { yylhs.value.as < ast::expr_call::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::call > ())); } #line 3353 "parser.cpp" break; case 176: // expr_call: expr_pointer -#line 688 "parser.ypp" +#line 689 "parser.ypp" { yylhs.value.as < ast::expr_call::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[0].value.as < ast::call > ())); } #line 3359 "parser.cpp" break; case 177: // expr_method: expr_object expr_function -#line 691 "parser.ypp" +#line 692 "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 3365 "parser.cpp" break; case 178: // expr_method: expr_object expr_pointer -#line 692 "parser.ypp" +#line 693 "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 3371 "parser.cpp" break; case 179: // expr_function: expr_identifier "(" expr_arguments ")" -#line 697 "parser.ypp" +#line 698 "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 3377 "parser.cpp" break; case 180: // expr_function: expr_path "::" expr_identifier "(" expr_arguments ")" -#line 699 "parser.ypp" +#line 700 "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 3383 "parser.cpp" break; case 181: // expr_function: "thread" expr_identifier "(" expr_arguments ")" -#line 701 "parser.ypp" +#line 702 "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 3389 "parser.cpp" break; case 182: // expr_function: "thread" expr_path "::" expr_identifier "(" expr_arguments ")" -#line 703 "parser.ypp" +#line 704 "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 3395 "parser.cpp" break; case 183: // expr_pointer: "[" "[" expr "]" "]" "(" expr_arguments ")" -#line 708 "parser.ypp" +#line 709 "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 3401 "parser.cpp" break; case 184: // expr_pointer: "thread" "[" "[" expr "]" "]" "(" expr_arguments ")" -#line 710 "parser.ypp" +#line 711 "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 3407 "parser.cpp" break; case 185: // expr_parameters: expr_parameters "," expr_identifier -#line 715 "parser.ypp" +#line 716 "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 3413 "parser.cpp" break; case 186: // expr_parameters: expr_identifier -#line 717 "parser.ypp" +#line 718 "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 3419 "parser.cpp" break; case 187: // expr_parameters: %empty -#line 719 "parser.ypp" +#line 720 "parser.ypp" { yylhs.value.as < ast::expr_parameters::ptr > () = std::make_unique(yylhs.location); } #line 3425 "parser.cpp" break; case 188: // expr_arguments: expr_arguments_no_empty -#line 724 "parser.ypp" +#line 725 "parser.ypp" { yylhs.value.as < ast::expr_arguments::ptr > () = std::move(yystack_[0].value.as < ast::expr_arguments::ptr > ()); } #line 3431 "parser.cpp" break; case 189: // expr_arguments: %empty -#line 726 "parser.ypp" +#line 727 "parser.ypp" { yylhs.value.as < ast::expr_arguments::ptr > () = std::make_unique(yylhs.location); } #line 3437 "parser.cpp" break; case 190: // expr_arguments_no_empty: expr_arguments "," expr -#line 731 "parser.ypp" +#line 732 "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 3443 "parser.cpp" break; case 191: // expr_arguments_no_empty: expr -#line 733 "parser.ypp" +#line 734 "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 3449 "parser.cpp" break; case 192: // expr_getnextarraykey: "getnextarraykey" "(" expr "," expr ")" -#line 738 "parser.ypp" +#line 739 "parser.ypp" { yylhs.value.as < ast::expr_getnextarraykey::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[3].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr > ())); } #line 3455 "parser.cpp" break; case 193: // expr_getfirstarraykey: "getfirstarraykey" "(" expr ")" -#line 743 "parser.ypp" +#line 744 "parser.ypp" { yylhs.value.as < ast::expr_getfirstarraykey::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } #line 3461 "parser.cpp" break; case 194: // expr_getdvarcoloralpha: "getdvarcoloralpha" "(" expr ")" -#line 748 "parser.ypp" +#line 749 "parser.ypp" { yylhs.value.as < ast::expr_getdvarcoloralpha::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } #line 3467 "parser.cpp" break; case 195: // expr_getdvarcolorblue: "getdvarcolorblue" "(" expr ")" -#line 753 "parser.ypp" +#line 754 "parser.ypp" { yylhs.value.as < ast::expr_getdvarcolorblue::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } #line 3473 "parser.cpp" break; case 196: // expr_getdvarcolorgreen: "getdvarcolorgreen" "(" expr ")" -#line 758 "parser.ypp" +#line 759 "parser.ypp" { yylhs.value.as < ast::expr_getdvarcolorgreen::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } #line 3479 "parser.cpp" break; case 197: // expr_getdvarcolorred: "getdvarcolorred" "(" expr ")" -#line 763 "parser.ypp" +#line 764 "parser.ypp" { yylhs.value.as < ast::expr_getdvarcolorred::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } #line 3485 "parser.cpp" break; case 198: // expr_getdvarvector: "getdvarvector" "(" expr ")" -#line 768 "parser.ypp" +#line 769 "parser.ypp" { yylhs.value.as < ast::expr_getdvarvector::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } #line 3491 "parser.cpp" break; case 199: // expr_getdvarfloat: "getdvarfloat" "(" expr ")" -#line 773 "parser.ypp" +#line 774 "parser.ypp" { yylhs.value.as < ast::expr_getdvarfloat::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } #line 3497 "parser.cpp" break; case 200: // expr_getdvarint: "getdvarint" "(" expr ")" -#line 778 "parser.ypp" +#line 779 "parser.ypp" { yylhs.value.as < ast::expr_getdvarint::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } #line 3503 "parser.cpp" break; case 201: // expr_getdvar: "getdvar" "(" expr ")" -#line 783 "parser.ypp" +#line 784 "parser.ypp" { yylhs.value.as < ast::expr_getdvar::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } #line 3509 "parser.cpp" break; case 202: // expr_gettime: "gettime" "(" ")" -#line 788 "parser.ypp" +#line 789 "parser.ypp" { yylhs.value.as < ast::expr_gettime::ptr > () = std::make_unique(yylhs.location); } #line 3515 "parser.cpp" break; case 203: // expr_abs: "abs" "(" expr ")" -#line 793 "parser.ypp" +#line 794 "parser.ypp" { yylhs.value.as < ast::expr_abs::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } #line 3521 "parser.cpp" break; case 204: // expr_vectortoangles: "vectortoangles" "(" expr ")" -#line 798 "parser.ypp" +#line 799 "parser.ypp" { yylhs.value.as < ast::expr_vectortoangles::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } #line 3527 "parser.cpp" break; case 205: // expr_angleclamp180: "angleclamp180" "(" expr ")" -#line 803 "parser.ypp" +#line 804 "parser.ypp" { yylhs.value.as < ast::expr_angleclamp180::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } #line 3533 "parser.cpp" break; case 206: // expr_anglestoforward: "anglestoforward" "(" expr ")" -#line 808 "parser.ypp" +#line 809 "parser.ypp" { yylhs.value.as < ast::expr_anglestoforward::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } #line 3539 "parser.cpp" break; case 207: // expr_anglestoright: "anglestoright" "(" expr ")" -#line 813 "parser.ypp" +#line 814 "parser.ypp" { yylhs.value.as < ast::expr_anglestoright::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } #line 3545 "parser.cpp" break; case 208: // expr_anglestoup: "anglestoup" "(" expr ")" -#line 818 "parser.ypp" +#line 819 "parser.ypp" { yylhs.value.as < ast::expr_anglestoup::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } #line 3551 "parser.cpp" break; case 209: // expr_vectorscale: "vectorscale" "(" expr "," expr ")" -#line 823 "parser.ypp" +#line 824 "parser.ypp" { yylhs.value.as < ast::expr_vectorscale::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[3].value.as < ast::expr > ()), std::move(yystack_[1].value.as < ast::expr > ())); } #line 3557 "parser.cpp" break; case 210: // expr_isdefined: "isdefined" "(" expr ")" -#line 828 "parser.ypp" +#line 829 "parser.ypp" { yylhs.value.as < ast::expr_isdefined::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } #line 3563 "parser.cpp" break; case 211: // expr_reference: "::" expr_identifier -#line 833 "parser.ypp" +#line 834 "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 3569 "parser.cpp" break; case 212: // expr_reference: expr_path "::" expr_identifier -#line 835 "parser.ypp" +#line 836 "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 3575 "parser.cpp" break; case 213: // expr_array: expr_object "[" expr "]" -#line 840 "parser.ypp" +#line 841 "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 3581 "parser.cpp" break; - case 214: // expr_field: expr_object "." expr_identifier -#line 845 "parser.ypp" + case 214: // expr_field: expr_object "." expr_identifier_nosize +#line 846 "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 3587 "parser.cpp" break; - case 215: // expr_field: expr_object "field" -#line 847 "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 > ())); } + case 215: // expr_size: expr_object "." "size" +#line 851 "parser.ypp" + { yylhs.value.as < ast::expr_size::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[2].value.as < ast::expr > ())); } #line 3593 "parser.cpp" break; - case 216: // expr_size: expr_object ".size" -#line 852 "parser.ypp" - { yylhs.value.as < ast::expr_size::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } + case 216: // expr_paren: "(" expr ")" +#line 856 "parser.ypp" + { yylhs.value.as < ast::expr_paren::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } #line 3599 "parser.cpp" break; - case 217: // expr_paren: "(" expr ")" -#line 857 "parser.ypp" - { yylhs.value.as < ast::expr_paren::ptr > () = std::make_unique(yylhs.location, std::move(yystack_[1].value.as < ast::expr > ())); } + case 217: // expr_object: expr_call +#line 860 "parser.ypp" + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_call::ptr > ()); } #line 3605 "parser.cpp" break; - case 218: // expr_object: expr_call + case 218: // expr_object: expr_method #line 861 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_call::ptr > ()); } + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_method::ptr > ()); } #line 3611 "parser.cpp" break; - case 219: // expr_object: expr_method + case 219: // expr_object: expr_array #line 862 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_method::ptr > ()); } + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_array::ptr > ()); } #line 3617 "parser.cpp" break; - case 220: // expr_object: expr_array + case 220: // expr_object: expr_field #line 863 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_array::ptr > ()); } + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_field::ptr > ()); } #line 3623 "parser.cpp" break; - case 221: // expr_object: expr_field + case 221: // expr_object: expr_game #line 864 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_field::ptr > ()); } + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_game::ptr > ()); } #line 3629 "parser.cpp" break; - case 222: // expr_object: expr_game + case 222: // expr_object: expr_self #line 865 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_game::ptr > ()); } + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_self::ptr > ()); } #line 3635 "parser.cpp" break; - case 223: // expr_object: expr_self + case 223: // expr_object: expr_anim #line 866 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_self::ptr > ()); } + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_anim::ptr > ()); } #line 3641 "parser.cpp" break; - case 224: // expr_object: expr_anim + case 224: // expr_object: expr_level #line 867 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_anim::ptr > ()); } + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_level::ptr > ()); } #line 3647 "parser.cpp" break; - case 225: // expr_object: expr_level + case 225: // expr_object: expr_identifier #line 868 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_level::ptr > ()); } + { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ()); } #line 3653 "parser.cpp" break; - case 226: // expr_object: expr_identifier -#line 869 "parser.ypp" - { yylhs.value.as < ast::expr > ().as_node = std::move(yystack_[0].value.as < ast::expr_identifier::ptr > ()); } + case 226: // expr_empty_array: "[" "]" +#line 873 "parser.ypp" + { yylhs.value.as < ast::expr_empty_array::ptr > () = std::make_unique(yylhs.location); } #line 3659 "parser.cpp" break; - case 227: // expr_empty_array: "[" "]" -#line 874 "parser.ypp" - { yylhs.value.as < ast::expr_empty_array::ptr > () = std::make_unique(yylhs.location); } + case 227: // expr_undefined: "undefined" +#line 878 "parser.ypp" + { yylhs.value.as < ast::expr_undefined::ptr > () = std::make_unique(yylhs.location); } #line 3665 "parser.cpp" break; - case 228: // expr_undefined: "undefined" -#line 879 "parser.ypp" - { yylhs.value.as < ast::expr_undefined::ptr > () = std::make_unique(yylhs.location); } + case 228: // expr_game: "game" +#line 883 "parser.ypp" + { yylhs.value.as < ast::expr_game::ptr > () = std::make_unique(yylhs.location); } #line 3671 "parser.cpp" break; - case 229: // expr_game: "game" -#line 884 "parser.ypp" - { yylhs.value.as < ast::expr_game::ptr > () = std::make_unique(yylhs.location); } + case 229: // expr_self: "self" +#line 888 "parser.ypp" + { yylhs.value.as < ast::expr_self::ptr > () = std::make_unique(yylhs.location); } #line 3677 "parser.cpp" break; - case 230: // expr_self: "self" -#line 889 "parser.ypp" - { yylhs.value.as < ast::expr_self::ptr > () = std::make_unique(yylhs.location); } + case 230: // expr_anim: "anim" +#line 893 "parser.ypp" + { yylhs.value.as < ast::expr_anim::ptr > () = std::make_unique(yylhs.location); } #line 3683 "parser.cpp" break; - case 231: // expr_anim: "anim" -#line 894 "parser.ypp" - { yylhs.value.as < ast::expr_anim::ptr > () = std::make_unique(yylhs.location); } + case 231: // expr_level: "level" +#line 898 "parser.ypp" + { yylhs.value.as < ast::expr_level::ptr > () = std::make_unique(yylhs.location); } #line 3689 "parser.cpp" break; - case 232: // expr_level: "level" -#line 899 "parser.ypp" - { yylhs.value.as < ast::expr_level::ptr > () = std::make_unique(yylhs.location); } + case 232: // expr_animation: "%" "identifier" +#line 903 "parser.ypp" + { yylhs.value.as < ast::expr_animation::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 3695 "parser.cpp" break; - case 233: // expr_animation: "%" "identifier" -#line 904 "parser.ypp" - { yylhs.value.as < ast::expr_animation::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 233: // expr_identifier_nosize: "identifier" +#line 908 "parser.ypp" + { yylhs.value.as < ast::expr_identifier::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 3701 "parser.cpp" break; case 234: // expr_identifier: "identifier" -#line 909 "parser.ypp" +#line 913 "parser.ypp" { yylhs.value.as < ast::expr_identifier::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 3707 "parser.cpp" break; - case 235: // expr_path: "path" -#line 914 "parser.ypp" - { yylhs.value.as < ast::expr_path::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 235: // expr_identifier: "size" +#line 915 "parser.ypp" + { yylhs.value.as < ast::expr_identifier::ptr > () = std::make_unique(yylhs.location, "size"); } #line 3713 "parser.cpp" break; - case 236: // expr_path: expr_identifier -#line 916 "parser.ypp" - { yylhs.value.as < ast::expr_path::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < ast::expr_identifier::ptr > ()->value); } + case 236: // expr_path: "identifier" +#line 920 "parser.ypp" + { yylhs.value.as < ast::expr_path::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 3719 "parser.cpp" break; - case 237: // expr_istring: "localized string" -#line 921 "parser.ypp" - { yylhs.value.as < ast::expr_istring::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 237: // expr_path: "path" +#line 922 "parser.ypp" + { yylhs.value.as < ast::expr_path::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 3725 "parser.cpp" break; - case 238: // expr_string: "string literal" -#line 926 "parser.ypp" - { yylhs.value.as < ast::expr_string::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 238: // expr_istring: "localized string" +#line 927 "parser.ypp" + { yylhs.value.as < ast::expr_istring::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 3731 "parser.cpp" break; - case 239: // expr_vector: "(" expr "," expr "," expr ")" -#line 931 "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 > ())); } + case 239: // expr_string: "string literal" +#line 932 "parser.ypp" + { yylhs.value.as < ast::expr_string::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 3737 "parser.cpp" break; - case 240: // expr_hash: "hash" -#line 936 "parser.ypp" - { yylhs.value.as < ast::expr_hash::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 240: // expr_vector: "(" expr "," expr "," expr ")" +#line 937 "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 3743 "parser.cpp" break; - case 241: // expr_float: "-" "float" -#line 941 "parser.ypp" - { yylhs.value.as < ast::expr_float::ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } + case 241: // expr_hash: "hash" +#line 942 "parser.ypp" + { yylhs.value.as < ast::expr_hash::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 3749 "parser.cpp" break; - case 242: // expr_float: "float" -#line 943 "parser.ypp" - { yylhs.value.as < ast::expr_float::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 242: // expr_float: "-" "float" +#line 947 "parser.ypp" + { yylhs.value.as < ast::expr_float::ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } #line 3755 "parser.cpp" break; - case 243: // expr_integer: "-" "integer" -#line 948 "parser.ypp" - { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } + case 243: // expr_float: "float" +#line 949 "parser.ypp" + { yylhs.value.as < ast::expr_float::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 3761 "parser.cpp" break; - case 244: // expr_integer: "integer" -#line 950 "parser.ypp" - { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 244: // expr_integer: "-" "integer" +#line 954 "parser.ypp" + { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } #line 3767 "parser.cpp" break; - case 245: // expr_false: "false" -#line 955 "parser.ypp" - { yylhs.value.as < ast::expr_false::ptr > () = std::make_unique(yylhs.location); } + case 245: // expr_integer: "integer" +#line 956 "parser.ypp" + { yylhs.value.as < ast::expr_integer::ptr > () = std::make_unique(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 3773 "parser.cpp" break; - case 246: // expr_true: "true" -#line 960 "parser.ypp" - { yylhs.value.as < ast::expr_true::ptr > () = std::make_unique(yylhs.location); } + case 246: // expr_false: "false" +#line 961 "parser.ypp" + { yylhs.value.as < ast::expr_false::ptr > () = std::make_unique(yylhs.location); } #line 3779 "parser.cpp" break; + case 247: // expr_true: "true" +#line 966 "parser.ypp" + { yylhs.value.as < ast::expr_true::ptr > () = std::make_unique(yylhs.location); } +#line 3785 "parser.cpp" + break; -#line 3783 "parser.cpp" + +#line 3789 "parser.cpp" default: break; @@ -3969,7 +3975,7 @@ namespace xsk { namespace arc { namespace t6 { "waittillmatch", "waittillframeend", "if", "else", "do", "while", "for", "foreach", "in", "switch", "case", "default", "break", "continue", "return", "breakpoint", "prof_begin", "prof_end", "thread", "true", - "false", "undefined", ".size", "game", "self", "anim", "level", + "false", "undefined", "size", "game", "self", "anim", "level", "getnextarraykey", "getfirstarraykey", "getdvarcoloralpha", "getdvarcolorblue", "getdvarcolorgreen", "getdvarcolorred", "getdvarvector", "getdvarfloat", "getdvarint", "getdvar", "gettime", @@ -3978,10 +3984,10 @@ namespace xsk { namespace arc { namespace t6 { "}", "[", "]", ",", ".", "::", ":", ";", "?", "++", "--", "<<", ">>", "||", "&&", "==", "!=", "<=", ">=", "<", ">", "!", "~", "=", "+=", "-=", "*=", "/=", "%=", "|=", "&=", "^=", ">>=", "<<=", "|", "&", "^", "+", - "-", "*", "/", "%", "field", "path", "identifier", "string literal", - "localized string", "hash", "float", "integer", "THEN", "TERN", "NEG", - "ANIMREF", "PREINC", "PREDEC", "POSTINC", "POSTDEC", "$accept", "root", - "program", "inline", "include", "declaration", "decl_usingtree", + "-", "*", "/", "%", "path", "identifier", "string literal", + "localized string", "hash", "float", "integer", "SIZEOF", "THEN", "TERN", + "NEG", "ANIMREF", "PREINC", "PREDEC", "POSTINC", "POSTDEC", "$accept", + "root", "program", "inline", "include", "declaration", "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", @@ -4003,9 +4009,9 @@ namespace xsk { namespace arc { namespace t6 { "expr_isdefined", "expr_reference", "expr_array", "expr_field", "expr_size", "expr_paren", "expr_object", "expr_empty_array", "expr_undefined", "expr_game", "expr_self", "expr_anim", "expr_level", - "expr_animation", "expr_identifier", "expr_path", "expr_istring", - "expr_string", "expr_vector", "expr_hash", "expr_float", "expr_integer", - "expr_false", "expr_true", YY_NULLPTR + "expr_animation", "expr_identifier_nosize", "expr_identifier", + "expr_path", "expr_istring", "expr_string", "expr_vector", "expr_hash", + "expr_float", "expr_integer", "expr_false", "expr_true", YY_NULLPTR }; return yy_sname[yysymbol]; } @@ -4270,777 +4276,790 @@ namespace xsk { namespace arc { namespace t6 { } - const short parser::yypact_ninf_ = -446; + const short parser::yypact_ninf_ = -422; const short parser::yytable_ninf_ = -237; const short parser::yypact_[] = { - 15, -446, -446, -65, -65, -49, -446, 21, 15, -446, - -446, -446, -446, -446, -446, -50, -446, -446, -42, -32, - -58, -446, -446, -446, -446, -37, 1203, -446, -446, -446, - 12, -12, -446, -27, -446, -446, -446, -446, -446, -446, - -446, 16, 22, 24, 33, 34, 43, 51, 70, 73, - 80, 81, 87, 89, 93, 96, 100, 104, 106, 114, - 1203, -2, -37, 1203, 1203, 46, 69, -446, -446, -446, - -446, 2544, -446, -446, -446, -446, -446, 45, 167, -446, - -446, -446, -446, -446, -446, -446, -446, -446, -446, -446, - -446, -446, -446, -446, -446, -446, -446, -446, -446, -446, - -446, 336, 384, -446, -446, 391, -446, -446, 531, 537, - 731, 905, -446, 95, 38, -446, -446, -446, -446, -446, - -446, -446, -446, 105, 115, -37, 117, 119, 118, 1203, - 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 122, - 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1300, 1203, - -446, -446, -446, -446, -446, -446, -446, -446, 1203, 1203, - 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, - 1203, 1203, 1203, 1203, 1203, 1203, 1203, -446, 1284, -37, - -446, -446, -446, 125, 120, 1203, -37, -446, 750, -446, - -446, 1203, 1203, -37, 2395, 1466, 1500, 1534, 1568, 1602, - 1636, 1670, 1704, 1738, -446, 1772, 1806, 1840, 1874, 1908, - 1942, 2434, 1976, -446, 1203, 1037, 2509, 220, 220, 2658, - 966, 950, 950, 68, 68, 68, 68, 2668, 2709, 2699, - 42, 42, -446, -446, -446, 1041, 1199, -446, -37, 2627, - -9, -446, 129, 872, 1203, 123, 132, 965, 138, 144, - 145, 147, -83, 139, 140, 142, 1122, 146, 154, 157, - -446, 155, 7, 7, -446, -446, 843, -446, -446, -446, - -446, -446, -446, -446, -446, -446, -446, -446, -446, -446, - -446, -446, -446, -446, -446, -446, -446, -446, -446, -446, - -446, -446, 148, 151, 152, 153, 156, -446, -446, 567, - -446, -446, -446, -446, -20, 2356, -1, 165, 1203, -446, - -446, -446, -446, -446, -446, -446, -446, -446, -446, -446, - -446, -446, -446, -446, 1203, -446, 2473, 162, 1203, -446, - 129, -446, 1203, 1203, -446, -446, 936, 2579, -446, 1203, - 210, 1203, -6, -37, 1203, 124, 166, 169, -446, -446, - -446, -446, 2614, -446, 1203, 1203, -446, -446, 19, 19, - -446, -446, -446, -446, -446, -446, -446, 182, 184, 187, - 190, -446, -446, 1203, 1203, 1203, 1203, 1203, 1203, 1203, - 1203, 1203, 1203, 1203, 186, -446, 1203, 2010, 2044, 1203, - 198, 2627, 2627, 3, -446, -446, -446, 2078, 202, 2112, - 193, -446, -446, -446, 633, -13, 2146, -446, -446, -446, - 29, 31, 1203, 1203, 1203, 1203, 2627, 2627, 2627, 2627, - 2627, 2627, 2627, 2627, 2627, 2627, 2627, 206, 49, -446, - -446, 2180, 1203, -446, 965, 1203, 965, 1203, 1203, -37, - 115, 197, 199, 2214, 1344, 1388, 1432, 1203, -446, -446, - 62, 258, 2248, -446, 2627, 207, 2282, 257, -446, -446, - -446, 211, 213, 1203, 216, 1203, 217, 1203, 71, -446, - 965, 218, -6, 965, 1203, -446, -446, 214, 229, -446, - 231, -446, 233, -446, -446, -446, 235, -446, 2316, 232, - 236, 240, 965, 965, -446, -446, -446, -446, -446 + 2, -422, -422, -53, -53, -58, -422, -422, 19, 2, + -422, -422, -422, -422, -422, -422, -56, -422, -422, -38, + -35, -90, -422, -422, -422, -422, -17, 1242, -422, -422, + -422, -6, -40, -422, -18, -422, -422, -422, -422, -422, + -422, -422, -12, -1, 1, 3, 18, 24, 43, 45, + 62, 64, 67, 68, 75, 76, 80, 81, 83, 84, + 88, 1242, 5, -17, 1242, 1242, -14, 44, 46, -422, + -422, -422, -422, 2588, -422, -422, -422, -422, -422, 40, + 171, -422, -422, -422, -422, -422, -422, -422, -422, -422, + -422, -422, -422, -422, -422, -422, -422, -422, -422, -422, + -422, -422, -422, 260, 343, -422, -422, 348, -422, -422, + 396, 463, 521, 530, -422, -20, 86, -422, -422, -422, + -422, -422, -422, -422, -422, 79, 90, -17, 96, 101, + 94, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, + 1242, 102, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, + 700, 1242, -422, -422, -422, -422, -422, -422, -422, -422, + 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, + 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1322, + -13, -422, -422, 105, 98, 1242, -17, -422, 800, -422, + -422, 1242, 1242, -17, 2439, 1510, 1544, 1578, 1612, 1646, + 1680, 1714, 1748, 1782, -422, 1816, 1850, 1884, 1918, 1952, + 1986, 2478, 2020, -422, 1242, 1078, 2553, 241, 241, 2702, + 2712, 1153, 1153, 152, 152, 152, 152, 2743, 2753, 584, + -22, -22, -422, -422, -422, 1082, 1238, -422, -422, -422, + -17, 2671, -32, -422, 108, 921, 1242, 99, 113, 1039, + 115, 116, 117, 121, -74, 110, 114, 118, 1162, 123, + 125, 126, -422, 133, 28, 28, -422, -422, 862, -422, + -422, -422, -422, -422, -422, -422, -422, -422, -422, -422, + -422, -422, -422, -422, -422, -422, -422, -422, -422, -422, + -422, -422, -422, -422, 130, 131, 132, 136, 138, -422, + -422, 637, -422, -422, -422, -422, 105, 2400, -16, 129, + 1242, -422, -422, -422, -422, -422, -422, -422, -422, -422, + -422, -422, -422, -422, -422, -422, 1242, -422, 2517, 139, + 1242, -422, 108, -422, 1242, 1242, -422, -422, 980, 2623, + -422, 1242, 191, 1242, 119, -17, 1242, 100, 146, 147, + -422, -422, -422, -422, 2658, -422, 1242, 1242, -422, -422, + 538, 538, -422, -422, -422, -422, -422, -422, -422, 160, + 161, 162, 163, 124, -422, -422, 1242, 1242, 1242, 1242, + 1242, 1242, 1242, 1242, 1242, 1242, 1242, 166, -422, 1242, + 2054, 2088, 1242, 172, 2671, 2671, -10, -422, -422, -422, + 2122, 173, 2156, 167, -422, -422, -422, 1352, -24, 2190, + -422, -422, -422, 34, 50, 1242, 1242, 1242, 1242, 2671, + 2671, 2671, 2671, 2671, 2671, 2671, 2671, 2671, 2671, 2671, + 176, 51, -422, -422, 2224, 1242, -422, 1039, 1242, 1039, + 1242, 1242, -17, 90, 170, 174, 2258, 1388, 1432, 1476, + 1242, -422, -422, 52, 224, 2292, -422, 2671, 175, 2326, + 220, -422, -422, -422, 179, 180, 1242, 187, 1242, 194, + 1242, 54, -422, 1039, 202, 119, 1039, 1242, -422, -422, + 195, 214, -422, 219, -422, 225, -422, -422, -422, 227, + -422, 2360, 211, 213, 221, 1039, 1039, -422, -422, -422, + -422, -422 }; const unsigned char parser::yydefact_[] = { - 3, 12, 13, 0, 0, 0, 234, 0, 2, 7, - 8, 9, 14, 15, 16, 0, 235, 236, 0, 0, - 0, 1, 4, 5, 6, 187, 0, 10, 11, 238, - 0, 0, 186, 0, 246, 245, 228, 229, 230, 231, - 232, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3, 12, 13, 0, 0, 0, 235, 234, 0, 2, + 7, 8, 9, 14, 15, 16, 0, 237, 236, 0, + 0, 0, 1, 4, 5, 6, 187, 0, 10, 11, + 239, 0, 0, 186, 0, 247, 246, 227, 228, 229, + 230, 231, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 237, 240, 242, - 244, 0, 90, 91, 92, 129, 130, 131, 132, 175, - 176, 133, 134, 135, 136, 137, 138, 139, 140, 141, - 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, - 152, 153, 154, 155, 156, 0, 157, 158, 159, 160, - 161, 162, 163, 164, 0, 165, 166, 167, 168, 169, - 170, 171, 172, 0, 0, 0, 0, 236, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 234, 238, + 241, 243, 245, 0, 90, 91, 92, 129, 130, 131, + 132, 175, 176, 133, 134, 135, 136, 137, 138, 139, + 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, + 150, 151, 152, 153, 154, 155, 156, 0, 157, 158, + 159, 160, 161, 162, 163, 164, 0, 165, 166, 167, + 168, 169, 170, 171, 172, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 227, 211, 174, 173, 241, 243, 233, 18, 0, 0, + 0, 0, 226, 211, 174, 173, 242, 244, 232, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 216, 0, 0, - 215, 177, 178, 236, 0, 189, 0, 17, 0, 19, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 177, 178, 0, 0, 189, 0, 17, 0, 19, 185, 0, 189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 202, 0, 0, 0, 0, 0, - 0, 0, 0, 217, 0, 0, 0, 122, 123, 111, + 0, 0, 0, 216, 0, 0, 0, 122, 123, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 124, 125, 126, 127, 128, 0, 0, 214, 0, 191, - 0, 188, 212, 0, 0, 0, 0, 0, 0, 0, + 124, 125, 126, 127, 128, 0, 0, 215, 233, 214, + 0, 191, 0, 188, 212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 218, 219, 220, 221, 0, - 222, 223, 224, 225, 226, 0, 0, 0, 0, 193, - 194, 195, 196, 197, 198, 199, 200, 201, 203, 204, - 205, 206, 207, 208, 0, 210, 0, 0, 0, 213, - 0, 179, 0, 189, 51, 47, 0, 0, 71, 0, - 0, 0, 57, 0, 0, 0, 0, 0, 82, 83, - 84, 86, 0, 87, 189, 189, 218, 219, 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, 181, 189, 0, 0, 0, - 0, 110, 190, 0, 50, 46, 66, 0, 0, 0, - 0, 54, 55, 56, 0, 0, 0, 81, 80, 85, - 0, 0, 0, 0, 0, 0, 95, 101, 102, 103, - 104, 105, 96, 97, 98, 100, 99, 0, 0, 192, - 209, 0, 189, 180, 0, 0, 0, 94, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 189, 182, 239, - 0, 72, 0, 74, 93, 0, 0, 0, 79, 88, - 89, 0, 0, 189, 0, 189, 0, 189, 0, 183, - 0, 0, 57, 0, 0, 63, 65, 0, 188, 68, - 188, 70, 188, 184, 73, 75, 0, 77, 0, 0, - 0, 0, 0, 0, 64, 67, 69, 76, 78 + 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, 217, 218, 219, + 220, 0, 221, 222, 223, 224, 225, 0, 0, 0, + 0, 193, 194, 195, 196, 197, 198, 199, 200, 201, + 203, 204, 205, 206, 207, 208, 0, 210, 0, 0, + 0, 213, 0, 179, 0, 189, 51, 47, 0, 0, + 71, 0, 0, 0, 57, 0, 0, 0, 0, 0, + 82, 83, 84, 86, 0, 87, 189, 189, 217, 218, + 106, 108, 52, 48, 60, 61, 62, 58, 59, 0, + 0, 0, 0, 0, 107, 109, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 181, 189, + 0, 0, 0, 0, 110, 190, 0, 50, 46, 66, + 0, 0, 0, 0, 54, 55, 56, 0, 0, 0, + 81, 80, 85, 0, 0, 0, 0, 0, 0, 95, + 101, 102, 103, 104, 105, 96, 97, 98, 100, 99, + 0, 0, 192, 209, 0, 189, 180, 0, 0, 0, + 94, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 189, 182, 240, 0, 72, 0, 74, 93, 0, 0, + 0, 79, 88, 89, 0, 0, 189, 0, 189, 0, + 189, 0, 183, 0, 0, 57, 0, 0, 63, 65, + 0, 188, 68, 188, 70, 188, 184, 73, 75, 0, + 77, 0, 0, 0, 0, 0, 0, 64, 67, 69, + 76, 78 }; const short parser::yypgoto_[] = { - -446, -446, -446, 297, 301, 324, -446, -446, -446, -234, - 72, -446, -446, -446, -123, -137, -446, -446, -446, -446, - -446, -446, -446, -446, -446, -446, -446, -446, -446, -446, - -446, -446, -446, -446, -446, -446, -446, -446, -446, 377, - -446, -337, -332, -328, -446, -446, -446, -446, -446, -182, - -169, -98, -82, -446, 27, -445, -446, -446, -446, -446, - -446, -446, -446, -446, -446, -446, -446, -446, -446, -446, - -446, -446, -446, -446, -446, -446, -152, -139, -446, -446, - -121, -446, -446, -17, 126, 222, 366, -446, 0, 8, - -446, -18, -446, -446, -446, 85, -446, -446 + -422, -422, -422, 287, 291, 294, -422, -422, -422, -72, + 55, -422, -422, -422, -125, -163, -422, -422, -422, -422, + -422, -422, -422, -422, -422, -422, -422, -422, -422, -422, + -422, -422, -422, -422, -422, -422, -422, -422, -422, 379, + -422, -339, -338, -337, -422, -422, -422, -422, -422, -185, + -168, -86, -76, -422, -155, -421, -422, -422, -422, -422, + -422, -422, -422, -422, -422, -422, -422, -422, -422, -422, + -422, -422, -422, -422, -422, -422, -160, -133, -422, -422, + -120, -422, -422, -45, 134, 144, 222, -422, -422, 0, + 8, -422, -19, -422, -422, -422, 60, -422, -422 }; const short parser::yydefgoto_[] = { - 0, 7, 8, 9, 10, 11, 12, 13, 14, 264, - 265, 336, 266, 267, 268, 400, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, - 283, 284, 285, 286, 287, 288, 289, 290, 291, 239, - 455, 292, 293, 294, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 31, 477, 241, 81, 82, 83, 84, - 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 117, 118, 119, 120, 121, 122 + 0, 8, 9, 10, 11, 12, 13, 14, 15, 266, + 267, 338, 268, 269, 270, 403, 271, 272, 273, 274, + 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, 288, 289, 290, 291, 292, 293, 241, + 458, 294, 295, 296, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 32, 480, 243, 83, 84, 85, 86, + 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 239, 115, + 116, 117, 118, 119, 120, 121, 122, 123, 124 }; const short parser::yytable_[] = { - 15, 189, 30, 17, 17, 401, 295, 181, 15, 335, - 402, 18, 19, 340, 403, 438, 25, 20, 478, 296, - 480, 21, 482, 182, 345, 32, 1, 2, 3, 4, - 5, 29, 33, 127, 27, 70, 297, 37, 38, 39, - 40, 128, 26, 126, 28, 33, 185, 16, 6, 298, - 37, 38, 39, 40, -236, 124, 29, 33, 331, 439, - 125, 295, 151, 332, 261, 295, 385, 299, 149, 150, - 433, 332, 262, 263, 296, 332, 6, 261, 296, 123, - 356, 356, 129, -218, 295, 16, 6, -218, 130, 178, - 131, 297, 179, 357, 357, 297, 441, 296, 442, 132, - 133, 332, 395, 332, 298, 183, 16, 6, 298, 134, - 297, 297, 186, 184, 297, -218, 448, 135, -218, 16, - 6, 332, 299, 298, 298, 190, 299, 298, 6, 469, - 180, 16, 6, -226, 332, 401, 136, -226, 483, 137, - 402, 358, 359, 332, 403, 299, 138, 139, 159, 160, - 174, 175, 176, 140, 295, 141, -218, -218, -218, 142, - 356, 185, 143, 154, 155, -226, 144, 296, -226, -236, - 145, 300, 146, 357, 172, 173, 174, 175, 176, 237, - 147, 187, 156, 188, 297, 192, 242, 191, 304, 204, - 297, 185, 193, 307, 238, 333, 184, 298, 339, 338, - 451, 181, 453, 298, 341, -219, -226, -226, -226, -219, - 342, 343, 240, 344, 348, 299, 349, 182, 350, 306, - 354, 404, 353, 355, 362, 149, 300, 363, 364, 365, - 300, 386, 366, 390, 346, 398, 484, -219, 330, 487, - -219, 407, 155, 304, 408, 300, 300, 304, 412, 300, - 413, 184, 295, 414, 295, 184, 415, 427, 497, 498, - 181, 181, 304, 304, 432, 296, 304, 296, 435, 437, - 184, 184, 447, 459, 184, 460, 182, 182, -219, -219, - -219, 470, 297, 472, 297, 474, 332, 475, 295, 476, - 356, 295, 479, 481, 485, 298, 489, 298, 490, 183, - 491, 296, 492, 357, 296, 22, 181, 184, 494, 23, - 295, 295, 495, 299, 301, 299, 496, 458, 297, 300, - 297, 297, 182, 296, 296, 300, 172, 173, 174, 175, - 176, 298, 24, 298, 298, 486, 304, 347, 361, 0, - 297, 297, 304, 405, 184, 0, 0, 0, 0, 299, - 184, 404, 299, 298, 298, 0, 0, 0, 183, 183, - 393, 0, 0, 0, 0, 0, 184, 184, 0, 301, - 0, 299, 299, 301, -220, 0, 0, 0, -220, 0, - 0, 410, 411, 0, 0, 0, 0, 0, 301, 301, - 0, 0, 301, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 71, 183, 0, -220, 0, 0, -220, - 302, 0, 184, 428, 0, 0, 0, 300, 0, 300, - 0, 0, -221, 0, 0, 0, -221, 0, 0, 33, - 0, 0, 0, 177, 304, 0, 304, 148, 0, 457, - 152, 153, 184, 0, 184, 0, 0, -220, -220, -220, - 0, 0, 0, 300, -221, 300, 300, -221, 0, 450, - 0, 178, 301, 0, 179, 302, 0, 0, 301, 302, - 304, 0, 304, 304, 468, 300, 300, 0, 184, 0, - 184, 184, 0, 0, 302, 302, 0, 0, 302, 0, - 0, 0, 304, 304, 0, -221, -221, -221, 0, 0, - 184, 184, 180, 16, 6, 0, 194, 195, 196, 197, - 198, 199, 200, 201, 202, 203, 0, 205, 206, 207, - 208, 209, 210, 211, 212, 0, 215, 0, 0, 0, - 0, 0, 0, 0, 0, 216, 217, 218, 219, 220, - 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, - 231, 232, 233, 234, 303, 236, 0, 0, 302, 0, - 301, 0, 301, 0, 302, 0, 0, 0, 305, -222, - 0, 0, 0, -222, 0, -223, 0, 0, 0, -223, - 0, 0, 0, 367, 368, 0, 369, 370, 0, 0, - 0, 326, 0, 0, 0, 0, 301, 0, 301, 301, - 0, -222, 0, 0, -222, 33, 0, -223, 0, 303, - -223, 0, 215, 303, 0, 0, 0, 0, 301, 301, - 0, 337, 0, 0, 0, 0, 0, 0, 303, 303, - 0, 0, 303, 352, 0, 0, 0, 178, 0, 0, - 179, 0, -222, -222, -222, 371, 372, 0, -223, -223, - -223, 0, 0, 0, 0, 0, 302, 0, 302, 373, - 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, - 0, 33, 0, 0, 0, 0, 0, 0, 180, 16, - 6, 0, 0, 0, 0, 387, 0, 0, 0, 0, - 0, 0, 302, 0, 302, 302, 0, 0, 0, 0, - 0, 388, 303, 178, 0, 391, 179, 0, 303, 392, - 0, 371, 372, 0, 302, 302, 397, 0, 399, 0, - 0, 406, 0, 0, 0, 373, 374, 375, 376, 377, - 378, 379, 380, 381, 382, 383, 0, 0, 0, 0, - 0, 0, 0, 0, 180, 16, 6, 0, 0, 0, - 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, - 426, 243, 0, 0, 0, 0, 431, 0, 244, -224, - 0, 245, 246, -224, 247, 248, 249, 250, 0, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 33, 443, - 444, 445, 446, 37, 38, 39, 40, 0, 0, 0, - 303, -224, 303, 0, -224, 0, 0, 0, 0, 0, - 0, 0, 452, 0, 454, 456, 0, 0, 188, 260, - 261, 0, 0, 0, 0, 0, 0, 0, 262, 263, - 0, 0, 0, 0, 0, 0, 303, 0, 303, 303, - 0, 0, -224, -224, -224, 0, 0, 0, 0, 0, - 0, 488, 0, 0, 243, 0, 0, 0, 303, 303, - 0, 244, 16, 6, 245, 246, 0, 247, 248, 249, - 250, 0, 251, 252, 253, 254, 255, 256, 257, 258, - 259, 33, 0, 0, 334, 0, 37, 38, 39, 40, - 244, 0, 0, 245, 246, 0, 247, 248, 249, 250, - 0, 251, 252, 253, 254, 255, 256, 257, 258, 259, - 33, 188, 360, 261, 0, 37, 38, 39, 40, 0, - 0, 262, 263, 0, 0, 0, 0, 0, 0, 0, + 16, 189, 31, 297, 441, 404, 405, 406, 21, 16, + 26, 19, 20, 1, 2, 3, 4, 5, -225, 22, + 298, 181, -225, 30, 6, 6, 33, 126, 299, 237, + 242, 182, 127, 347, 129, 333, 27, 308, 28, 30, + 334, 29, 130, 72, 6, 481, 185, 483, 442, 485, + -225, 388, 128, -225, 131, 300, 334, 436, 17, 18, + 297, 125, 334, 153, 297, 132, 34, 133, 301, 134, + 6, 38, 39, 40, 41, 151, 152, 298, -217, 358, + 358, 298, -217, 297, 135, 299, 176, 177, 178, 299, + 136, -225, -225, 17, 68, 7, 359, 359, 263, 238, + 298, 444, 156, 157, 299, 299, 334, 183, 299, 137, + -217, 138, 300, -217, 7, 184, 300, 445, 451, 472, + -236, 486, 334, 334, 334, 301, 334, 190, 139, 301, + 140, 300, 300, 141, 142, 300, 404, 405, 406, 17, + 68, 143, 144, 302, 360, 361, 145, 146, 301, 147, + 148, -217, -217, 297, 149, 187, 158, 34, 188, 358, + 186, 6, 38, 39, 40, 41, 191, 192, 193, 204, + 298, 185, 240, 337, 335, 340, 359, 342, 299, 341, + 396, 343, 344, 345, 299, 350, 244, 346, 306, 263, + 351, 356, 357, 309, 352, 389, 184, 264, 265, 355, + 302, 413, 414, 151, 302, 300, 364, 365, 366, -218, + 393, 300, 367, -218, 368, 181, 401, 157, 301, 302, + 302, 410, 411, 302, 407, 182, 415, 416, 417, 418, + 17, 68, 161, 162, 431, 348, 238, 430, 435, 438, + 332, -218, 450, 440, -218, 306, 462, 473, 477, 306, + 463, 475, 297, 184, 297, 478, 479, 184, 174, 175, + 176, 177, 178, 482, 306, 306, 398, 334, 306, 298, + 484, 298, 184, 184, 181, 181, 184, 299, 488, 299, + 453, 492, -218, -218, 182, 182, 493, 497, 297, 498, + 358, 297, 494, 302, 495, 471, 23, 499, -219, 302, + 24, 183, -219, 25, 300, 298, 300, 359, 298, 184, + 297, 297, 489, 299, 349, 299, 299, 301, 461, 301, + 0, 181, 303, 363, 0, 0, 0, 298, 298, 0, + -219, 182, 304, -219, 0, 299, 299, 0, 306, 0, + 300, 0, 300, 300, 306, 408, 184, 174, 175, 176, + 177, 178, 184, 301, 0, 407, 301, 0, 0, 0, + 183, 183, 300, 300, 0, 454, 0, 456, 184, 184, + 0, -219, -219, 0, 0, 301, 301, 0, 0, 303, + 0, -220, 0, 303, 0, -220, 34, 0, 0, 304, + 6, 0, 302, 304, 302, 0, 0, 0, 303, 303, + 0, 487, 303, 0, 490, 0, 73, 183, 304, 304, + 305, 0, 304, -220, 0, 184, -220, 0, 179, 0, + 0, 180, 0, 500, 501, 0, 0, 0, 302, 0, + 302, 302, 0, 0, -221, 0, 0, 306, -221, 306, + 150, 0, 460, 154, 155, 184, 0, 184, 0, 0, + 302, 302, 0, 0, -220, -220, 0, 0, 0, 17, + 68, 0, 0, 0, 0, 0, -221, 305, 0, -221, + 0, 305, 303, 306, 0, 306, 306, 0, 303, 0, + 0, 184, 304, 184, 184, 0, 305, 305, 304, 0, + 305, 0, 0, 0, 0, 306, 306, 0, 0, 0, + 0, -222, 0, 184, 184, -222, 0, -221, -221, 0, + 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, + 0, 205, 206, 207, 208, 209, 210, 211, 212, 0, + 215, 0, 0, -222, 0, 0, -222, 0, 0, 216, + 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, + 227, 228, 229, 230, 231, 232, 233, 234, 236, -223, + 305, 0, 0, -223, 0, 0, 305, 0, -224, 0, + 307, 303, -224, 303, -222, -222, 34, 0, 0, 0, + 6, 304, 0, 304, 0, 0, 0, 0, 0, 0, + 0, -223, 0, 328, -223, 0, 0, 0, 0, 0, + -224, 0, 0, -224, 0, 0, 0, 303, 179, 303, + 303, 373, 0, 0, 215, 0, 0, 304, 0, 304, + 304, 0, 0, 0, 0, 339, 0, 0, 0, 303, + 303, 0, -223, -223, 0, 0, 0, 354, 0, 304, + 304, -224, -224, 0, 0, 0, 0, 0, 0, 17, + 68, 0, 0, 369, 370, 0, 371, 372, 0, 305, + 0, 305, 0, 0, 161, 162, 0, 0, 165, 166, + 167, 168, 169, 170, 0, 34, 0, 0, 0, 6, + 0, 0, 0, 0, 0, 0, 0, 0, 172, 390, + 174, 175, 176, 177, 178, 305, 0, 305, 305, 0, + 0, 0, 0, 0, 0, 391, 0, 179, 0, 394, + 373, 0, 0, 395, 0, 374, 375, 305, 305, 0, + 400, 0, 402, 0, 0, 409, 0, 0, 0, 376, + 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, + 0, 0, 0, 0, 0, 0, 0, 0, 17, 68, + 0, 0, 0, 0, 0, 419, 420, 421, 422, 423, + 424, 425, 426, 427, 428, 429, 0, 213, 0, 0, + 0, 434, 214, 0, 0, 0, 0, 160, 0, 0, + 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, + 0, 0, 0, 0, 446, 447, 448, 449, 0, 0, + 0, 0, 0, 171, 172, 173, 174, 175, 176, 177, + 178, 245, 0, 0, 0, 0, 0, 455, 246, 457, + 459, 247, 248, 0, 249, 250, 251, 252, 0, 253, + 254, 255, 256, 257, 258, 259, 260, 261, 34, 0, + 0, 0, 6, 38, 39, 40, 41, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 491, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 188, 262, + 263, 0, 0, 245, 0, 0, 0, 0, 264, 265, + 246, 0, 0, 247, 248, 0, 249, 250, 251, 252, + 0, 253, 254, 255, 256, 257, 258, 259, 260, 261, + 34, 0, 0, 0, 6, 38, 39, 40, 41, 0, + 0, 17, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 188, 0, 261, -225, 0, 0, 0, -225, 394, 0, - 262, 263, 0, 0, 244, 16, 6, 245, 246, 0, - 247, 248, 249, 250, 0, 251, 252, 253, 254, 255, - 256, 257, 258, 259, 33, -225, 0, 0, -225, 37, - 38, 39, 40, 244, 16, 6, 245, 246, 0, 247, - 248, 249, 250, 0, 251, 252, 253, 254, 255, 256, - 257, 258, 259, 33, 188, 0, 261, 0, 37, 38, - 39, 40, 0, 0, 262, 263, -225, -225, -225, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 159, 160, 0, 188, 0, 261, 165, 166, 167, 168, - 0, 0, 0, 262, 263, 0, 159, 160, 16, 6, - 163, 164, 165, 166, 167, 168, 172, 173, 174, 175, - 176, 0, 0, 0, 0, 0, 0, 0, 0, 169, - 170, 171, 172, 173, 174, 175, 176, 16, 6, 33, - 34, 35, 36, 0, 37, 38, 39, 40, 41, 42, + 188, 362, 263, 336, 0, 0, 0, 0, 0, 246, + 264, 265, 247, 248, 0, 249, 250, 251, 252, 0, + 253, 254, 255, 256, 257, 258, 259, 260, 261, 34, + 0, 0, 0, 6, 38, 39, 40, 41, 0, 0, + 0, 0, 0, 17, 68, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 188, + 0, 263, 397, 0, 0, 0, 0, 0, 246, 264, + 265, 247, 248, 0, 249, 250, 251, 252, 0, 253, + 254, 255, 256, 257, 258, 259, 260, 261, 34, 0, + 0, 0, 6, 38, 39, 40, 41, 0, 0, 0, + 0, 0, 17, 68, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 188, 0, + 263, 0, 0, 0, 0, 0, 0, 246, 264, 265, + 247, 248, 0, 249, 250, 251, 252, 0, 253, 254, + 255, 256, 257, 258, 259, 260, 261, 34, 0, 0, + 0, 6, 38, 39, 40, 41, 0, 0, 0, 0, + 0, 17, 68, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 188, 0, 263, + 0, 0, 0, 0, 0, 0, 0, 264, 265, 0, + 34, 35, 36, 37, 6, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 327, 0, - 0, 235, 150, 0, 158, 62, 0, 159, 160, 161, - 162, 163, 164, 165, 166, 167, 168, 0, 0, 0, - 0, 63, 64, 0, 0, 0, 0, 0, 0, 0, - 169, 170, 171, 172, 173, 174, 175, 176, 65, 0, - 0, 66, 0, 16, 6, 29, 67, 68, 69, 70, - 33, 34, 35, 36, 0, 37, 38, 39, 40, 41, - 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 0, - 0, 0, 61, 0, 0, 0, 62, 0, 351, 0, + 53, 54, 55, 56, 57, 58, 59, 60, 61, 329, + 17, 68, 235, 152, 0, 160, 63, 0, 161, 162, + 163, 164, 165, 166, 167, 168, 169, 170, 0, 0, + 0, 0, 64, 65, 0, 0, 0, 0, 0, 0, + 0, 171, 172, 173, 174, 175, 176, 177, 178, 66, + 0, 0, 67, 17, 68, 30, 69, 70, 71, 72, + 34, 35, 36, 37, 6, 38, 39, 40, 41, 42, + 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 55, 56, 57, 58, 59, 60, 61, 0, + 0, 0, 62, 161, 162, 0, 63, 0, 353, 167, + 168, 169, 170, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 64, 65, 0, 0, 0, 0, 0, 174, + 175, 176, 177, 178, 0, 0, 0, 0, 0, 66, + 0, 0, 67, 17, 68, 30, 69, 70, 71, 72, + 34, 35, 36, 37, 6, 38, 39, 40, 41, 42, + 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 55, 56, 57, 58, 59, 60, 61, 331, + 0, 0, 62, 0, 0, 160, 63, 0, 161, 162, + 163, 164, 165, 166, 167, 168, 169, 170, 0, 0, + 0, 0, 64, 65, 0, 0, 0, 0, 0, 0, + 0, 171, 172, 173, 174, 175, 176, 177, 178, 66, + 0, 0, 67, 17, 68, 30, 69, 70, 71, 72, + 34, 35, 36, 37, 6, 38, 39, 40, 41, 42, + 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 55, 56, 57, 58, 59, 60, 61, 0, + 34, 0, 235, 0, 6, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 63, 64, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, - 0, 0, 66, 0, 16, 6, 29, 67, 68, 69, - 70, 33, 34, 35, 36, 0, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 329, 0, 0, 61, 0, 0, 158, 62, 0, 159, - 160, 161, 162, 163, 164, 165, 166, 167, 168, 0, - 0, 0, 0, 63, 64, 0, 0, 0, 0, 0, - 0, 0, 169, 170, 171, 172, 173, 174, 175, 176, - 65, 0, 0, 66, 0, 16, 6, 29, 67, 68, - 69, 70, 33, 34, 35, 36, 0, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - 60, 0, 0, 0, 235, 0, 0, 0, 62, 0, - 0, 0, 0, 0, 0, 0, 0, 213, 0, 0, - 0, 0, 214, 0, 63, 64, 0, 158, 0, 0, - 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, - 0, 65, 0, 0, 66, 0, 16, 6, 29, 67, - 68, 69, 70, 169, 170, 171, 172, 173, 174, 175, - 176, 462, 0, 0, 0, 0, 463, 0, 0, 0, - 0, 158, 0, 0, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 169, 170, 171, - 172, 173, 174, 175, 176, 464, 0, 0, 0, 0, - 465, 0, 0, 0, 0, 158, 0, 0, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 0, 0, + 0, 0, 64, 65, 0, 0, 0, 0, 0, 0, + 0, 0, 179, 0, 0, 373, 0, 0, 0, 66, + 374, 375, 67, 17, 68, 30, 69, 70, 71, 72, + 0, 0, 0, 0, 376, 377, 378, 379, 380, 381, + 382, 383, 384, 385, 386, 465, 0, 0, 0, 0, + 466, 0, 0, 17, 68, 160, 0, 0, 161, 162, + 163, 164, 165, 166, 167, 168, 169, 170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 169, 170, 171, 172, 173, 174, 175, 176, 466, - 0, 0, 0, 0, 467, 0, 0, 0, 0, 158, - 0, 0, 159, 160, 161, 162, 163, 164, 165, 166, - 167, 168, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 309, 0, 169, 170, 171, 172, 173, - 174, 175, 176, 158, 0, 0, 159, 160, 161, 162, - 163, 164, 165, 166, 167, 168, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 310, 0, 169, - 170, 171, 172, 173, 174, 175, 176, 158, 0, 0, - 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, + 0, 171, 172, 173, 174, 175, 176, 177, 178, 467, + 0, 0, 0, 0, 468, 0, 0, 0, 0, 160, + 0, 0, 161, 162, 163, 164, 165, 166, 167, 168, + 169, 170, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 171, 172, 173, 174, 175, + 176, 177, 178, 469, 0, 0, 0, 0, 470, 0, + 0, 0, 0, 160, 0, 0, 161, 162, 163, 164, + 165, 166, 167, 168, 169, 170, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 311, 0, 171, + 172, 173, 174, 175, 176, 177, 178, 160, 0, 0, + 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 311, 0, 169, 170, 171, 172, 173, 174, 175, - 176, 158, 0, 0, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 312, 0, 169, 170, 171, - 172, 173, 174, 175, 176, 158, 0, 0, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 313, - 0, 169, 170, 171, 172, 173, 174, 175, 176, 158, - 0, 0, 159, 160, 161, 162, 163, 164, 165, 166, - 167, 168, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 314, 0, 169, 170, 171, 172, 173, - 174, 175, 176, 158, 0, 0, 159, 160, 161, 162, - 163, 164, 165, 166, 167, 168, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 315, 0, 169, - 170, 171, 172, 173, 174, 175, 176, 158, 0, 0, - 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, + 0, 312, 0, 171, 172, 173, 174, 175, 176, 177, + 178, 160, 0, 0, 161, 162, 163, 164, 165, 166, + 167, 168, 169, 170, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 313, 0, 171, 172, 173, + 174, 175, 176, 177, 178, 160, 0, 0, 161, 162, + 163, 164, 165, 166, 167, 168, 169, 170, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 314, + 0, 171, 172, 173, 174, 175, 176, 177, 178, 160, + 0, 0, 161, 162, 163, 164, 165, 166, 167, 168, + 169, 170, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 315, 0, 171, 172, 173, 174, 175, + 176, 177, 178, 160, 0, 0, 161, 162, 163, 164, + 165, 166, 167, 168, 169, 170, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 316, 0, 171, + 172, 173, 174, 175, 176, 177, 178, 160, 0, 0, + 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 316, 0, 169, 170, 171, 172, 173, 174, 175, - 176, 158, 0, 0, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 317, 0, 169, 170, 171, - 172, 173, 174, 175, 176, 158, 0, 0, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 318, - 0, 169, 170, 171, 172, 173, 174, 175, 176, 158, - 0, 0, 159, 160, 161, 162, 163, 164, 165, 166, - 167, 168, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 319, 0, 169, 170, 171, 172, 173, - 174, 175, 176, 158, 0, 0, 159, 160, 161, 162, - 163, 164, 165, 166, 167, 168, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 320, 0, 169, - 170, 171, 172, 173, 174, 175, 176, 158, 0, 0, - 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, + 0, 317, 0, 171, 172, 173, 174, 175, 176, 177, + 178, 160, 0, 0, 161, 162, 163, 164, 165, 166, + 167, 168, 169, 170, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 318, 0, 171, 172, 173, + 174, 175, 176, 177, 178, 160, 0, 0, 161, 162, + 163, 164, 165, 166, 167, 168, 169, 170, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 319, + 0, 171, 172, 173, 174, 175, 176, 177, 178, 160, + 0, 0, 161, 162, 163, 164, 165, 166, 167, 168, + 169, 170, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 320, 0, 171, 172, 173, 174, 175, + 176, 177, 178, 160, 0, 0, 161, 162, 163, 164, + 165, 166, 167, 168, 169, 170, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 321, 0, 171, + 172, 173, 174, 175, 176, 177, 178, 160, 0, 0, + 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 321, 0, 169, 170, 171, 172, 173, 174, 175, - 176, 158, 0, 0, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 322, 0, 169, 170, 171, - 172, 173, 174, 175, 176, 158, 0, 0, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 323, - 0, 169, 170, 171, 172, 173, 174, 175, 176, 158, - 0, 0, 159, 160, 161, 162, 163, 164, 165, 166, - 167, 168, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 325, 0, 169, 170, 171, 172, 173, - 174, 175, 176, 158, 0, 0, 159, 160, 161, 162, - 163, 164, 165, 166, 167, 168, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 429, 0, 169, - 170, 171, 172, 173, 174, 175, 176, 158, 0, 0, - 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, + 0, 322, 0, 171, 172, 173, 174, 175, 176, 177, + 178, 160, 0, 0, 161, 162, 163, 164, 165, 166, + 167, 168, 169, 170, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 323, 0, 171, 172, 173, + 174, 175, 176, 177, 178, 160, 0, 0, 161, 162, + 163, 164, 165, 166, 167, 168, 169, 170, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 324, + 0, 171, 172, 173, 174, 175, 176, 177, 178, 160, + 0, 0, 161, 162, 163, 164, 165, 166, 167, 168, + 169, 170, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 325, 0, 171, 172, 173, 174, 175, + 176, 177, 178, 160, 0, 0, 161, 162, 163, 164, + 165, 166, 167, 168, 169, 170, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 327, 0, 171, + 172, 173, 174, 175, 176, 177, 178, 160, 0, 0, + 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 430, 0, 169, 170, 171, 172, 173, 174, 175, - 176, 158, 0, 0, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 434, 0, 169, 170, 171, - 172, 173, 174, 175, 176, 158, 0, 0, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 436, - 0, 169, 170, 171, 172, 173, 174, 175, 176, 158, - 0, 0, 159, 160, 161, 162, 163, 164, 165, 166, - 167, 168, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 440, 0, 169, 170, 171, 172, 173, - 174, 175, 176, 158, 0, 0, 159, 160, 161, 162, - 163, 164, 165, 166, 167, 168, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 449, 0, 169, - 170, 171, 172, 173, 174, 175, 176, 158, 0, 0, - 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, + 0, 432, 0, 171, 172, 173, 174, 175, 176, 177, + 178, 160, 0, 0, 161, 162, 163, 164, 165, 166, + 167, 168, 169, 170, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 433, 0, 171, 172, 173, + 174, 175, 176, 177, 178, 160, 0, 0, 161, 162, + 163, 164, 165, 166, 167, 168, 169, 170, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 437, + 0, 171, 172, 173, 174, 175, 176, 177, 178, 160, + 0, 0, 161, 162, 163, 164, 165, 166, 167, 168, + 169, 170, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 439, 0, 171, 172, 173, 174, 175, + 176, 177, 178, 160, 0, 0, 161, 162, 163, 164, + 165, 166, 167, 168, 169, 170, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 443, 0, 171, + 172, 173, 174, 175, 176, 177, 178, 160, 0, 0, + 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 461, 0, 169, 170, 171, 172, 173, 174, 175, - 176, 158, 0, 0, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 471, 0, 169, 170, 171, - 172, 173, 174, 175, 176, 158, 0, 0, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 473, - 0, 169, 170, 171, 172, 173, 174, 175, 176, 158, - 0, 0, 159, 160, 161, 162, 163, 164, 165, 166, - 167, 168, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 493, 0, 169, 170, 171, 172, 173, - 174, 175, 176, 158, 0, 0, 159, 160, 161, 162, - 163, 164, 165, 166, 167, 168, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 169, - 170, 171, 172, 173, 174, 175, 176, 384, 0, 0, - 0, 0, 0, 158, 0, 0, 159, 160, 161, 162, - 163, 164, 165, 166, 167, 168, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 169, - 170, 171, 172, 173, 174, 175, 176, 308, 0, 0, - 0, 0, 158, 0, 0, 159, 160, 161, 162, 163, - 164, 165, 166, 167, 168, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 169, 170, - 171, 172, 173, 174, 175, 176, 324, 0, 0, 0, - 0, 158, 0, 0, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 169, 170, 171, - 172, 173, 174, 175, 176, 389, 0, 0, 0, 0, - 158, 0, 0, 159, 160, 161, 162, 163, 164, 165, - 166, 167, 168, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 169, 170, 171, 172, - 173, 174, 175, 176, 328, 0, 158, 0, 0, 159, - 160, 161, 162, 163, 164, 165, 166, 167, 168, 0, + 0, 452, 0, 171, 172, 173, 174, 175, 176, 177, + 178, 160, 0, 0, 161, 162, 163, 164, 165, 166, + 167, 168, 169, 170, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 464, 0, 171, 172, 173, + 174, 175, 176, 177, 178, 160, 0, 0, 161, 162, + 163, 164, 165, 166, 167, 168, 169, 170, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 474, + 0, 171, 172, 173, 174, 175, 176, 177, 178, 160, + 0, 0, 161, 162, 163, 164, 165, 166, 167, 168, + 169, 170, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 476, 0, 171, 172, 173, 174, 175, + 176, 177, 178, 160, 0, 0, 161, 162, 163, 164, + 165, 166, 167, 168, 169, 170, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 496, 0, 171, + 172, 173, 174, 175, 176, 177, 178, 160, 0, 0, + 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 169, 170, 171, 172, 173, 174, 175, 176, - 157, 158, 0, 0, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 169, 170, 171, - 172, 173, 174, 175, 176, 396, 158, 0, 0, 159, - 160, 161, 162, 163, 164, 165, 166, 167, 168, 0, + 0, 0, 0, 171, 172, 173, 174, 175, 176, 177, + 178, 387, 0, 0, 0, 0, 0, 160, 0, 0, + 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 169, 170, 171, 172, 173, 174, 175, 176, - 409, 158, 0, 0, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 158, 0, 0, 159, 160, 161, - 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, - 172, 173, 174, 175, 176, 0, 0, 0, 0, 0, - 169, 170, 171, 172, 173, 174, 175, 176, 159, 160, - 0, 162, 163, 164, 165, 166, 167, 168, 159, 160, - 0, 0, 163, 164, 165, 166, 167, 168, 0, 0, - 0, 169, 170, 171, 172, 173, 174, 175, 176, 0, - 0, 0, 170, 171, 172, 173, 174, 175, 176, 159, - 160, 0, 0, 163, 164, 165, 166, 167, 168, 159, - 160, 0, 0, 163, 164, 165, 166, 167, 168, 0, - 0, 0, 0, 170, 0, 172, 173, 174, 175, 176, - 0, 0, 0, 0, 0, 172, 173, 174, 175, 176 + 0, 0, 0, 171, 172, 173, 174, 175, 176, 177, + 178, 310, 0, 0, 0, 0, 160, 0, 0, 161, + 162, 163, 164, 165, 166, 167, 168, 169, 170, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 171, 172, 173, 174, 175, 176, 177, 178, + 326, 0, 0, 0, 0, 160, 0, 0, 161, 162, + 163, 164, 165, 166, 167, 168, 169, 170, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 171, 172, 173, 174, 175, 176, 177, 178, 392, + 0, 0, 0, 0, 160, 0, 0, 161, 162, 163, + 164, 165, 166, 167, 168, 169, 170, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 171, 172, 173, 174, 175, 176, 177, 178, 330, 0, + 160, 0, 0, 161, 162, 163, 164, 165, 166, 167, + 168, 169, 170, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 171, 172, 173, 174, + 175, 176, 177, 178, 159, 160, 0, 0, 161, 162, + 163, 164, 165, 166, 167, 168, 169, 170, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 171, 172, 173, 174, 175, 176, 177, 178, 399, + 160, 0, 0, 161, 162, 163, 164, 165, 166, 167, + 168, 169, 170, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 171, 172, 173, 174, + 175, 176, 177, 178, 412, 160, 0, 0, 161, 162, + 163, 164, 165, 166, 167, 168, 169, 170, 160, 0, + 0, 161, 162, 163, 164, 165, 166, 167, 168, 169, + 170, 171, 172, 173, 174, 175, 176, 177, 178, 0, + 0, 0, 0, 0, 171, 172, 173, 174, 175, 176, + 177, 178, 161, 162, 0, 164, 165, 166, 167, 168, + 169, 170, 161, 162, 0, 0, 165, 166, 167, 168, + 169, 170, 0, 0, 0, 171, 172, 173, 174, 175, + 176, 177, 178, 0, 0, 171, 172, 173, 174, 175, + 176, 177, 178, 161, 162, 0, 0, 165, 166, 167, + 168, 169, 170, 161, 162, 0, 0, 165, 166, 167, + 168, 169, 170, 0, 0, 0, 0, 172, 173, 174, + 175, 176, 177, 178, 0, 0, 0, 0, 0, 174, + 175, 176, 177, 178 }; const short parser::yycheck_[] = { - 0, 124, 20, 3, 4, 342, 188, 105, 8, 243, - 342, 3, 4, 247, 342, 28, 66, 66, 463, 188, - 465, 0, 467, 105, 107, 25, 11, 12, 13, 14, - 15, 114, 38, 33, 76, 118, 188, 43, 44, 45, - 46, 33, 92, 70, 76, 38, 66, 112, 113, 188, - 43, 44, 45, 46, 74, 67, 114, 38, 67, 72, - 72, 243, 62, 72, 70, 247, 67, 188, 70, 71, - 67, 72, 78, 79, 243, 72, 113, 70, 247, 67, - 262, 263, 66, 38, 266, 112, 113, 42, 66, 70, - 66, 243, 73, 262, 263, 247, 67, 266, 67, 66, - 66, 72, 336, 72, 243, 105, 112, 113, 247, 66, - 262, 263, 74, 105, 266, 70, 67, 66, 73, 112, - 113, 72, 243, 262, 263, 125, 247, 266, 113, 67, - 111, 112, 113, 38, 72, 472, 66, 42, 67, 66, - 472, 262, 263, 72, 472, 266, 66, 66, 80, 81, - 108, 109, 110, 66, 336, 66, 111, 112, 113, 66, - 342, 66, 66, 117, 118, 70, 66, 336, 73, 74, - 66, 188, 66, 342, 106, 107, 108, 109, 110, 179, - 66, 76, 113, 68, 336, 66, 186, 70, 188, 67, - 342, 66, 74, 193, 74, 66, 188, 336, 66, 76, - 434, 299, 436, 342, 66, 38, 111, 112, 113, 42, - 66, 66, 185, 66, 75, 336, 76, 299, 76, 192, - 66, 342, 76, 66, 76, 70, 243, 76, 76, 76, - 247, 66, 76, 71, 252, 25, 470, 70, 238, 473, - 73, 75, 118, 243, 75, 262, 263, 247, 66, 266, - 66, 243, 434, 66, 436, 247, 66, 71, 492, 493, - 358, 359, 262, 263, 66, 434, 266, 436, 66, 76, - 262, 263, 66, 76, 266, 76, 358, 359, 111, 112, - 113, 23, 434, 76, 436, 28, 72, 76, 470, 76, - 472, 473, 76, 76, 76, 434, 67, 436, 67, 299, - 67, 470, 67, 472, 473, 8, 404, 299, 76, 8, - 492, 493, 76, 434, 188, 436, 76, 440, 470, 336, - 472, 473, 404, 492, 493, 342, 106, 107, 108, 109, - 110, 470, 8, 472, 473, 472, 336, 252, 266, -1, - 492, 493, 342, 343, 336, -1, -1, -1, -1, 470, - 342, 472, 473, 492, 493, -1, -1, -1, 358, 359, - 333, -1, -1, -1, -1, -1, 358, 359, -1, 243, - -1, 492, 493, 247, 38, -1, -1, -1, 42, -1, - -1, 354, 355, -1, -1, -1, -1, -1, 262, 263, - -1, -1, 266, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 26, 404, -1, 70, -1, -1, 73, - 188, -1, 404, 386, -1, -1, -1, 434, -1, 436, - -1, -1, 38, -1, -1, -1, 42, -1, -1, 38, - -1, -1, -1, 42, 434, -1, 436, 60, -1, 439, - 63, 64, 434, -1, 436, -1, -1, 111, 112, 113, - -1, -1, -1, 470, 70, 472, 473, 73, -1, 432, - -1, 70, 336, -1, 73, 243, -1, -1, 342, 247, - 470, -1, 472, 473, 447, 492, 493, -1, 470, -1, - 472, 473, -1, -1, 262, 263, -1, -1, 266, -1, - -1, -1, 492, 493, -1, 111, 112, 113, -1, -1, - 492, 493, 111, 112, 113, -1, 129, 130, 131, 132, - 133, 134, 135, 136, 137, 138, -1, 140, 141, 142, - 143, 144, 145, 146, 147, -1, 149, -1, -1, -1, - -1, -1, -1, -1, -1, 158, 159, 160, 161, 162, - 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 188, 178, -1, -1, 336, -1, - 434, -1, 436, -1, 342, -1, -1, -1, 191, 38, - -1, -1, -1, 42, -1, 38, -1, -1, -1, 42, - -1, -1, -1, 16, 17, -1, 19, 20, -1, -1, - -1, 214, -1, -1, -1, -1, 470, -1, 472, 473, - -1, 70, -1, -1, 73, 38, -1, 70, -1, 243, - 73, -1, 235, 247, -1, -1, -1, -1, 492, 493, - -1, 244, -1, -1, -1, -1, -1, -1, 262, 263, - -1, -1, 266, 256, -1, -1, -1, 70, -1, -1, - 73, -1, 111, 112, 113, 78, 79, -1, 111, 112, - 113, -1, -1, -1, -1, -1, 434, -1, 436, 92, + 0, 126, 21, 188, 28, 344, 344, 344, 66, 9, + 66, 3, 4, 11, 12, 13, 14, 15, 38, 0, + 188, 107, 42, 113, 42, 42, 26, 67, 188, 42, + 185, 107, 72, 107, 34, 67, 92, 192, 76, 113, + 72, 76, 34, 117, 42, 466, 66, 468, 72, 470, + 70, 67, 70, 73, 66, 188, 72, 67, 111, 112, + 245, 67, 72, 63, 249, 66, 38, 66, 188, 66, + 42, 43, 44, 45, 46, 70, 71, 245, 38, 264, + 265, 249, 42, 268, 66, 245, 108, 109, 110, 249, + 66, 111, 112, 111, 112, 112, 264, 265, 70, 112, + 268, 67, 116, 117, 264, 265, 72, 107, 268, 66, + 70, 66, 245, 73, 112, 107, 249, 67, 67, 67, + 74, 67, 72, 72, 72, 245, 72, 127, 66, 249, + 66, 264, 265, 66, 66, 268, 475, 475, 475, 111, + 112, 66, 66, 188, 264, 265, 66, 66, 268, 66, + 66, 111, 112, 338, 66, 76, 112, 38, 68, 344, + 74, 42, 43, 44, 45, 46, 70, 66, 74, 67, + 338, 66, 74, 245, 66, 76, 344, 249, 338, 66, + 335, 66, 66, 66, 344, 75, 186, 66, 188, 70, + 76, 66, 66, 193, 76, 66, 188, 78, 79, 76, + 245, 356, 357, 70, 249, 338, 76, 76, 76, 38, + 71, 344, 76, 42, 76, 301, 25, 117, 338, 264, + 265, 75, 75, 268, 344, 301, 66, 66, 66, 66, + 111, 112, 80, 81, 389, 254, 112, 71, 66, 66, + 240, 70, 66, 76, 73, 245, 76, 23, 28, 249, + 76, 76, 437, 245, 439, 76, 76, 249, 106, 107, + 108, 109, 110, 76, 264, 265, 338, 72, 268, 437, + 76, 439, 264, 265, 360, 361, 268, 437, 76, 439, + 435, 67, 111, 112, 360, 361, 67, 76, 473, 76, + 475, 476, 67, 338, 67, 450, 9, 76, 38, 344, + 9, 301, 42, 9, 437, 473, 439, 475, 476, 301, + 495, 496, 475, 473, 254, 475, 476, 437, 443, 439, + -1, 407, 188, 268, -1, -1, -1, 495, 496, -1, + 70, 407, 188, 73, -1, 495, 496, -1, 338, -1, + 473, -1, 475, 476, 344, 345, 338, 106, 107, 108, + 109, 110, 344, 473, -1, 475, 476, -1, -1, -1, + 360, 361, 495, 496, -1, 437, -1, 439, 360, 361, + -1, 111, 112, -1, -1, 495, 496, -1, -1, 245, + -1, 38, -1, 249, -1, 42, 38, -1, -1, 245, + 42, -1, 437, 249, 439, -1, -1, -1, 264, 265, + -1, 473, 268, -1, 476, -1, 27, 407, 264, 265, + 188, -1, 268, 70, -1, 407, 73, -1, 70, -1, + -1, 73, -1, 495, 496, -1, -1, -1, 473, -1, + 475, 476, -1, -1, 38, -1, -1, 437, 42, 439, + 61, -1, 442, 64, 65, 437, -1, 439, -1, -1, + 495, 496, -1, -1, 111, 112, -1, -1, -1, 111, + 112, -1, -1, -1, -1, -1, 70, 245, -1, 73, + -1, 249, 338, 473, -1, 475, 476, -1, 344, -1, + -1, 473, 338, 475, 476, -1, 264, 265, 344, -1, + 268, -1, -1, -1, -1, 495, 496, -1, -1, -1, + -1, 38, -1, 495, 496, 42, -1, 111, 112, -1, + 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, + -1, 142, 143, 144, 145, 146, 147, 148, 149, -1, + 151, -1, -1, 70, -1, -1, 73, -1, -1, 160, + 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, + 171, 172, 173, 174, 175, 176, 177, 178, 179, 38, + 338, -1, -1, 42, -1, -1, 344, -1, 38, -1, + 191, 437, 42, 439, 111, 112, 38, -1, -1, -1, + 42, 437, -1, 439, -1, -1, -1, -1, -1, -1, + -1, 70, -1, 214, 73, -1, -1, -1, -1, -1, + 70, -1, -1, 73, -1, -1, -1, 473, 70, 475, + 476, 73, -1, -1, 235, -1, -1, 473, -1, 475, + 476, -1, -1, -1, -1, 246, -1, -1, -1, 495, + 496, -1, 111, 112, -1, -1, -1, 258, -1, 495, + 496, 111, 112, -1, -1, -1, -1, -1, -1, 111, + 112, -1, -1, 16, 17, -1, 19, 20, -1, 437, + -1, 439, -1, -1, 80, 81, -1, -1, 84, 85, + 86, 87, 88, 89, -1, 38, -1, -1, -1, 42, + -1, -1, -1, -1, -1, -1, -1, -1, 104, 310, + 106, 107, 108, 109, 110, 473, -1, 475, 476, -1, + -1, -1, -1, -1, -1, 326, -1, 70, -1, 330, + 73, -1, -1, 334, -1, 78, 79, 495, 496, -1, + 341, -1, 343, -1, -1, 346, -1, -1, -1, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, - -1, 38, -1, -1, -1, -1, -1, -1, 111, 112, - 113, -1, -1, -1, -1, 308, -1, -1, -1, -1, - -1, -1, 470, -1, 472, 473, -1, -1, -1, -1, - -1, 324, 336, 70, -1, 328, 73, -1, 342, 332, - -1, 78, 79, -1, 492, 493, 339, -1, 341, -1, - -1, 344, -1, -1, -1, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, -1, -1, -1, -1, - -1, -1, -1, -1, 111, 112, 113, -1, -1, -1, - 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, - 383, 11, -1, -1, -1, -1, 389, -1, 18, 38, - -1, 21, 22, 42, 24, 25, 26, 27, -1, 29, - 30, 31, 32, 33, 34, 35, 36, 37, 38, 412, - 413, 414, 415, 43, 44, 45, 46, -1, -1, -1, - 434, 70, 436, -1, 73, -1, -1, -1, -1, -1, - -1, -1, 435, -1, 437, 438, -1, -1, 68, 69, - 70, -1, -1, -1, -1, -1, -1, -1, 78, 79, - -1, -1, -1, -1, -1, -1, 470, -1, 472, 473, - -1, -1, 111, 112, 113, -1, -1, -1, -1, -1, - -1, 474, -1, -1, 11, -1, -1, -1, 492, 493, - -1, 18, 112, 113, 21, 22, -1, 24, 25, 26, - 27, -1, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, -1, -1, 12, -1, 43, 44, 45, 46, + -1, -1, -1, -1, -1, -1, -1, -1, 111, 112, + -1, -1, -1, -1, -1, 376, 377, 378, 379, 380, + 381, 382, 383, 384, 385, 386, -1, 67, -1, -1, + -1, 392, 72, -1, -1, -1, -1, 77, -1, -1, + 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, + -1, -1, -1, -1, 415, 416, 417, 418, -1, -1, + -1, -1, -1, 103, 104, 105, 106, 107, 108, 109, + 110, 11, -1, -1, -1, -1, -1, 438, 18, 440, + 441, 21, 22, -1, 24, 25, 26, 27, -1, 29, + 30, 31, 32, 33, 34, 35, 36, 37, 38, -1, + -1, -1, 42, 43, 44, 45, 46, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 477, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 68, 69, + 70, -1, -1, 11, -1, -1, -1, -1, 78, 79, 18, -1, -1, 21, 22, -1, 24, 25, 26, 27, -1, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 68, 69, 70, -1, 43, 44, 45, 46, -1, - -1, 78, 79, -1, -1, -1, -1, -1, -1, -1, + 38, -1, -1, -1, 42, 43, 44, 45, 46, -1, + -1, 111, 112, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 68, -1, 70, 38, -1, -1, -1, 42, 12, -1, - 78, 79, -1, -1, 18, 112, 113, 21, 22, -1, - 24, 25, 26, 27, -1, 29, 30, 31, 32, 33, - 34, 35, 36, 37, 38, 70, -1, -1, 73, 43, - 44, 45, 46, 18, 112, 113, 21, 22, -1, 24, - 25, 26, 27, -1, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 68, -1, 70, -1, 43, 44, - 45, 46, -1, -1, 78, 79, 111, 112, 113, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 80, 81, -1, 68, -1, 70, 86, 87, 88, 89, - -1, -1, -1, 78, 79, -1, 80, 81, 112, 113, - 84, 85, 86, 87, 88, 89, 106, 107, 108, 109, - 110, -1, -1, -1, -1, -1, -1, -1, -1, 103, - 104, 105, 106, 107, 108, 109, 110, 112, 113, 38, - 39, 40, 41, -1, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 71, -1, - -1, 70, 71, -1, 77, 74, -1, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, -1, -1, -1, - -1, 90, 91, -1, -1, -1, -1, -1, -1, -1, - 103, 104, 105, 106, 107, 108, 109, 110, 107, -1, - -1, 110, -1, 112, 113, 114, 115, 116, 117, 118, - 38, 39, 40, 41, -1, 43, 44, 45, 46, 47, + 68, 69, 70, 12, -1, -1, -1, -1, -1, 18, + 78, 79, 21, 22, -1, 24, 25, 26, 27, -1, + 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, + -1, -1, -1, 42, 43, 44, 45, 46, -1, -1, + -1, -1, -1, 111, 112, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 68, + -1, 70, 12, -1, -1, -1, -1, -1, 18, 78, + 79, 21, 22, -1, 24, 25, 26, 27, -1, 29, + 30, 31, 32, 33, 34, 35, 36, 37, 38, -1, + -1, -1, 42, 43, 44, 45, 46, -1, -1, -1, + -1, -1, 111, 112, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 68, -1, + 70, -1, -1, -1, -1, -1, -1, 18, 78, 79, + 21, 22, -1, 24, 25, 26, 27, -1, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, -1, -1, + -1, 42, 43, 44, 45, 46, -1, -1, -1, -1, + -1, 111, 112, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 68, -1, 70, + -1, -1, -1, -1, -1, -1, -1, 78, 79, -1, + 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, + 58, 59, 60, 61, 62, 63, 64, 65, 66, 71, + 111, 112, 70, 71, -1, 77, 74, -1, 80, 81, + 82, 83, 84, 85, 86, 87, 88, 89, -1, -1, + -1, -1, 90, 91, -1, -1, -1, -1, -1, -1, + -1, 103, 104, 105, 106, 107, 108, 109, 110, 107, + -1, -1, 110, 111, 112, 113, 114, 115, 116, 117, + 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, -1, - -1, -1, 70, -1, -1, -1, 74, -1, 76, -1, + -1, -1, 70, 80, 81, -1, 74, -1, 76, 86, + 87, 88, 89, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 90, 91, -1, -1, -1, -1, -1, 106, + 107, 108, 109, 110, -1, -1, -1, -1, -1, 107, + -1, -1, 110, 111, 112, 113, 114, 115, 116, 117, + 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, + 58, 59, 60, 61, 62, 63, 64, 65, 66, 71, + -1, -1, 70, -1, -1, 77, 74, -1, 80, 81, + 82, 83, 84, 85, 86, 87, 88, 89, -1, -1, + -1, -1, 90, 91, -1, -1, -1, -1, -1, -1, + -1, 103, 104, 105, 106, 107, 108, 109, 110, 107, + -1, -1, 110, 111, 112, 113, 114, 115, 116, 117, + 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, + 58, 59, 60, 61, 62, 63, 64, 65, 66, -1, + 38, -1, 70, -1, 42, -1, 74, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 90, 91, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 107, - -1, -1, 110, -1, 112, 113, 114, 115, 116, 117, - 118, 38, 39, 40, 41, -1, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 71, -1, -1, 70, -1, -1, 77, 74, -1, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, -1, - -1, -1, -1, 90, 91, -1, -1, -1, -1, -1, - -1, -1, 103, 104, 105, 106, 107, 108, 109, 110, - 107, -1, -1, 110, -1, 112, 113, 114, 115, 116, - 117, 118, 38, 39, 40, 41, -1, 43, 44, 45, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, - 66, -1, -1, -1, 70, -1, -1, -1, 74, -1, - -1, -1, -1, -1, -1, -1, -1, 67, -1, -1, - -1, -1, 72, -1, 90, 91, -1, 77, -1, -1, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, - -1, 107, -1, -1, 110, -1, 112, 113, 114, 115, - 116, 117, 118, 103, 104, 105, 106, 107, 108, 109, - 110, 67, -1, -1, -1, -1, 72, -1, -1, -1, - -1, 77, -1, -1, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 103, 104, 105, - 106, 107, 108, 109, 110, 67, -1, -1, -1, -1, - 72, -1, -1, -1, -1, 77, -1, -1, 80, 81, + -1, -1, 70, -1, -1, 73, -1, -1, -1, 107, + 78, 79, 110, 111, 112, 113, 114, 115, 116, 117, + -1, -1, -1, -1, 92, 93, 94, 95, 96, 97, + 98, 99, 100, 101, 102, 67, -1, -1, -1, -1, + 72, -1, -1, 111, 112, 77, -1, -1, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 103, 104, 105, 106, 107, 108, 109, 110, 67, -1, -1, -1, -1, 72, -1, -1, -1, -1, 77, -1, -1, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 67, -1, 103, 104, 105, 106, 107, - 108, 109, 110, 77, -1, -1, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 89, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 67, -1, 103, - 104, 105, 106, 107, 108, 109, 110, 77, -1, -1, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 67, -1, 103, 104, 105, 106, 107, 108, 109, - 110, 77, -1, -1, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 67, -1, 103, 104, 105, - 106, 107, 108, 109, 110, 77, -1, -1, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 67, - -1, 103, 104, 105, 106, 107, 108, 109, 110, 77, - -1, -1, 80, 81, 82, 83, 84, 85, 86, 87, - 88, 89, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 67, -1, 103, 104, 105, 106, 107, - 108, 109, 110, 77, -1, -1, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 89, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 67, -1, 103, - 104, 105, 106, 107, 108, 109, 110, 77, -1, -1, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 67, -1, 103, 104, 105, 106, 107, 108, 109, - 110, 77, -1, -1, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 67, -1, 103, 104, 105, - 106, 107, 108, 109, 110, 77, -1, -1, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 67, - -1, 103, 104, 105, 106, 107, 108, 109, 110, 77, - -1, -1, 80, 81, 82, 83, 84, 85, 86, 87, - 88, 89, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 67, -1, 103, 104, 105, 106, 107, - 108, 109, 110, 77, -1, -1, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 89, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 67, -1, 103, - 104, 105, 106, 107, 108, 109, 110, 77, -1, -1, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 67, -1, 103, 104, 105, 106, 107, 108, 109, - 110, 77, -1, -1, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 67, -1, 103, 104, 105, - 106, 107, 108, 109, 110, 77, -1, -1, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 67, - -1, 103, 104, 105, 106, 107, 108, 109, 110, 77, - -1, -1, 80, 81, 82, 83, 84, 85, 86, 87, - 88, 89, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 67, -1, 103, 104, 105, 106, 107, - 108, 109, 110, 77, -1, -1, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 89, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 67, -1, 103, - 104, 105, 106, 107, 108, 109, 110, 77, -1, -1, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 67, -1, 103, 104, 105, 106, 107, 108, 109, - 110, 77, -1, -1, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 67, -1, 103, 104, 105, - 106, 107, 108, 109, 110, 77, -1, -1, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 67, - -1, 103, 104, 105, 106, 107, 108, 109, 110, 77, - -1, -1, 80, 81, 82, 83, 84, 85, 86, 87, - 88, 89, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 67, -1, 103, 104, 105, 106, 107, - 108, 109, 110, 77, -1, -1, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 89, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 67, -1, 103, - 104, 105, 106, 107, 108, 109, 110, 77, -1, -1, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 67, -1, 103, 104, 105, 106, 107, 108, 109, - 110, 77, -1, -1, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 67, -1, 103, 104, 105, - 106, 107, 108, 109, 110, 77, -1, -1, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 67, - -1, 103, 104, 105, 106, 107, 108, 109, 110, 77, - -1, -1, 80, 81, 82, 83, 84, 85, 86, 87, - 88, 89, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 67, -1, 103, 104, 105, 106, 107, - 108, 109, 110, 77, -1, -1, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 89, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 103, - 104, 105, 106, 107, 108, 109, 110, 71, -1, -1, + -1, -1, -1, -1, -1, 103, 104, 105, 106, 107, + 108, 109, 110, 67, -1, -1, -1, -1, 72, -1, -1, -1, -1, 77, -1, -1, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 103, - 104, 105, 106, 107, 108, 109, 110, 72, -1, -1, - -1, -1, 77, -1, -1, 80, 81, 82, 83, 84, - 85, 86, 87, 88, 89, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 103, 104, - 105, 106, 107, 108, 109, 110, 72, -1, -1, -1, - -1, 77, -1, -1, 80, 81, 82, 83, 84, 85, + -1, -1, -1, -1, -1, -1, -1, 67, -1, 103, + 104, 105, 106, 107, 108, 109, 110, 77, -1, -1, + 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 67, -1, 103, 104, 105, 106, 107, 108, 109, + 110, 77, -1, -1, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 103, 104, 105, - 106, 107, 108, 109, 110, 72, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 67, -1, 103, 104, 105, + 106, 107, 108, 109, 110, 77, -1, -1, 80, 81, + 82, 83, 84, 85, 86, 87, 88, 89, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 67, + -1, 103, 104, 105, 106, 107, 108, 109, 110, 77, + -1, -1, 80, 81, 82, 83, 84, 85, 86, 87, + 88, 89, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 67, -1, 103, 104, 105, 106, 107, + 108, 109, 110, 77, -1, -1, 80, 81, 82, 83, + 84, 85, 86, 87, 88, 89, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 67, -1, 103, + 104, 105, 106, 107, 108, 109, 110, 77, -1, -1, + 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 67, -1, 103, 104, 105, 106, 107, 108, 109, + 110, 77, -1, -1, 80, 81, 82, 83, 84, 85, + 86, 87, 88, 89, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 67, -1, 103, 104, 105, + 106, 107, 108, 109, 110, 77, -1, -1, 80, 81, + 82, 83, 84, 85, 86, 87, 88, 89, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 67, + -1, 103, 104, 105, 106, 107, 108, 109, 110, 77, + -1, -1, 80, 81, 82, 83, 84, 85, 86, 87, + 88, 89, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 67, -1, 103, 104, 105, 106, 107, + 108, 109, 110, 77, -1, -1, 80, 81, 82, 83, + 84, 85, 86, 87, 88, 89, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 67, -1, 103, + 104, 105, 106, 107, 108, 109, 110, 77, -1, -1, + 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 67, -1, 103, 104, 105, 106, 107, 108, 109, + 110, 77, -1, -1, 80, 81, 82, 83, 84, 85, + 86, 87, 88, 89, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 67, -1, 103, 104, 105, + 106, 107, 108, 109, 110, 77, -1, -1, 80, 81, + 82, 83, 84, 85, 86, 87, 88, 89, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 67, + -1, 103, 104, 105, 106, 107, 108, 109, 110, 77, + -1, -1, 80, 81, 82, 83, 84, 85, 86, 87, + 88, 89, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 67, -1, 103, 104, 105, 106, 107, + 108, 109, 110, 77, -1, -1, 80, 81, 82, 83, + 84, 85, 86, 87, 88, 89, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 67, -1, 103, + 104, 105, 106, 107, 108, 109, 110, 77, -1, -1, + 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 67, -1, 103, 104, 105, 106, 107, 108, 109, + 110, 77, -1, -1, 80, 81, 82, 83, 84, 85, + 86, 87, 88, 89, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 67, -1, 103, 104, 105, + 106, 107, 108, 109, 110, 77, -1, -1, 80, 81, + 82, 83, 84, 85, 86, 87, 88, 89, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 67, + -1, 103, 104, 105, 106, 107, 108, 109, 110, 77, + -1, -1, 80, 81, 82, 83, 84, 85, 86, 87, + 88, 89, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 67, -1, 103, 104, 105, 106, 107, + 108, 109, 110, 77, -1, -1, 80, 81, 82, 83, + 84, 85, 86, 87, 88, 89, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 67, -1, 103, + 104, 105, 106, 107, 108, 109, 110, 77, -1, -1, + 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 67, -1, 103, 104, 105, 106, 107, 108, 109, + 110, 77, -1, -1, 80, 81, 82, 83, 84, 85, + 86, 87, 88, 89, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 67, -1, 103, 104, 105, + 106, 107, 108, 109, 110, 77, -1, -1, 80, 81, + 82, 83, 84, 85, 86, 87, 88, 89, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 67, + -1, 103, 104, 105, 106, 107, 108, 109, 110, 77, + -1, -1, 80, 81, 82, 83, 84, 85, 86, 87, + 88, 89, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 67, -1, 103, 104, 105, 106, 107, + 108, 109, 110, 77, -1, -1, 80, 81, 82, 83, + 84, 85, 86, 87, 88, 89, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 67, -1, 103, + 104, 105, 106, 107, 108, 109, 110, 77, -1, -1, + 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 103, 104, 105, 106, 107, 108, 109, + 110, 71, -1, -1, -1, -1, -1, 77, -1, -1, + 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 103, 104, 105, 106, 107, 108, 109, + 110, 72, -1, -1, -1, -1, 77, -1, -1, 80, + 81, 82, 83, 84, 85, 86, 87, 88, 89, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 103, 104, 105, 106, 107, 108, 109, 110, + 72, -1, -1, -1, -1, 77, -1, -1, 80, 81, + 82, 83, 84, 85, 86, 87, 88, 89, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 103, 104, 105, 106, 107, 108, 109, 110, 72, + -1, -1, -1, -1, 77, -1, -1, 80, 81, 82, + 83, 84, 85, 86, 87, 88, 89, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 103, 104, 105, 106, 107, 108, 109, 110, 75, -1, 77, -1, -1, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 103, 104, 105, 106, - 107, 108, 109, 110, 75, -1, 77, -1, -1, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, -1, + 107, 108, 109, 110, 76, 77, -1, -1, 80, 81, + 82, 83, 84, 85, 86, 87, 88, 89, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 103, 104, 105, 106, 107, 108, 109, 110, - 76, 77, -1, -1, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 103, 104, 105, - 106, 107, 108, 109, 110, 76, 77, -1, -1, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 103, 104, 105, 106, 107, 108, 109, 110, - 76, 77, -1, -1, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 77, -1, -1, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 103, 104, 105, - 106, 107, 108, 109, 110, -1, -1, -1, -1, -1, - 103, 104, 105, 106, 107, 108, 109, 110, 80, 81, - -1, 83, 84, 85, 86, 87, 88, 89, 80, 81, - -1, -1, 84, 85, 86, 87, 88, 89, -1, -1, - -1, 103, 104, 105, 106, 107, 108, 109, 110, -1, - -1, -1, 104, 105, 106, 107, 108, 109, 110, 80, - 81, -1, -1, 84, 85, 86, 87, 88, 89, 80, - 81, -1, -1, 84, 85, 86, 87, 88, 89, -1, - -1, -1, -1, 104, -1, 106, 107, 108, 109, 110, - -1, -1, -1, -1, -1, 106, 107, 108, 109, 110 + -1, 103, 104, 105, 106, 107, 108, 109, 110, 76, + 77, -1, -1, 80, 81, 82, 83, 84, 85, 86, + 87, 88, 89, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 103, 104, 105, 106, + 107, 108, 109, 110, 76, 77, -1, -1, 80, 81, + 82, 83, 84, 85, 86, 87, 88, 89, 77, -1, + -1, 80, 81, 82, 83, 84, 85, 86, 87, 88, + 89, 103, 104, 105, 106, 107, 108, 109, 110, -1, + -1, -1, -1, -1, 103, 104, 105, 106, 107, 108, + 109, 110, 80, 81, -1, 83, 84, 85, 86, 87, + 88, 89, 80, 81, -1, -1, 84, 85, 86, 87, + 88, 89, -1, -1, -1, 103, 104, 105, 106, 107, + 108, 109, 110, -1, -1, 103, 104, 105, 106, 107, + 108, 109, 110, 80, 81, -1, -1, 84, 85, 86, + 87, 88, 89, 80, 81, -1, -1, 84, 85, 86, + 87, 88, 89, -1, -1, -1, -1, 104, 105, 106, + 107, 108, 109, 110, -1, -1, -1, -1, -1, 106, + 107, 108, 109, 110 }; const unsigned char parser::yystos_[] = { - 0, 11, 12, 13, 14, 15, 113, 128, 129, 130, - 131, 132, 133, 134, 135, 215, 112, 215, 216, 216, - 66, 0, 130, 131, 132, 66, 92, 76, 76, 114, - 218, 180, 215, 38, 39, 40, 41, 43, 44, 45, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, - 66, 70, 74, 90, 91, 107, 110, 115, 116, 117, - 118, 166, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, - 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, - 222, 223, 224, 67, 67, 72, 70, 215, 216, 66, + 0, 11, 12, 13, 14, 15, 42, 112, 128, 129, + 130, 131, 132, 133, 134, 135, 216, 111, 112, 217, + 217, 66, 0, 130, 131, 132, 66, 92, 76, 76, + 113, 219, 180, 216, 38, 39, 40, 41, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 70, 74, 90, 91, 107, 110, 112, 114, + 115, 116, 117, 166, 171, 172, 173, 174, 175, 176, + 177, 178, 179, 183, 184, 185, 186, 187, 188, 189, + 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, + 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, + 210, 211, 212, 213, 214, 216, 217, 218, 219, 220, + 221, 222, 223, 224, 225, 67, 67, 72, 70, 216, + 217, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, - 66, 66, 66, 66, 66, 66, 66, 66, 166, 70, - 71, 215, 166, 166, 117, 118, 113, 76, 77, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 103, - 104, 105, 106, 107, 108, 109, 110, 42, 70, 73, - 111, 178, 179, 215, 216, 66, 74, 76, 68, 141, - 215, 70, 66, 74, 166, 166, 166, 166, 166, 166, + 166, 70, 71, 216, 166, 166, 116, 117, 112, 76, + 77, 80, 81, 82, 83, 84, 85, 86, 87, 88, + 89, 103, 104, 105, 106, 107, 108, 109, 110, 70, + 73, 178, 179, 216, 217, 66, 74, 76, 68, 141, + 216, 70, 66, 74, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 67, 166, 166, 166, 166, 166, 166, 166, 166, 67, 72, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, - 166, 166, 166, 166, 166, 70, 166, 215, 74, 166, - 181, 182, 215, 11, 18, 21, 22, 24, 25, 26, - 27, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 69, 70, 78, 79, 136, 137, 139, 140, 141, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, - 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, - 164, 165, 168, 169, 170, 176, 177, 203, 204, 207, - 210, 211, 212, 213, 215, 166, 181, 215, 72, 67, - 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, - 67, 67, 67, 67, 72, 67, 166, 71, 75, 71, - 215, 67, 72, 66, 12, 136, 138, 166, 76, 66, - 136, 66, 66, 66, 66, 107, 218, 222, 75, 76, - 76, 76, 166, 76, 66, 66, 176, 177, 207, 207, - 69, 137, 76, 76, 76, 76, 76, 16, 17, 19, - 20, 78, 79, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 71, 67, 66, 166, 166, 72, - 71, 166, 166, 181, 12, 136, 76, 166, 25, 166, - 142, 168, 169, 170, 207, 215, 166, 75, 75, 76, - 181, 181, 66, 66, 66, 66, 166, 166, 166, 166, - 166, 166, 166, 166, 166, 166, 166, 71, 181, 67, - 67, 166, 66, 67, 67, 66, 67, 76, 28, 72, - 67, 67, 67, 166, 166, 166, 166, 66, 67, 67, - 181, 136, 166, 136, 166, 167, 166, 215, 141, 76, - 76, 67, 67, 72, 67, 72, 67, 72, 181, 67, - 23, 67, 76, 67, 28, 76, 76, 181, 182, 76, - 182, 76, 182, 67, 136, 76, 142, 136, 166, 67, - 67, 67, 67, 67, 76, 76, 76, 136, 136 + 166, 166, 166, 166, 166, 70, 166, 42, 112, 215, + 74, 166, 181, 182, 216, 11, 18, 21, 22, 24, + 25, 26, 27, 29, 30, 31, 32, 33, 34, 35, + 36, 37, 69, 70, 78, 79, 136, 137, 139, 140, + 141, 143, 144, 145, 146, 147, 148, 149, 150, 151, + 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, + 162, 163, 164, 165, 168, 169, 170, 176, 177, 203, + 204, 207, 210, 211, 212, 213, 216, 166, 181, 216, + 72, 67, 67, 67, 67, 67, 67, 67, 67, 67, + 67, 67, 67, 67, 67, 67, 72, 67, 166, 71, + 75, 71, 216, 67, 72, 66, 12, 136, 138, 166, + 76, 66, 136, 66, 66, 66, 66, 107, 219, 223, + 75, 76, 76, 76, 166, 76, 66, 66, 176, 177, + 207, 207, 69, 137, 76, 76, 76, 76, 76, 16, + 17, 19, 20, 73, 78, 79, 92, 93, 94, 95, + 96, 97, 98, 99, 100, 101, 102, 71, 67, 66, + 166, 166, 72, 71, 166, 166, 181, 12, 136, 76, + 166, 25, 166, 142, 168, 169, 170, 207, 216, 166, + 75, 75, 76, 181, 181, 66, 66, 66, 66, 166, + 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, + 71, 181, 67, 67, 166, 66, 67, 67, 66, 67, + 76, 28, 72, 67, 67, 67, 166, 166, 166, 166, + 66, 67, 67, 181, 136, 166, 136, 166, 167, 166, + 216, 141, 76, 76, 67, 67, 72, 67, 72, 67, + 72, 181, 67, 23, 67, 76, 67, 28, 76, 76, + 181, 182, 76, 182, 76, 182, 67, 136, 76, 142, + 136, 166, 67, 67, 67, 67, 67, 76, 76, 76, + 136, 136 }; const unsigned char @@ -5067,10 +5086,10 @@ namespace xsk { namespace arc { namespace t6 { 178, 178, 178, 179, 179, 180, 180, 180, 181, 181, 182, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, - 201, 202, 202, 203, 204, 204, 205, 206, 207, 207, - 207, 207, 207, 207, 207, 207, 207, 208, 209, 210, - 211, 212, 213, 214, 215, 216, 216, 217, 218, 219, - 220, 221, 221, 222, 222, 223, 224 + 201, 202, 202, 203, 204, 205, 206, 207, 207, 207, + 207, 207, 207, 207, 207, 207, 208, 209, 210, 211, + 212, 213, 214, 215, 216, 216, 217, 217, 218, 219, + 220, 221, 222, 222, 223, 223, 224, 225 }; const signed char @@ -5097,10 +5116,10 @@ namespace xsk { namespace arc { namespace t6 { 6, 5, 7, 8, 9, 3, 1, 0, 1, 0, 3, 1, 6, 4, 4, 4, 4, 4, 4, 4, 4, 4, 3, 4, 4, 4, 4, 4, 4, 6, - 4, 2, 3, 4, 3, 2, 2, 3, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, - 1, 1, 1, 2, 1, 1, 1, 1, 1, 7, - 1, 2, 1, 2, 1, 1, 1 + 4, 2, 3, 4, 3, 3, 3, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, + 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, + 7, 1, 2, 1, 2, 1, 1, 1 }; @@ -5110,31 +5129,31 @@ namespace xsk { namespace arc { namespace t6 { const short parser::yyrline_[] = { - 0, 284, 284, 285, 289, 291, 293, 295, 297, 299, - 304, 308, 313, 314, 315, 316, 317, 321, 326, 331, - 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, - 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, - 356, 357, 358, 359, 363, 364, 368, 370, 375, 377, - 382, 383, 387, 388, 392, 394, 396, 399, 403, 405, - 410, 412, 414, 419, 424, 426, 431, 436, 438, 443, - 445, 450, 455, 460, 465, 470, 475, 480, 482, 487, - 492, 494, 499, 504, 509, 514, 516, 521, 526, 531, - 536, 537, 538, 542, 543, 547, 549, 551, 553, 555, - 557, 559, 561, 563, 565, 567, 572, 574, 579, 581, - 586, 591, 593, 595, 597, 599, 601, 603, 605, 607, - 609, 611, 613, 615, 617, 619, 621, 623, 625, 630, - 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, - 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, - 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, - 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, - 671, 672, 673, 677, 682, 687, 688, 691, 692, 696, - 698, 700, 702, 707, 709, 714, 716, 719, 723, 726, - 730, 732, 737, 742, 747, 752, 757, 762, 767, 772, - 777, 782, 787, 792, 797, 802, 807, 812, 817, 822, - 827, 832, 834, 839, 844, 846, 851, 856, 861, 862, - 863, 864, 865, 866, 867, 868, 869, 873, 878, 883, - 888, 893, 898, 903, 908, 913, 915, 920, 925, 930, - 935, 940, 942, 947, 949, 954, 959 + 0, 285, 285, 286, 290, 292, 294, 296, 298, 300, + 305, 309, 314, 315, 316, 317, 318, 322, 327, 332, + 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, + 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, + 357, 358, 359, 360, 364, 365, 369, 371, 376, 378, + 383, 384, 388, 389, 393, 395, 397, 400, 404, 406, + 411, 413, 415, 420, 425, 427, 432, 437, 439, 444, + 446, 451, 456, 461, 466, 471, 476, 481, 483, 488, + 493, 495, 500, 505, 510, 515, 517, 522, 527, 532, + 537, 538, 539, 543, 544, 548, 550, 552, 554, 556, + 558, 560, 562, 564, 566, 568, 573, 575, 580, 582, + 587, 592, 594, 596, 598, 600, 602, 604, 606, 608, + 610, 612, 614, 616, 618, 620, 622, 624, 626, 631, + 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, + 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, + 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, + 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, + 672, 673, 674, 678, 683, 688, 689, 692, 693, 697, + 699, 701, 703, 708, 710, 715, 717, 720, 724, 727, + 731, 733, 738, 743, 748, 753, 758, 763, 768, 773, + 778, 783, 788, 793, 798, 803, 808, 813, 818, 823, + 828, 833, 835, 840, 845, 850, 855, 860, 861, 862, + 863, 864, 865, 866, 867, 868, 872, 877, 882, 887, + 892, 897, 902, 907, 912, 914, 919, 921, 926, 931, + 936, 941, 946, 948, 953, 955, 960, 965 }; void @@ -5167,9 +5186,9 @@ namespace xsk { namespace arc { namespace t6 { #line 13 "parser.ypp" } } } // xsk::arc::t6 -#line 5171 "parser.cpp" +#line 5190 "parser.cpp" -#line 963 "parser.ypp" +#line 969 "parser.ypp" void xsk::arc::t6::parser::error(const xsk::arc::location& loc, const std::string& msg) diff --git a/src/t6/xsk/parser.hpp b/src/t6/xsk/parser.hpp index a754200a..d3451c00 100644 --- a/src/t6/xsk/parser.hpp +++ b/src/t6/xsk/parser.hpp @@ -519,6 +519,7 @@ namespace xsk { namespace arc { namespace t6 { // expr_hash char dummy34[sizeof (ast::expr_hash::ptr)]; + // expr_identifier_nosize // expr_identifier char dummy35[sizeof (ast::expr_identifier::ptr)]; @@ -666,7 +667,6 @@ namespace xsk { namespace arc { namespace t6 { // stmt_while char dummy82[sizeof (ast::stmt_while::ptr)]; - // "field" // "path" // "identifier" // "string literal" @@ -765,7 +765,7 @@ namespace xsk { namespace arc { namespace t6 { TRUE = 39, // "true" FALSE = 40, // "false" UNDEFINED = 41, // "undefined" - SIZE = 42, // ".size" + SIZE = 42, // "size" GAME = 43, // "game" SELF = 44, // "self" ANIM = 45, // "anim" @@ -834,14 +834,14 @@ namespace xsk { namespace arc { namespace t6 { MUL = 108, // "*" DIV = 109, // "/" MOD = 110, // "%" - FIELD = 111, // "field" - PATH = 112, // "path" - IDENTIFIER = 113, // "identifier" - STRING = 114, // "string literal" - ISTRING = 115, // "localized string" - HASH = 116, // "hash" - FLOAT = 117, // "float" - INTEGER = 118, // "integer" + PATH = 111, // "path" + IDENTIFIER = 112, // "identifier" + STRING = 113, // "string literal" + ISTRING = 114, // "localized string" + HASH = 115, // "hash" + FLOAT = 116, // "float" + INTEGER = 117, // "integer" + SIZEOF = 118, // SIZEOF THEN = 119, // THEN TERN = 120, // TERN NEG = 121, // NEG @@ -910,7 +910,7 @@ namespace xsk { namespace arc { namespace t6 { S_TRUE = 39, // "true" S_FALSE = 40, // "false" S_UNDEFINED = 41, // "undefined" - S_SIZE = 42, // ".size" + S_SIZE = 42, // "size" S_GAME = 43, // "game" S_SELF = 44, // "self" S_ANIM = 45, // "anim" @@ -979,14 +979,14 @@ namespace xsk { namespace arc { namespace t6 { S_MUL = 108, // "*" S_DIV = 109, // "/" S_MOD = 110, // "%" - S_FIELD = 111, // "field" - S_PATH = 112, // "path" - S_IDENTIFIER = 113, // "identifier" - S_STRING = 114, // "string literal" - S_ISTRING = 115, // "localized string" - S_HASH = 116, // "hash" - S_FLOAT = 117, // "float" - S_INTEGER = 118, // "integer" + S_PATH = 111, // "path" + S_IDENTIFIER = 112, // "identifier" + S_STRING = 113, // "string literal" + S_ISTRING = 114, // "localized string" + S_HASH = 115, // "hash" + S_FLOAT = 116, // "float" + S_INTEGER = 117, // "integer" + S_SIZEOF = 118, // SIZEOF S_THEN = 119, // THEN S_TERN = 120, // TERN S_NEG = 121, // NEG @@ -1083,16 +1083,17 @@ namespace xsk { namespace arc { namespace t6 { S_expr_anim = 212, // expr_anim S_expr_level = 213, // expr_level S_expr_animation = 214, // expr_animation - S_expr_identifier = 215, // expr_identifier - S_expr_path = 216, // expr_path - S_expr_istring = 217, // expr_istring - S_expr_string = 218, // expr_string - S_expr_vector = 219, // expr_vector - S_expr_hash = 220, // expr_hash - S_expr_float = 221, // expr_float - S_expr_integer = 222, // expr_integer - S_expr_false = 223, // expr_false - S_expr_true = 224 // expr_true + S_expr_identifier_nosize = 215, // expr_identifier_nosize + S_expr_identifier = 216, // expr_identifier + S_expr_path = 217, // expr_path + S_expr_istring = 218, // expr_istring + S_expr_string = 219, // expr_string + S_expr_vector = 220, // expr_vector + S_expr_hash = 221, // expr_hash + S_expr_float = 222, // expr_float + S_expr_integer = 223, // expr_integer + S_expr_false = 224, // expr_false + S_expr_true = 225 // expr_true }; }; @@ -1275,6 +1276,7 @@ namespace xsk { namespace arc { namespace t6 { value.move< ast::expr_hash::ptr > (std::move (that.value)); break; + case symbol_kind::S_expr_identifier_nosize: // expr_identifier_nosize case symbol_kind::S_expr_identifier: // expr_identifier value.move< ast::expr_identifier::ptr > (std::move (that.value)); break; @@ -1470,7 +1472,6 @@ namespace xsk { namespace arc { namespace t6 { value.move< ast::stmt_while::ptr > (std::move (that.value)); break; - case symbol_kind::S_FIELD: // "field" case symbol_kind::S_PATH: // "path" case symbol_kind::S_IDENTIFIER: // "identifier" case symbol_kind::S_STRING: // "string literal" @@ -2834,6 +2835,7 @@ switch (yykind) value.template destroy< ast::expr_hash::ptr > (); break; + case symbol_kind::S_expr_identifier_nosize: // expr_identifier_nosize case symbol_kind::S_expr_identifier: // expr_identifier value.template destroy< ast::expr_identifier::ptr > (); break; @@ -3029,7 +3031,6 @@ switch (yykind) value.template destroy< ast::stmt_while::ptr > (); break; - case symbol_kind::S_FIELD: // "field" case symbol_kind::S_PATH: // "path" case symbol_kind::S_IDENTIFIER: // "identifier" case symbol_kind::S_STRING: // "string literal" @@ -3136,7 +3137,7 @@ switch (yykind) { T6_ASSERT (tok == token::T6EOF || (token::T6error <= tok && tok <= token::MOD) - || (token::THEN <= tok && tok <= token::POSTDEC)); + || (token::SIZEOF <= tok && tok <= token::POSTDEC)); } #if 201103L <= YY_CPLUSPLUS symbol_type (int tok, std::string v, location_type l) @@ -3146,7 +3147,7 @@ switch (yykind) : super_type(token_type (tok), v, l) #endif { - T6_ASSERT ((token::FIELD <= tok && tok <= token::INTEGER)); + T6_ASSERT ((token::PATH <= tok && tok <= token::INTEGER)); } }; @@ -4861,21 +4862,6 @@ switch (yykind) return symbol_type (token::MOD, l); } #endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_FIELD (std::string v, location_type l) - { - return symbol_type (token::FIELD, std::move (v), std::move (l)); - } -#else - static - symbol_type - make_FIELD (const std::string& v, const location_type& l) - { - return symbol_type (token::FIELD, v, l); - } -#endif #if 201103L <= YY_CPLUSPLUS static symbol_type @@ -4981,6 +4967,21 @@ switch (yykind) return symbol_type (token::INTEGER, v, l); } #endif +#if 201103L <= YY_CPLUSPLUS + static + symbol_type + make_SIZEOF (location_type l) + { + return symbol_type (token::SIZEOF, std::move (l)); + } +#else + static + symbol_type + make_SIZEOF (const location_type& l) + { + return symbol_type (token::SIZEOF, l); + } +#endif #if 201103L <= YY_CPLUSPLUS static symbol_type @@ -5445,9 +5446,9 @@ switch (yykind) /// Constants. enum { - yylast_ = 2819, ///< Last index in yytable_. - yynnts_ = 98, ///< Number of nonterminal symbols. - yyfinal_ = 21 ///< Termination state number. + yylast_ = 2863, ///< Last index in yytable_. + yynnts_ = 99, ///< Number of nonterminal symbols. + yyfinal_ = 22 ///< Termination state number. }; @@ -5619,6 +5620,7 @@ switch (yykind) value.copy< ast::expr_hash::ptr > (YY_MOVE (that.value)); break; + case symbol_kind::S_expr_identifier_nosize: // expr_identifier_nosize case symbol_kind::S_expr_identifier: // expr_identifier value.copy< ast::expr_identifier::ptr > (YY_MOVE (that.value)); break; @@ -5814,7 +5816,6 @@ switch (yykind) value.copy< ast::stmt_while::ptr > (YY_MOVE (that.value)); break; - case symbol_kind::S_FIELD: // "field" case symbol_kind::S_PATH: // "path" case symbol_kind::S_IDENTIFIER: // "identifier" case symbol_kind::S_STRING: // "string literal" @@ -6000,6 +6001,7 @@ switch (yykind) value.move< ast::expr_hash::ptr > (YY_MOVE (s.value)); break; + case symbol_kind::S_expr_identifier_nosize: // expr_identifier_nosize case symbol_kind::S_expr_identifier: // expr_identifier value.move< ast::expr_identifier::ptr > (YY_MOVE (s.value)); break; @@ -6195,7 +6197,6 @@ switch (yykind) value.move< ast::stmt_while::ptr > (YY_MOVE (s.value)); break; - case symbol_kind::S_FIELD: // "field" case symbol_kind::S_PATH: // "path" case symbol_kind::S_IDENTIFIER: // "identifier" case symbol_kind::S_STRING: // "string literal" @@ -6269,7 +6270,7 @@ switch (yykind) #line 13 "parser.ypp" } } } // xsk::arc::t6 -#line 6273 "parser.hpp" +#line 6274 "parser.hpp"