support html colors, hex/octal/bin integers
This commit is contained in:
parent
dc9a8194c2
commit
8ced7a8c85
@ -26,8 +26,12 @@ using namespace xsk::gsc;
|
|||||||
RGX_FILE ([_A-Za-z0-9]+\\)+[_A-Za-z0-9]+
|
RGX_FILE ([_A-Za-z0-9]+\\)+[_A-Za-z0-9]+
|
||||||
RGX_NAME [_A-Za-z][_A-Za-z0-9]*
|
RGX_NAME [_A-Za-z][_A-Za-z0-9]*
|
||||||
RGX_STRING \"(?:\\.|[^\"])*?\"|\'(?:\\.|[^\'])*?\'
|
RGX_STRING \"(?:\\.|[^\"])*?\"|\'(?:\\.|[^\'])*?\'
|
||||||
RGX_FLOAT [0-9]+\.(?:[0-9]*)?f?|\.[0-9]+f?
|
RGX_COLOR #([0-9a-fA-F]{6}|[0-9a-fA-F]{3})
|
||||||
RGX_INTEGER [0-9]+
|
RGX_FLT_DEC [0-9]+\.(?:[0-9]*)?f?|\.[0-9]+f?
|
||||||
|
RGX_INT_OCT 0[1-7][0-7]*
|
||||||
|
RGX_INT_BIN 0[bB][01]+
|
||||||
|
RGX_INT_HEX 0[xX][0-9a-fA-F]+
|
||||||
|
RGX_INT_DEC [0-9]+
|
||||||
RGX_DEFAULT (.|\n)
|
RGX_DEFAULT (.|\n)
|
||||||
|
|
||||||
%x COMMENT_BLOCK_STATE
|
%x COMMENT_BLOCK_STATE
|
||||||
@ -141,8 +145,12 @@ RGX_DEFAULT (.|\n)
|
|||||||
{RGX_NAME} { return h1::parser::make_NAME((std::string(yytext, 3) == "_ID") ? std::string(yytext) : utils::string::to_lower(yytext), loc); }
|
{RGX_NAME} { return h1::parser::make_NAME((std::string(yytext, 3) == "_ID") ? std::string(yytext) : utils::string::to_lower(yytext), loc); }
|
||||||
\&{RGX_STRING} { return h1::parser::make_ISTRING(std::string(yytext).substr(1), loc); }
|
\&{RGX_STRING} { return h1::parser::make_ISTRING(std::string(yytext).substr(1), loc); }
|
||||||
{RGX_STRING} { return h1::parser::make_STRING(std::string(yytext), loc); }
|
{RGX_STRING} { return h1::parser::make_STRING(std::string(yytext), loc); }
|
||||||
{RGX_FLOAT} { return h1::parser::make_FLOAT(std::string(yytext), loc); }
|
{RGX_COLOR} { return h1::parser::make_COLOR(std::string(yytext).substr(1), loc); }
|
||||||
{RGX_INTEGER} { return h1::parser::make_INTEGER(std::string(yytext), loc); }
|
{RGX_FLT_DEC} { return h1::parser::make_FLOAT(std::string(yytext), loc); }
|
||||||
|
{RGX_INT_OCT} { return h1::parser::make_INT_OCT(utils::string::oct_to_dec(yytext), loc); }
|
||||||
|
{RGX_INT_BIN} { return h1::parser::make_INT_BIN(utils::string::bin_to_dec(yytext), loc); }
|
||||||
|
{RGX_INT_HEX} { return h1::parser::make_INT_HEX(utils::string::hex_to_dec(yytext), loc); }
|
||||||
|
{RGX_INT_DEC} { return h1::parser::make_INT_DEC(std::string(yytext), loc); }
|
||||||
<<EOF>> { return h1::parser::make_H1EOF(loc); }
|
<<EOF>> { return h1::parser::make_H1EOF(loc); }
|
||||||
<*>{RGX_DEFAULT} { throw h1::parser::syntax_error(loc, "bad token: \'" + std::string(yytext) + "\'"); }
|
<*>{RGX_DEFAULT} { throw h1::parser::syntax_error(loc, "bad token: \'" + std::string(yytext) + "\'"); }
|
||||||
|
|
||||||
|
@ -131,8 +131,12 @@ xsk::gsc::h1::parser::symbol_type H1lex(yyscan_t yyscanner, xsk::gsc::location&
|
|||||||
%token <std::string> NAME "identifier"
|
%token <std::string> NAME "identifier"
|
||||||
%token <std::string> STRING "string literal"
|
%token <std::string> STRING "string literal"
|
||||||
%token <std::string> ISTRING "localized string"
|
%token <std::string> ISTRING "localized string"
|
||||||
|
%token <std::string> COLOR "color"
|
||||||
%token <std::string> FLOAT "float"
|
%token <std::string> FLOAT "float"
|
||||||
%token <std::string> INTEGER "int"
|
%token <std::string> INT_DEC "int"
|
||||||
|
%token <std::string> INT_OCT "octal int"
|
||||||
|
%token <std::string> INT_BIN "binary int"
|
||||||
|
%token <std::string> INT_HEX "hexadecimal int"
|
||||||
|
|
||||||
%type <program_ptr> program
|
%type <program_ptr> program
|
||||||
%type <include_ptr> include
|
%type <include_ptr> include
|
||||||
@ -202,9 +206,8 @@ xsk::gsc::h1::parser::symbol_type H1lex(yyscan_t yyscanner, xsk::gsc::location&
|
|||||||
%type <file_ptr> file
|
%type <file_ptr> file
|
||||||
%type <istring_ptr> istring
|
%type <istring_ptr> istring
|
||||||
%type <string_ptr> string
|
%type <string_ptr> string
|
||||||
|
%type <color_ptr> color
|
||||||
%type <vector_ptr> vector
|
%type <vector_ptr> vector
|
||||||
%type <float_ptr> neg_float
|
|
||||||
%type <integer_ptr> neg_integer
|
|
||||||
%type <float_ptr> float
|
%type <float_ptr> float
|
||||||
%type <integer_ptr> integer
|
%type <integer_ptr> integer
|
||||||
%type <false_ptr> false
|
%type <false_ptr> false
|
||||||
@ -419,8 +422,6 @@ stmt_switch
|
|||||||
stmt_case
|
stmt_case
|
||||||
: CASE integer COLON
|
: CASE integer COLON
|
||||||
{ $$ = std::make_unique<node_stmt_case>(@$, expr_ptr(std::move($2)), std::make_unique<gsc::node_stmt_list>(@$)); }
|
{ $$ = std::make_unique<node_stmt_case>(@$, expr_ptr(std::move($2)), std::make_unique<gsc::node_stmt_list>(@$)); }
|
||||||
| CASE neg_integer COLON
|
|
||||||
{ $$ = std::make_unique<node_stmt_case>(@$, expr_ptr(std::move($2)), std::make_unique<gsc::node_stmt_list>(@$)); }
|
|
||||||
| CASE string COLON
|
| CASE string COLON
|
||||||
{ $$ = std::make_unique<node_stmt_case>(@$, expr_ptr(std::move($2)), std::make_unique<gsc::node_stmt_list>(@$)); }
|
{ $$ = std::make_unique<node_stmt_case>(@$, expr_ptr(std::move($2)), std::make_unique<gsc::node_stmt_list>(@$)); }
|
||||||
;
|
;
|
||||||
@ -549,9 +550,8 @@ expr_primitive
|
|||||||
| name { $$.as_node = std::move($1); }
|
| name { $$.as_node = std::move($1); }
|
||||||
| istring { $$.as_node = std::move($1); }
|
| istring { $$.as_node = std::move($1); }
|
||||||
| string { $$.as_node = std::move($1); }
|
| string { $$.as_node = std::move($1); }
|
||||||
|
| color { $$.as_node = std::move($1); }
|
||||||
| vector { $$.as_node = std::move($1); }
|
| vector { $$.as_node = std::move($1); }
|
||||||
| neg_float { $$.as_node = std::move($1); }
|
|
||||||
| neg_integer { $$.as_node = std::move($1); }
|
|
||||||
| float { $$.as_node = std::move($1); }
|
| float { $$.as_node = std::move($1); }
|
||||||
| integer { $$.as_node = std::move($1); }
|
| integer { $$.as_node = std::move($1); }
|
||||||
| false { $$.as_node = std::move($1); }
|
| false { $$.as_node = std::move($1); }
|
||||||
@ -648,6 +648,19 @@ object
|
|||||||
| name { $$ = std::move($1); }
|
| name { $$ = std::move($1); }
|
||||||
;
|
;
|
||||||
|
|
||||||
|
float
|
||||||
|
: SUB FLOAT %prec NEG { $$ = std::make_unique<node_float>(@$, "-" + $2); };
|
||||||
|
| FLOAT { $$ = std::make_unique<node_float>(@$, $1); };
|
||||||
|
;
|
||||||
|
|
||||||
|
integer
|
||||||
|
: SUB INT_DEC %prec NEG { $$ = std::make_unique<node_integer>(@$, "-" + $2); };
|
||||||
|
| INT_DEC { $$ = std::make_unique<node_integer>(@$, $1); };
|
||||||
|
| INT_OCT { $$ = std::make_unique<node_integer>(@$, $1); };
|
||||||
|
| INT_BIN { $$ = std::make_unique<node_integer>(@$, $1); };
|
||||||
|
| INT_HEX { $$ = std::make_unique<node_integer>(@$, $1); };
|
||||||
|
;
|
||||||
|
|
||||||
thisthread : THISTHREAD { $$ = std::make_unique<node_thisthread>(@$); };
|
thisthread : THISTHREAD { $$ = std::make_unique<node_thisthread>(@$); };
|
||||||
empty_array : LBRACKET RBRACKET { $$ = std::make_unique<node_empty_array>(@$); };
|
empty_array : LBRACKET RBRACKET { $$ = std::make_unique<node_empty_array>(@$); };
|
||||||
undefined : UNDEFINED { $$ = std::make_unique<node_undefined>(@$); };
|
undefined : UNDEFINED { $$ = std::make_unique<node_undefined>(@$); };
|
||||||
@ -661,11 +674,8 @@ name : NAME { $$ = std::make_unique<n
|
|||||||
file : FILE { $$ = std::make_unique<node_file>(@$, $1); };
|
file : FILE { $$ = std::make_unique<node_file>(@$, $1); };
|
||||||
istring : ISTRING { $$ = std::make_unique<node_istring>(@$, $1); };
|
istring : ISTRING { $$ = std::make_unique<node_istring>(@$, $1); };
|
||||||
string : STRING { $$ = std::make_unique<node_string>(@$, $1); };
|
string : STRING { $$ = std::make_unique<node_string>(@$, $1); };
|
||||||
|
color : COLOR { $$ = std::make_unique<node_color>(@$, $1); };
|
||||||
vector : LPAREN expr COMMA expr COMMA expr RPAREN { $$ = std::make_unique<node_vector>(@$, std::move($2), std::move($4), std::move($6)); };
|
vector : LPAREN expr COMMA expr COMMA expr RPAREN { $$ = std::make_unique<node_vector>(@$, std::move($2), std::move($4), std::move($6)); };
|
||||||
neg_float : SUB FLOAT %prec NEG { $$ = std::make_unique<node_float>(@$, "-" + $2); };
|
|
||||||
neg_integer : SUB INTEGER %prec NEG { $$ = std::make_unique<node_integer>(@$, "-" + $2); };
|
|
||||||
float : FLOAT { $$ = std::make_unique<node_float>(@$, $1); };
|
|
||||||
integer : INTEGER { $$ = std::make_unique<node_integer>(@$, $1); };
|
|
||||||
false : FALSE { $$ = std::make_unique<node_false>(@$); };
|
false : FALSE { $$ = std::make_unique<node_false>(@$); };
|
||||||
true : TRUE { $$ = std::make_unique<node_true>(@$); };
|
true : TRUE { $$ = std::make_unique<node_true>(@$); };
|
||||||
|
|
||||||
|
@ -26,8 +26,12 @@ using namespace xsk::gsc;
|
|||||||
RGX_FILE ([_A-Za-z0-9]+\\)+[_A-Za-z0-9]+
|
RGX_FILE ([_A-Za-z0-9]+\\)+[_A-Za-z0-9]+
|
||||||
RGX_NAME [_A-Za-z][_A-Za-z0-9]*
|
RGX_NAME [_A-Za-z][_A-Za-z0-9]*
|
||||||
RGX_STRING \"(?:\\.|[^\"])*?\"|\'(?:\\.|[^\'])*?\'
|
RGX_STRING \"(?:\\.|[^\"])*?\"|\'(?:\\.|[^\'])*?\'
|
||||||
RGX_FLOAT [0-9]+\.(?:[0-9]*)?f?|\.[0-9]+f?
|
RGX_COLOR #([0-9a-fA-F]{6}|[0-9a-fA-F]{3})
|
||||||
RGX_INTEGER [0-9]+
|
RGX_FLT_DEC [0-9]+\.(?:[0-9]*)?f?|\.[0-9]+f?
|
||||||
|
RGX_INT_OCT 0[1-7][0-7]*
|
||||||
|
RGX_INT_BIN 0[bB][01]+
|
||||||
|
RGX_INT_HEX 0[xX][0-9a-fA-F]+
|
||||||
|
RGX_INT_DEC [0-9]+
|
||||||
RGX_DEFAULT (.|\n)
|
RGX_DEFAULT (.|\n)
|
||||||
|
|
||||||
%x COMMENT_BLOCK_STATE
|
%x COMMENT_BLOCK_STATE
|
||||||
@ -141,8 +145,12 @@ RGX_DEFAULT (.|\n)
|
|||||||
{RGX_NAME} { return h2::parser::make_NAME((std::string(yytext, 3) == "_ID") ? std::string(yytext) : utils::string::to_lower(yytext), loc); }
|
{RGX_NAME} { return h2::parser::make_NAME((std::string(yytext, 3) == "_ID") ? std::string(yytext) : utils::string::to_lower(yytext), loc); }
|
||||||
\&{RGX_STRING} { return h2::parser::make_ISTRING(std::string(yytext).substr(1), loc); }
|
\&{RGX_STRING} { return h2::parser::make_ISTRING(std::string(yytext).substr(1), loc); }
|
||||||
{RGX_STRING} { return h2::parser::make_STRING(std::string(yytext), loc); }
|
{RGX_STRING} { return h2::parser::make_STRING(std::string(yytext), loc); }
|
||||||
{RGX_FLOAT} { return h2::parser::make_FLOAT(std::string(yytext), loc); }
|
{RGX_COLOR} { return h2::parser::make_COLOR(std::string(yytext).substr(1), loc); }
|
||||||
{RGX_INTEGER} { return h2::parser::make_INTEGER(std::string(yytext), loc); }
|
{RGX_FLT_DEC} { return h2::parser::make_FLOAT(std::string(yytext), loc); }
|
||||||
|
{RGX_INT_OCT} { return h2::parser::make_INT_OCT(utils::string::oct_to_dec(yytext), loc); }
|
||||||
|
{RGX_INT_BIN} { return h2::parser::make_INT_BIN(utils::string::bin_to_dec(yytext), loc); }
|
||||||
|
{RGX_INT_HEX} { return h2::parser::make_INT_HEX(utils::string::hex_to_dec(yytext), loc); }
|
||||||
|
{RGX_INT_DEC} { return h2::parser::make_INT_DEC(std::string(yytext), loc); }
|
||||||
<<EOF>> { return h2::parser::make_H2EOF(loc); }
|
<<EOF>> { return h2::parser::make_H2EOF(loc); }
|
||||||
<*>{RGX_DEFAULT} { throw h2::parser::syntax_error(loc, "bad token: \'" + std::string(yytext) + "\'"); }
|
<*>{RGX_DEFAULT} { throw h2::parser::syntax_error(loc, "bad token: \'" + std::string(yytext) + "\'"); }
|
||||||
|
|
||||||
|
@ -131,8 +131,12 @@ xsk::gsc::h2::parser::symbol_type H2lex(yyscan_t yyscanner, xsk::gsc::location&
|
|||||||
%token <std::string> NAME "identifier"
|
%token <std::string> NAME "identifier"
|
||||||
%token <std::string> STRING "string literal"
|
%token <std::string> STRING "string literal"
|
||||||
%token <std::string> ISTRING "localized string"
|
%token <std::string> ISTRING "localized string"
|
||||||
|
%token <std::string> COLOR "color"
|
||||||
%token <std::string> FLOAT "float"
|
%token <std::string> FLOAT "float"
|
||||||
%token <std::string> INTEGER "int"
|
%token <std::string> INT_DEC "int"
|
||||||
|
%token <std::string> INT_OCT "octal int"
|
||||||
|
%token <std::string> INT_BIN "binary int"
|
||||||
|
%token <std::string> INT_HEX "hexadecimal int"
|
||||||
|
|
||||||
%type <program_ptr> program
|
%type <program_ptr> program
|
||||||
%type <include_ptr> include
|
%type <include_ptr> include
|
||||||
@ -202,9 +206,8 @@ xsk::gsc::h2::parser::symbol_type H2lex(yyscan_t yyscanner, xsk::gsc::location&
|
|||||||
%type <file_ptr> file
|
%type <file_ptr> file
|
||||||
%type <istring_ptr> istring
|
%type <istring_ptr> istring
|
||||||
%type <string_ptr> string
|
%type <string_ptr> string
|
||||||
|
%type <color_ptr> color
|
||||||
%type <vector_ptr> vector
|
%type <vector_ptr> vector
|
||||||
%type <float_ptr> neg_float
|
|
||||||
%type <integer_ptr> neg_integer
|
|
||||||
%type <float_ptr> float
|
%type <float_ptr> float
|
||||||
%type <integer_ptr> integer
|
%type <integer_ptr> integer
|
||||||
%type <false_ptr> false
|
%type <false_ptr> false
|
||||||
@ -419,8 +422,6 @@ stmt_switch
|
|||||||
stmt_case
|
stmt_case
|
||||||
: CASE integer COLON
|
: CASE integer COLON
|
||||||
{ $$ = std::make_unique<node_stmt_case>(@$, expr_ptr(std::move($2)), std::make_unique<gsc::node_stmt_list>(@$)); }
|
{ $$ = std::make_unique<node_stmt_case>(@$, expr_ptr(std::move($2)), std::make_unique<gsc::node_stmt_list>(@$)); }
|
||||||
| CASE neg_integer COLON
|
|
||||||
{ $$ = std::make_unique<node_stmt_case>(@$, expr_ptr(std::move($2)), std::make_unique<gsc::node_stmt_list>(@$)); }
|
|
||||||
| CASE string COLON
|
| CASE string COLON
|
||||||
{ $$ = std::make_unique<node_stmt_case>(@$, expr_ptr(std::move($2)), std::make_unique<gsc::node_stmt_list>(@$)); }
|
{ $$ = std::make_unique<node_stmt_case>(@$, expr_ptr(std::move($2)), std::make_unique<gsc::node_stmt_list>(@$)); }
|
||||||
;
|
;
|
||||||
@ -549,9 +550,8 @@ expr_primitive
|
|||||||
| name { $$.as_node = std::move($1); }
|
| name { $$.as_node = std::move($1); }
|
||||||
| istring { $$.as_node = std::move($1); }
|
| istring { $$.as_node = std::move($1); }
|
||||||
| string { $$.as_node = std::move($1); }
|
| string { $$.as_node = std::move($1); }
|
||||||
|
| color { $$.as_node = std::move($1); }
|
||||||
| vector { $$.as_node = std::move($1); }
|
| vector { $$.as_node = std::move($1); }
|
||||||
| neg_float { $$.as_node = std::move($1); }
|
|
||||||
| neg_integer { $$.as_node = std::move($1); }
|
|
||||||
| float { $$.as_node = std::move($1); }
|
| float { $$.as_node = std::move($1); }
|
||||||
| integer { $$.as_node = std::move($1); }
|
| integer { $$.as_node = std::move($1); }
|
||||||
| false { $$.as_node = std::move($1); }
|
| false { $$.as_node = std::move($1); }
|
||||||
@ -648,6 +648,19 @@ object
|
|||||||
| name { $$ = std::move($1); }
|
| name { $$ = std::move($1); }
|
||||||
;
|
;
|
||||||
|
|
||||||
|
float
|
||||||
|
: SUB FLOAT %prec NEG { $$ = std::make_unique<node_float>(@$, "-" + $2); };
|
||||||
|
| FLOAT { $$ = std::make_unique<node_float>(@$, $1); };
|
||||||
|
;
|
||||||
|
|
||||||
|
integer
|
||||||
|
: SUB INT_DEC %prec NEG { $$ = std::make_unique<node_integer>(@$, "-" + $2); };
|
||||||
|
| INT_DEC { $$ = std::make_unique<node_integer>(@$, $1); };
|
||||||
|
| INT_OCT { $$ = std::make_unique<node_integer>(@$, $1); };
|
||||||
|
| INT_BIN { $$ = std::make_unique<node_integer>(@$, $1); };
|
||||||
|
| INT_HEX { $$ = std::make_unique<node_integer>(@$, $1); };
|
||||||
|
;
|
||||||
|
|
||||||
thisthread : THISTHREAD { $$ = std::make_unique<node_thisthread>(@$); };
|
thisthread : THISTHREAD { $$ = std::make_unique<node_thisthread>(@$); };
|
||||||
empty_array : LBRACKET RBRACKET { $$ = std::make_unique<node_empty_array>(@$); };
|
empty_array : LBRACKET RBRACKET { $$ = std::make_unique<node_empty_array>(@$); };
|
||||||
undefined : UNDEFINED { $$ = std::make_unique<node_undefined>(@$); };
|
undefined : UNDEFINED { $$ = std::make_unique<node_undefined>(@$); };
|
||||||
@ -661,11 +674,8 @@ name : NAME { $$ = std::make_unique<n
|
|||||||
file : FILE { $$ = std::make_unique<node_file>(@$, $1); };
|
file : FILE { $$ = std::make_unique<node_file>(@$, $1); };
|
||||||
istring : ISTRING { $$ = std::make_unique<node_istring>(@$, $1); };
|
istring : ISTRING { $$ = std::make_unique<node_istring>(@$, $1); };
|
||||||
string : STRING { $$ = std::make_unique<node_string>(@$, $1); };
|
string : STRING { $$ = std::make_unique<node_string>(@$, $1); };
|
||||||
|
color : COLOR { $$ = std::make_unique<node_color>(@$, $1); };
|
||||||
vector : LPAREN expr COMMA expr COMMA expr RPAREN { $$ = std::make_unique<node_vector>(@$, std::move($2), std::move($4), std::move($6)); };
|
vector : LPAREN expr COMMA expr COMMA expr RPAREN { $$ = std::make_unique<node_vector>(@$, std::move($2), std::move($4), std::move($6)); };
|
||||||
neg_float : SUB FLOAT %prec NEG { $$ = std::make_unique<node_float>(@$, "-" + $2); };
|
|
||||||
neg_integer : SUB INTEGER %prec NEG { $$ = std::make_unique<node_integer>(@$, "-" + $2); };
|
|
||||||
float : FLOAT { $$ = std::make_unique<node_float>(@$, $1); };
|
|
||||||
integer : INTEGER { $$ = std::make_unique<node_integer>(@$, $1); };
|
|
||||||
false : FALSE { $$ = std::make_unique<node_false>(@$); };
|
false : FALSE { $$ = std::make_unique<node_false>(@$); };
|
||||||
true : TRUE { $$ = std::make_unique<node_true>(@$); };
|
true : TRUE { $$ = std::make_unique<node_true>(@$); };
|
||||||
|
|
||||||
|
@ -26,8 +26,12 @@ using namespace xsk::gsc;
|
|||||||
RGX_FILE ([_A-Za-z0-9]+\\)+[_A-Za-z0-9]+
|
RGX_FILE ([_A-Za-z0-9]+\\)+[_A-Za-z0-9]+
|
||||||
RGX_NAME [_A-Za-z][_A-Za-z0-9]*
|
RGX_NAME [_A-Za-z][_A-Za-z0-9]*
|
||||||
RGX_STRING \"(?:\\.|[^\"])*?\"|\'(?:\\.|[^\'])*?\'
|
RGX_STRING \"(?:\\.|[^\"])*?\"|\'(?:\\.|[^\'])*?\'
|
||||||
RGX_FLOAT [0-9]+\.(?:[0-9]*)?f?|\.[0-9]+f?
|
RGX_COLOR #([0-9a-fA-F]{6}|[0-9a-fA-F]{3})
|
||||||
RGX_INTEGER [0-9]+
|
RGX_FLT_DEC [0-9]+\.(?:[0-9]*)?f?|\.[0-9]+f?
|
||||||
|
RGX_INT_OCT 0[1-7][0-7]*
|
||||||
|
RGX_INT_BIN 0[bB][01]+
|
||||||
|
RGX_INT_HEX 0[xX][0-9a-fA-F]+
|
||||||
|
RGX_INT_DEC [0-9]+
|
||||||
RGX_DEFAULT (.|\n)
|
RGX_DEFAULT (.|\n)
|
||||||
|
|
||||||
%x COMMENT_BLOCK_STATE
|
%x COMMENT_BLOCK_STATE
|
||||||
@ -140,8 +144,12 @@ RGX_DEFAULT (.|\n)
|
|||||||
{RGX_NAME} { return iw5::parser::make_NAME((std::string(yytext, 3) == "_ID") ? std::string(yytext) : utils::string::to_lower(yytext), loc); }
|
{RGX_NAME} { return iw5::parser::make_NAME((std::string(yytext, 3) == "_ID") ? std::string(yytext) : utils::string::to_lower(yytext), loc); }
|
||||||
\&{RGX_STRING} { return iw5::parser::make_ISTRING(std::string(yytext).substr(1), loc); }
|
\&{RGX_STRING} { return iw5::parser::make_ISTRING(std::string(yytext).substr(1), loc); }
|
||||||
{RGX_STRING} { return iw5::parser::make_STRING(std::string(yytext), loc); }
|
{RGX_STRING} { return iw5::parser::make_STRING(std::string(yytext), loc); }
|
||||||
{RGX_FLOAT} { return iw5::parser::make_FLOAT(std::string(yytext), loc); }
|
{RGX_COLOR} { return iw5::parser::make_COLOR(std::string(yytext).substr(1), loc); }
|
||||||
{RGX_INTEGER} { return iw5::parser::make_INTEGER(std::string(yytext), loc); }
|
{RGX_FLT_DEC} { return iw5::parser::make_FLOAT(std::string(yytext), loc); }
|
||||||
|
{RGX_INT_OCT} { return iw5::parser::make_INT_OCT(utils::string::oct_to_dec(yytext), loc); }
|
||||||
|
{RGX_INT_BIN} { return iw5::parser::make_INT_BIN(utils::string::bin_to_dec(yytext), loc); }
|
||||||
|
{RGX_INT_HEX} { return iw5::parser::make_INT_HEX(utils::string::hex_to_dec(yytext), loc); }
|
||||||
|
{RGX_INT_DEC} { return iw5::parser::make_INT_DEC(std::string(yytext), loc); }
|
||||||
<<EOF>> { return iw5::parser::make_IW5EOF(loc); }
|
<<EOF>> { return iw5::parser::make_IW5EOF(loc); }
|
||||||
<*>{RGX_DEFAULT} { throw iw5::parser::syntax_error(loc, "bad token: '" + std::string(yytext) + "'"); }
|
<*>{RGX_DEFAULT} { throw iw5::parser::syntax_error(loc, "bad token: '" + std::string(yytext) + "'"); }
|
||||||
|
|
||||||
|
@ -130,8 +130,12 @@ xsk::gsc::iw5::parser::symbol_type IW5lex(yyscan_t yyscanner, xsk::gsc::location
|
|||||||
%token <std::string> NAME "identifier"
|
%token <std::string> NAME "identifier"
|
||||||
%token <std::string> STRING "string literal"
|
%token <std::string> STRING "string literal"
|
||||||
%token <std::string> ISTRING "localized string"
|
%token <std::string> ISTRING "localized string"
|
||||||
|
%token <std::string> COLOR "color"
|
||||||
%token <std::string> FLOAT "float"
|
%token <std::string> FLOAT "float"
|
||||||
%token <std::string> INTEGER "int"
|
%token <std::string> INT_DEC "int"
|
||||||
|
%token <std::string> INT_OCT "octal int"
|
||||||
|
%token <std::string> INT_BIN "binary int"
|
||||||
|
%token <std::string> INT_HEX "hexadecimal int"
|
||||||
|
|
||||||
%type <program_ptr> program
|
%type <program_ptr> program
|
||||||
%type <include_ptr> include
|
%type <include_ptr> include
|
||||||
@ -200,9 +204,8 @@ xsk::gsc::iw5::parser::symbol_type IW5lex(yyscan_t yyscanner, xsk::gsc::location
|
|||||||
%type <file_ptr> file
|
%type <file_ptr> file
|
||||||
%type <istring_ptr> istring
|
%type <istring_ptr> istring
|
||||||
%type <string_ptr> string
|
%type <string_ptr> string
|
||||||
|
%type <color_ptr> color
|
||||||
%type <vector_ptr> vector
|
%type <vector_ptr> vector
|
||||||
%type <float_ptr> neg_float
|
|
||||||
%type <integer_ptr> neg_integer
|
|
||||||
%type <float_ptr> float
|
%type <float_ptr> float
|
||||||
%type <integer_ptr> integer
|
%type <integer_ptr> integer
|
||||||
%type <false_ptr> false
|
%type <false_ptr> false
|
||||||
@ -409,8 +412,6 @@ stmt_switch
|
|||||||
stmt_case
|
stmt_case
|
||||||
: CASE integer COLON
|
: CASE integer COLON
|
||||||
{ $$ = std::make_unique<node_stmt_case>(@$, expr_ptr(std::move($2)), std::make_unique<gsc::node_stmt_list>(@$)); }
|
{ $$ = std::make_unique<node_stmt_case>(@$, expr_ptr(std::move($2)), std::make_unique<gsc::node_stmt_list>(@$)); }
|
||||||
| CASE neg_integer COLON
|
|
||||||
{ $$ = std::make_unique<node_stmt_case>(@$, expr_ptr(std::move($2)), std::make_unique<gsc::node_stmt_list>(@$)); }
|
|
||||||
| CASE string COLON
|
| CASE string COLON
|
||||||
{ $$ = std::make_unique<node_stmt_case>(@$, expr_ptr(std::move($2)), std::make_unique<gsc::node_stmt_list>(@$)); }
|
{ $$ = std::make_unique<node_stmt_case>(@$, expr_ptr(std::move($2)), std::make_unique<gsc::node_stmt_list>(@$)); }
|
||||||
;
|
;
|
||||||
@ -539,9 +540,8 @@ expr_primitive
|
|||||||
| name { $$.as_node = std::move($1); }
|
| name { $$.as_node = std::move($1); }
|
||||||
| istring { $$.as_node = std::move($1); }
|
| istring { $$.as_node = std::move($1); }
|
||||||
| string { $$.as_node = std::move($1); }
|
| string { $$.as_node = std::move($1); }
|
||||||
|
| color { $$.as_node = std::move($1); }
|
||||||
| vector { $$.as_node = std::move($1); }
|
| vector { $$.as_node = std::move($1); }
|
||||||
| neg_float { $$.as_node = std::move($1); }
|
|
||||||
| neg_integer { $$.as_node = std::move($1); }
|
|
||||||
| float { $$.as_node = std::move($1); }
|
| float { $$.as_node = std::move($1); }
|
||||||
| integer { $$.as_node = std::move($1); }
|
| integer { $$.as_node = std::move($1); }
|
||||||
| false { $$.as_node = std::move($1); }
|
| false { $$.as_node = std::move($1); }
|
||||||
@ -638,6 +638,19 @@ object
|
|||||||
| name { $$ = std::move($1); }
|
| name { $$ = std::move($1); }
|
||||||
;
|
;
|
||||||
|
|
||||||
|
float
|
||||||
|
: SUB FLOAT %prec NEG { $$ = std::make_unique<node_float>(@$, "-" + $2); };
|
||||||
|
| FLOAT { $$ = std::make_unique<node_float>(@$, $1); };
|
||||||
|
;
|
||||||
|
|
||||||
|
integer
|
||||||
|
: SUB INT_DEC %prec NEG { $$ = std::make_unique<node_integer>(@$, "-" + $2); };
|
||||||
|
| INT_DEC { $$ = std::make_unique<node_integer>(@$, $1); };
|
||||||
|
| INT_OCT { $$ = std::make_unique<node_integer>(@$, $1); };
|
||||||
|
| INT_BIN { $$ = std::make_unique<node_integer>(@$, $1); };
|
||||||
|
| INT_HEX { $$ = std::make_unique<node_integer>(@$, $1); };
|
||||||
|
;
|
||||||
|
|
||||||
thisthread : THISTHREAD { $$ = std::make_unique<node_thisthread>(@$); };
|
thisthread : THISTHREAD { $$ = std::make_unique<node_thisthread>(@$); };
|
||||||
empty_array : LBRACKET RBRACKET { $$ = std::make_unique<node_empty_array>(@$); };
|
empty_array : LBRACKET RBRACKET { $$ = std::make_unique<node_empty_array>(@$); };
|
||||||
undefined : UNDEFINED { $$ = std::make_unique<node_undefined>(@$); };
|
undefined : UNDEFINED { $$ = std::make_unique<node_undefined>(@$); };
|
||||||
@ -651,11 +664,8 @@ name : NAME { $$ = std::make_unique<n
|
|||||||
file : FILE { $$ = std::make_unique<node_file>(@$, $1); };
|
file : FILE { $$ = std::make_unique<node_file>(@$, $1); };
|
||||||
istring : ISTRING { $$ = std::make_unique<node_istring>(@$, $1); };
|
istring : ISTRING { $$ = std::make_unique<node_istring>(@$, $1); };
|
||||||
string : STRING { $$ = std::make_unique<node_string>(@$, $1); };
|
string : STRING { $$ = std::make_unique<node_string>(@$, $1); };
|
||||||
|
color : COLOR { $$ = std::make_unique<node_color>(@$, $1); };
|
||||||
vector : LPAREN expr COMMA expr COMMA expr RPAREN { $$ = std::make_unique<node_vector>(@$, std::move($2), std::move($4), std::move($6)); };
|
vector : LPAREN expr COMMA expr COMMA expr RPAREN { $$ = std::make_unique<node_vector>(@$, std::move($2), std::move($4), std::move($6)); };
|
||||||
neg_float : SUB FLOAT %prec NEG { $$ = std::make_unique<node_float>(@$, "-" + $2); };
|
|
||||||
neg_integer : SUB INTEGER %prec NEG { $$ = std::make_unique<node_integer>(@$, "-" + $2); };
|
|
||||||
float : FLOAT { $$ = std::make_unique<node_float>(@$, $1); };
|
|
||||||
integer : INTEGER { $$ = std::make_unique<node_integer>(@$, $1); };
|
|
||||||
false : FALSE { $$ = std::make_unique<node_false>(@$); };
|
false : FALSE { $$ = std::make_unique<node_false>(@$); };
|
||||||
true : TRUE { $$ = std::make_unique<node_true>(@$); };
|
true : TRUE { $$ = std::make_unique<node_true>(@$); };
|
||||||
|
|
||||||
|
@ -26,8 +26,12 @@ using namespace xsk::gsc;
|
|||||||
RGX_FILE ([_A-Za-z0-9]+\\)+[_A-Za-z0-9]+
|
RGX_FILE ([_A-Za-z0-9]+\\)+[_A-Za-z0-9]+
|
||||||
RGX_NAME [_A-Za-z][_A-Za-z0-9]*
|
RGX_NAME [_A-Za-z][_A-Za-z0-9]*
|
||||||
RGX_STRING \"(?:\\.|[^\"])*?\"|\'(?:\\.|[^\'])*?\'
|
RGX_STRING \"(?:\\.|[^\"])*?\"|\'(?:\\.|[^\'])*?\'
|
||||||
RGX_FLOAT [0-9]+\.(?:[0-9]*)?f?|\.[0-9]+f?
|
RGX_COLOR #([0-9a-fA-F]{6}|[0-9a-fA-F]{3})
|
||||||
RGX_INTEGER [0-9]+
|
RGX_FLT_DEC [0-9]+\.(?:[0-9]*)?f?|\.[0-9]+f?
|
||||||
|
RGX_INT_OCT 0[1-7][0-7]*
|
||||||
|
RGX_INT_BIN 0[bB][01]+
|
||||||
|
RGX_INT_HEX 0[xX][0-9a-fA-F]+
|
||||||
|
RGX_INT_DEC [0-9]+
|
||||||
RGX_DEFAULT (.|\n)
|
RGX_DEFAULT (.|\n)
|
||||||
|
|
||||||
%x COMMENT_BLOCK_STATE
|
%x COMMENT_BLOCK_STATE
|
||||||
@ -140,8 +144,12 @@ RGX_DEFAULT (.|\n)
|
|||||||
{RGX_NAME} { return iw6::parser::make_NAME((std::string(yytext, 3) == "_ID") ? std::string(yytext) : utils::string::to_lower(yytext), loc); }
|
{RGX_NAME} { return iw6::parser::make_NAME((std::string(yytext, 3) == "_ID") ? std::string(yytext) : utils::string::to_lower(yytext), loc); }
|
||||||
\&{RGX_STRING} { return iw6::parser::make_ISTRING(std::string(yytext).substr(1), loc); }
|
\&{RGX_STRING} { return iw6::parser::make_ISTRING(std::string(yytext).substr(1), loc); }
|
||||||
{RGX_STRING} { return iw6::parser::make_STRING(std::string(yytext), loc); }
|
{RGX_STRING} { return iw6::parser::make_STRING(std::string(yytext), loc); }
|
||||||
{RGX_FLOAT} { return iw6::parser::make_FLOAT(std::string(yytext), loc); }
|
{RGX_COLOR} { return iw6::parser::make_COLOR(std::string(yytext).substr(1), loc); }
|
||||||
{RGX_INTEGER} { return iw6::parser::make_INTEGER(std::string(yytext), loc); }
|
{RGX_FLT_DEC} { return iw6::parser::make_FLOAT(std::string(yytext), loc); }
|
||||||
|
{RGX_INT_OCT} { return iw6::parser::make_INT_OCT(utils::string::oct_to_dec(yytext), loc); }
|
||||||
|
{RGX_INT_BIN} { return iw6::parser::make_INT_BIN(utils::string::bin_to_dec(yytext), loc); }
|
||||||
|
{RGX_INT_HEX} { return iw6::parser::make_INT_HEX(utils::string::hex_to_dec(yytext), loc); }
|
||||||
|
{RGX_INT_DEC} { return iw6::parser::make_INT_DEC(std::string(yytext), loc); }
|
||||||
<<EOF>> { return iw6::parser::make_IW6EOF(loc); }
|
<<EOF>> { return iw6::parser::make_IW6EOF(loc); }
|
||||||
<*>{RGX_DEFAULT} { throw iw6::parser::syntax_error(loc, "bad token: \'" + std::string(yytext) + "\'"); }
|
<*>{RGX_DEFAULT} { throw iw6::parser::syntax_error(loc, "bad token: \'" + std::string(yytext) + "\'"); }
|
||||||
|
|
||||||
|
@ -130,8 +130,12 @@ xsk::gsc::iw6::parser::symbol_type IW6lex(yyscan_t yyscanner, xsk::gsc::location
|
|||||||
%token <std::string> NAME "identifier"
|
%token <std::string> NAME "identifier"
|
||||||
%token <std::string> STRING "string literal"
|
%token <std::string> STRING "string literal"
|
||||||
%token <std::string> ISTRING "localized string"
|
%token <std::string> ISTRING "localized string"
|
||||||
|
%token <std::string> COLOR "color"
|
||||||
%token <std::string> FLOAT "float"
|
%token <std::string> FLOAT "float"
|
||||||
%token <std::string> INTEGER "int"
|
%token <std::string> INT_DEC "int"
|
||||||
|
%token <std::string> INT_OCT "octal int"
|
||||||
|
%token <std::string> INT_BIN "binary int"
|
||||||
|
%token <std::string> INT_HEX "hexadecimal int"
|
||||||
|
|
||||||
%type <program_ptr> program
|
%type <program_ptr> program
|
||||||
%type <include_ptr> include
|
%type <include_ptr> include
|
||||||
@ -200,9 +204,8 @@ xsk::gsc::iw6::parser::symbol_type IW6lex(yyscan_t yyscanner, xsk::gsc::location
|
|||||||
%type <file_ptr> file
|
%type <file_ptr> file
|
||||||
%type <istring_ptr> istring
|
%type <istring_ptr> istring
|
||||||
%type <string_ptr> string
|
%type <string_ptr> string
|
||||||
|
%type <color_ptr> color
|
||||||
%type <vector_ptr> vector
|
%type <vector_ptr> vector
|
||||||
%type <float_ptr> neg_float
|
|
||||||
%type <integer_ptr> neg_integer
|
|
||||||
%type <float_ptr> float
|
%type <float_ptr> float
|
||||||
%type <integer_ptr> integer
|
%type <integer_ptr> integer
|
||||||
%type <false_ptr> false
|
%type <false_ptr> false
|
||||||
@ -409,8 +412,6 @@ stmt_switch
|
|||||||
stmt_case
|
stmt_case
|
||||||
: CASE integer COLON
|
: CASE integer COLON
|
||||||
{ $$ = std::make_unique<node_stmt_case>(@$, expr_ptr(std::move($2)), std::make_unique<gsc::node_stmt_list>(@$)); }
|
{ $$ = std::make_unique<node_stmt_case>(@$, expr_ptr(std::move($2)), std::make_unique<gsc::node_stmt_list>(@$)); }
|
||||||
| CASE neg_integer COLON
|
|
||||||
{ $$ = std::make_unique<node_stmt_case>(@$, expr_ptr(std::move($2)), std::make_unique<gsc::node_stmt_list>(@$)); }
|
|
||||||
| CASE string COLON
|
| CASE string COLON
|
||||||
{ $$ = std::make_unique<node_stmt_case>(@$, expr_ptr(std::move($2)), std::make_unique<gsc::node_stmt_list>(@$)); }
|
{ $$ = std::make_unique<node_stmt_case>(@$, expr_ptr(std::move($2)), std::make_unique<gsc::node_stmt_list>(@$)); }
|
||||||
;
|
;
|
||||||
@ -539,9 +540,8 @@ expr_primitive
|
|||||||
| name { $$.as_node = std::move($1); }
|
| name { $$.as_node = std::move($1); }
|
||||||
| istring { $$.as_node = std::move($1); }
|
| istring { $$.as_node = std::move($1); }
|
||||||
| string { $$.as_node = std::move($1); }
|
| string { $$.as_node = std::move($1); }
|
||||||
|
| color { $$.as_node = std::move($1); }
|
||||||
| vector { $$.as_node = std::move($1); }
|
| vector { $$.as_node = std::move($1); }
|
||||||
| neg_float { $$.as_node = std::move($1); }
|
|
||||||
| neg_integer { $$.as_node = std::move($1); }
|
|
||||||
| float { $$.as_node = std::move($1); }
|
| float { $$.as_node = std::move($1); }
|
||||||
| integer { $$.as_node = std::move($1); }
|
| integer { $$.as_node = std::move($1); }
|
||||||
| false { $$.as_node = std::move($1); }
|
| false { $$.as_node = std::move($1); }
|
||||||
@ -638,6 +638,19 @@ object
|
|||||||
| name { $$ = std::move($1); }
|
| name { $$ = std::move($1); }
|
||||||
;
|
;
|
||||||
|
|
||||||
|
float
|
||||||
|
: SUB FLOAT %prec NEG { $$ = std::make_unique<node_float>(@$, "-" + $2); };
|
||||||
|
| FLOAT { $$ = std::make_unique<node_float>(@$, $1); };
|
||||||
|
;
|
||||||
|
|
||||||
|
integer
|
||||||
|
: SUB INT_DEC %prec NEG { $$ = std::make_unique<node_integer>(@$, "-" + $2); };
|
||||||
|
| INT_DEC { $$ = std::make_unique<node_integer>(@$, $1); };
|
||||||
|
| INT_OCT { $$ = std::make_unique<node_integer>(@$, $1); };
|
||||||
|
| INT_BIN { $$ = std::make_unique<node_integer>(@$, $1); };
|
||||||
|
| INT_HEX { $$ = std::make_unique<node_integer>(@$, $1); };
|
||||||
|
;
|
||||||
|
|
||||||
thisthread : THISTHREAD { $$ = std::make_unique<node_thisthread>(@$); };
|
thisthread : THISTHREAD { $$ = std::make_unique<node_thisthread>(@$); };
|
||||||
empty_array : LBRACKET RBRACKET { $$ = std::make_unique<node_empty_array>(@$); };
|
empty_array : LBRACKET RBRACKET { $$ = std::make_unique<node_empty_array>(@$); };
|
||||||
undefined : UNDEFINED { $$ = std::make_unique<node_undefined>(@$); };
|
undefined : UNDEFINED { $$ = std::make_unique<node_undefined>(@$); };
|
||||||
@ -651,11 +664,8 @@ name : NAME { $$ = std::make_unique<n
|
|||||||
file : FILE { $$ = std::make_unique<node_file>(@$, $1); };
|
file : FILE { $$ = std::make_unique<node_file>(@$, $1); };
|
||||||
istring : ISTRING { $$ = std::make_unique<node_istring>(@$, $1); };
|
istring : ISTRING { $$ = std::make_unique<node_istring>(@$, $1); };
|
||||||
string : STRING { $$ = std::make_unique<node_string>(@$, $1); };
|
string : STRING { $$ = std::make_unique<node_string>(@$, $1); };
|
||||||
|
color : COLOR { $$ = std::make_unique<node_color>(@$, $1); };
|
||||||
vector : LPAREN expr COMMA expr COMMA expr RPAREN { $$ = std::make_unique<node_vector>(@$, std::move($2), std::move($4), std::move($6)); };
|
vector : LPAREN expr COMMA expr COMMA expr RPAREN { $$ = std::make_unique<node_vector>(@$, std::move($2), std::move($4), std::move($6)); };
|
||||||
neg_float : SUB FLOAT %prec NEG { $$ = std::make_unique<node_float>(@$, "-" + $2); };
|
|
||||||
neg_integer : SUB INTEGER %prec NEG { $$ = std::make_unique<node_integer>(@$, "-" + $2); };
|
|
||||||
float : FLOAT { $$ = std::make_unique<node_float>(@$, $1); };
|
|
||||||
integer : INTEGER { $$ = std::make_unique<node_integer>(@$, $1); };
|
|
||||||
false : FALSE { $$ = std::make_unique<node_false>(@$); };
|
false : FALSE { $$ = std::make_unique<node_false>(@$); };
|
||||||
true : TRUE { $$ = std::make_unique<node_true>(@$); };
|
true : TRUE { $$ = std::make_unique<node_true>(@$); };
|
||||||
|
|
||||||
|
@ -26,8 +26,12 @@ using namespace xsk::gsc;
|
|||||||
RGX_FILE ([_A-Za-z0-9]+\\)+[_A-Za-z0-9]+
|
RGX_FILE ([_A-Za-z0-9]+\\)+[_A-Za-z0-9]+
|
||||||
RGX_NAME [_A-Za-z][_A-Za-z0-9]*
|
RGX_NAME [_A-Za-z][_A-Za-z0-9]*
|
||||||
RGX_STRING \"(?:\\.|[^\"])*?\"|\'(?:\\.|[^\'])*?\'
|
RGX_STRING \"(?:\\.|[^\"])*?\"|\'(?:\\.|[^\'])*?\'
|
||||||
RGX_FLOAT [0-9]+\.(?:[0-9]*)?f?|\.[0-9]+f?
|
RGX_COLOR #([0-9a-fA-F]{6}|[0-9a-fA-F]{3})
|
||||||
RGX_INTEGER [0-9]+
|
RGX_FLT_DEC [0-9]+\.(?:[0-9]*)?f?|\.[0-9]+f?
|
||||||
|
RGX_INT_OCT 0[1-7][0-7]*
|
||||||
|
RGX_INT_BIN 0[bB][01]+
|
||||||
|
RGX_INT_HEX 0[xX][0-9a-fA-F]+
|
||||||
|
RGX_INT_DEC [0-9]+
|
||||||
RGX_DEFAULT (.|\n)
|
RGX_DEFAULT (.|\n)
|
||||||
|
|
||||||
%x COMMENT_BLOCK_STATE
|
%x COMMENT_BLOCK_STATE
|
||||||
@ -140,8 +144,12 @@ RGX_DEFAULT (.|\n)
|
|||||||
{RGX_NAME} { return iw7::parser::make_NAME((std::string(yytext, 3) == "_ID") ? std::string(yytext) : utils::string::to_lower(yytext), loc); }
|
{RGX_NAME} { return iw7::parser::make_NAME((std::string(yytext, 3) == "_ID") ? std::string(yytext) : utils::string::to_lower(yytext), loc); }
|
||||||
\&{RGX_STRING} { return iw7::parser::make_ISTRING(std::string(yytext).substr(1), loc); }
|
\&{RGX_STRING} { return iw7::parser::make_ISTRING(std::string(yytext).substr(1), loc); }
|
||||||
{RGX_STRING} { return iw7::parser::make_STRING(std::string(yytext), loc); }
|
{RGX_STRING} { return iw7::parser::make_STRING(std::string(yytext), loc); }
|
||||||
{RGX_FLOAT} { return iw7::parser::make_FLOAT(std::string(yytext), loc); }
|
{RGX_COLOR} { return iw7::parser::make_COLOR(std::string(yytext).substr(1), loc); }
|
||||||
{RGX_INTEGER} { return iw7::parser::make_INTEGER(std::string(yytext), loc); }
|
{RGX_FLT_DEC} { return iw7::parser::make_FLOAT(std::string(yytext), loc); }
|
||||||
|
{RGX_INT_OCT} { return iw7::parser::make_INT_OCT(utils::string::oct_to_dec(yytext), loc); }
|
||||||
|
{RGX_INT_BIN} { return iw7::parser::make_INT_BIN(utils::string::bin_to_dec(yytext), loc); }
|
||||||
|
{RGX_INT_HEX} { return iw7::parser::make_INT_HEX(utils::string::hex_to_dec(yytext), loc); }
|
||||||
|
{RGX_INT_DEC} { return iw7::parser::make_INT_DEC(std::string(yytext), loc); }
|
||||||
<<EOF>> { return iw7::parser::make_IW7EOF(loc); }
|
<<EOF>> { return iw7::parser::make_IW7EOF(loc); }
|
||||||
<*>{RGX_DEFAULT} { throw iw7::parser::syntax_error(loc, "bad token: \'" + std::string(yytext) + "\'"); }
|
<*>{RGX_DEFAULT} { throw iw7::parser::syntax_error(loc, "bad token: \'" + std::string(yytext) + "\'"); }
|
||||||
|
|
||||||
|
@ -130,8 +130,12 @@ xsk::gsc::iw7::parser::symbol_type IW7lex(yyscan_t yyscanner, xsk::gsc::location
|
|||||||
%token <std::string> NAME "identifier"
|
%token <std::string> NAME "identifier"
|
||||||
%token <std::string> STRING "string literal"
|
%token <std::string> STRING "string literal"
|
||||||
%token <std::string> ISTRING "localized string"
|
%token <std::string> ISTRING "localized string"
|
||||||
|
%token <std::string> COLOR "color"
|
||||||
%token <std::string> FLOAT "float"
|
%token <std::string> FLOAT "float"
|
||||||
%token <std::string> INTEGER "int"
|
%token <std::string> INT_DEC "int"
|
||||||
|
%token <std::string> INT_OCT "octal int"
|
||||||
|
%token <std::string> INT_BIN "binary int"
|
||||||
|
%token <std::string> INT_HEX "hexadecimal int"
|
||||||
|
|
||||||
%type <program_ptr> program
|
%type <program_ptr> program
|
||||||
%type <include_ptr> include
|
%type <include_ptr> include
|
||||||
@ -200,9 +204,8 @@ xsk::gsc::iw7::parser::symbol_type IW7lex(yyscan_t yyscanner, xsk::gsc::location
|
|||||||
%type <file_ptr> file
|
%type <file_ptr> file
|
||||||
%type <istring_ptr> istring
|
%type <istring_ptr> istring
|
||||||
%type <string_ptr> string
|
%type <string_ptr> string
|
||||||
|
%type <color_ptr> color
|
||||||
%type <vector_ptr> vector
|
%type <vector_ptr> vector
|
||||||
%type <float_ptr> neg_float
|
|
||||||
%type <integer_ptr> neg_integer
|
|
||||||
%type <float_ptr> float
|
%type <float_ptr> float
|
||||||
%type <integer_ptr> integer
|
%type <integer_ptr> integer
|
||||||
%type <false_ptr> false
|
%type <false_ptr> false
|
||||||
@ -409,8 +412,6 @@ stmt_switch
|
|||||||
stmt_case
|
stmt_case
|
||||||
: CASE integer COLON
|
: CASE integer COLON
|
||||||
{ $$ = std::make_unique<node_stmt_case>(@$, expr_ptr(std::move($2)), std::make_unique<gsc::node_stmt_list>(@$)); }
|
{ $$ = std::make_unique<node_stmt_case>(@$, expr_ptr(std::move($2)), std::make_unique<gsc::node_stmt_list>(@$)); }
|
||||||
| CASE neg_integer COLON
|
|
||||||
{ $$ = std::make_unique<node_stmt_case>(@$, expr_ptr(std::move($2)), std::make_unique<gsc::node_stmt_list>(@$)); }
|
|
||||||
| CASE string COLON
|
| CASE string COLON
|
||||||
{ $$ = std::make_unique<node_stmt_case>(@$, expr_ptr(std::move($2)), std::make_unique<gsc::node_stmt_list>(@$)); }
|
{ $$ = std::make_unique<node_stmt_case>(@$, expr_ptr(std::move($2)), std::make_unique<gsc::node_stmt_list>(@$)); }
|
||||||
;
|
;
|
||||||
@ -539,9 +540,8 @@ expr_primitive
|
|||||||
| name { $$.as_node = std::move($1); }
|
| name { $$.as_node = std::move($1); }
|
||||||
| istring { $$.as_node = std::move($1); }
|
| istring { $$.as_node = std::move($1); }
|
||||||
| string { $$.as_node = std::move($1); }
|
| string { $$.as_node = std::move($1); }
|
||||||
|
| color { $$.as_node = std::move($1); }
|
||||||
| vector { $$.as_node = std::move($1); }
|
| vector { $$.as_node = std::move($1); }
|
||||||
| neg_float { $$.as_node = std::move($1); }
|
|
||||||
| neg_integer { $$.as_node = std::move($1); }
|
|
||||||
| float { $$.as_node = std::move($1); }
|
| float { $$.as_node = std::move($1); }
|
||||||
| integer { $$.as_node = std::move($1); }
|
| integer { $$.as_node = std::move($1); }
|
||||||
| false { $$.as_node = std::move($1); }
|
| false { $$.as_node = std::move($1); }
|
||||||
@ -638,6 +638,19 @@ object
|
|||||||
| name { $$ = std::move($1); }
|
| name { $$ = std::move($1); }
|
||||||
;
|
;
|
||||||
|
|
||||||
|
float
|
||||||
|
: SUB FLOAT %prec NEG { $$ = std::make_unique<node_float>(@$, "-" + $2); };
|
||||||
|
| FLOAT { $$ = std::make_unique<node_float>(@$, $1); };
|
||||||
|
;
|
||||||
|
|
||||||
|
integer
|
||||||
|
: SUB INT_DEC %prec NEG { $$ = std::make_unique<node_integer>(@$, "-" + $2); };
|
||||||
|
| INT_DEC { $$ = std::make_unique<node_integer>(@$, $1); };
|
||||||
|
| INT_OCT { $$ = std::make_unique<node_integer>(@$, $1); };
|
||||||
|
| INT_BIN { $$ = std::make_unique<node_integer>(@$, $1); };
|
||||||
|
| INT_HEX { $$ = std::make_unique<node_integer>(@$, $1); };
|
||||||
|
;
|
||||||
|
|
||||||
thisthread : THISTHREAD { $$ = std::make_unique<node_thisthread>(@$); };
|
thisthread : THISTHREAD { $$ = std::make_unique<node_thisthread>(@$); };
|
||||||
empty_array : LBRACKET RBRACKET { $$ = std::make_unique<node_empty_array>(@$); };
|
empty_array : LBRACKET RBRACKET { $$ = std::make_unique<node_empty_array>(@$); };
|
||||||
undefined : UNDEFINED { $$ = std::make_unique<node_undefined>(@$); };
|
undefined : UNDEFINED { $$ = std::make_unique<node_undefined>(@$); };
|
||||||
@ -651,11 +664,8 @@ name : NAME { $$ = std::make_unique<n
|
|||||||
file : FILE { $$ = std::make_unique<node_file>(@$, $1); };
|
file : FILE { $$ = std::make_unique<node_file>(@$, $1); };
|
||||||
istring : ISTRING { $$ = std::make_unique<node_istring>(@$, $1); };
|
istring : ISTRING { $$ = std::make_unique<node_istring>(@$, $1); };
|
||||||
string : STRING { $$ = std::make_unique<node_string>(@$, $1); };
|
string : STRING { $$ = std::make_unique<node_string>(@$, $1); };
|
||||||
|
color : COLOR { $$ = std::make_unique<node_color>(@$, $1); };
|
||||||
vector : LPAREN expr COMMA expr COMMA expr RPAREN { $$ = std::make_unique<node_vector>(@$, std::move($2), std::move($4), std::move($6)); };
|
vector : LPAREN expr COMMA expr COMMA expr RPAREN { $$ = std::make_unique<node_vector>(@$, std::move($2), std::move($4), std::move($6)); };
|
||||||
neg_float : SUB FLOAT %prec NEG { $$ = std::make_unique<node_float>(@$, "-" + $2); };
|
|
||||||
neg_integer : SUB INTEGER %prec NEG { $$ = std::make_unique<node_integer>(@$, "-" + $2); };
|
|
||||||
float : FLOAT { $$ = std::make_unique<node_float>(@$, $1); };
|
|
||||||
integer : INTEGER { $$ = std::make_unique<node_integer>(@$, $1); };
|
|
||||||
false : FALSE { $$ = std::make_unique<node_false>(@$); };
|
false : FALSE { $$ = std::make_unique<node_false>(@$); };
|
||||||
true : TRUE { $$ = std::make_unique<node_true>(@$); };
|
true : TRUE { $$ = std::make_unique<node_true>(@$); };
|
||||||
|
|
||||||
|
@ -26,8 +26,12 @@ using namespace xsk::gsc;
|
|||||||
RGX_FILE ([_A-Za-z0-9]+\\)+[_A-Za-z0-9]+
|
RGX_FILE ([_A-Za-z0-9]+\\)+[_A-Za-z0-9]+
|
||||||
RGX_NAME [_A-Za-z][_A-Za-z0-9]*
|
RGX_NAME [_A-Za-z][_A-Za-z0-9]*
|
||||||
RGX_STRING \"(?:\\.|[^\"])*?\"|\'(?:\\.|[^\'])*?\'
|
RGX_STRING \"(?:\\.|[^\"])*?\"|\'(?:\\.|[^\'])*?\'
|
||||||
RGX_FLOAT [0-9]+\.(?:[0-9]*)?f?|\.[0-9]+f?
|
RGX_COLOR #([0-9a-fA-F]{6}|[0-9a-fA-F]{3})
|
||||||
RGX_INTEGER [0-9]+
|
RGX_FLT_DEC [0-9]+\.(?:[0-9]*)?f?|\.[0-9]+f?
|
||||||
|
RGX_INT_OCT 0[1-7][0-7]*
|
||||||
|
RGX_INT_BIN 0[bB][01]+
|
||||||
|
RGX_INT_HEX 0[xX][0-9a-fA-F]+
|
||||||
|
RGX_INT_DEC [0-9]+
|
||||||
RGX_DEFAULT (.|\n)
|
RGX_DEFAULT (.|\n)
|
||||||
|
|
||||||
%x COMMENT_BLOCK_STATE
|
%x COMMENT_BLOCK_STATE
|
||||||
@ -141,8 +145,12 @@ RGX_DEFAULT (.|\n)
|
|||||||
{RGX_NAME} { return s1::parser::make_NAME((std::string(yytext, 3) == "_ID") ? std::string(yytext) : utils::string::to_lower(yytext), loc); }
|
{RGX_NAME} { return s1::parser::make_NAME((std::string(yytext, 3) == "_ID") ? std::string(yytext) : utils::string::to_lower(yytext), loc); }
|
||||||
\&{RGX_STRING} { return s1::parser::make_ISTRING(std::string(yytext).substr(1), loc); }
|
\&{RGX_STRING} { return s1::parser::make_ISTRING(std::string(yytext).substr(1), loc); }
|
||||||
{RGX_STRING} { return s1::parser::make_STRING(std::string(yytext), loc); }
|
{RGX_STRING} { return s1::parser::make_STRING(std::string(yytext), loc); }
|
||||||
{RGX_FLOAT} { return s1::parser::make_FLOAT(std::string(yytext), loc); }
|
{RGX_COLOR} { return s1::parser::make_COLOR(std::string(yytext).substr(1), loc); }
|
||||||
{RGX_INTEGER} { return s1::parser::make_INTEGER(std::string(yytext), loc); }
|
{RGX_FLT_DEC} { return s1::parser::make_FLOAT(std::string(yytext), loc); }
|
||||||
|
{RGX_INT_OCT} { return s1::parser::make_INT_OCT(utils::string::oct_to_dec(yytext), loc); }
|
||||||
|
{RGX_INT_BIN} { return s1::parser::make_INT_BIN(utils::string::bin_to_dec(yytext), loc); }
|
||||||
|
{RGX_INT_HEX} { return s1::parser::make_INT_HEX(utils::string::hex_to_dec(yytext), loc); }
|
||||||
|
{RGX_INT_DEC} { return s1::parser::make_INT_DEC(std::string(yytext), loc); }
|
||||||
<<EOF>> { return s1::parser::make_S1EOF(loc); }
|
<<EOF>> { return s1::parser::make_S1EOF(loc); }
|
||||||
<*>{RGX_DEFAULT} { throw s1::parser::syntax_error(loc, "bad token: \'" + std::string(yytext) + "\'"); }
|
<*>{RGX_DEFAULT} { throw s1::parser::syntax_error(loc, "bad token: \'" + std::string(yytext) + "\'"); }
|
||||||
|
|
||||||
|
@ -131,8 +131,12 @@ xsk::gsc::s1::parser::symbol_type S1lex(yyscan_t yyscanner, xsk::gsc::location&
|
|||||||
%token <std::string> NAME "identifier"
|
%token <std::string> NAME "identifier"
|
||||||
%token <std::string> STRING "string literal"
|
%token <std::string> STRING "string literal"
|
||||||
%token <std::string> ISTRING "localized string"
|
%token <std::string> ISTRING "localized string"
|
||||||
|
%token <std::string> COLOR "color"
|
||||||
%token <std::string> FLOAT "float"
|
%token <std::string> FLOAT "float"
|
||||||
%token <std::string> INTEGER "int"
|
%token <std::string> INT_DEC "int"
|
||||||
|
%token <std::string> INT_OCT "octal int"
|
||||||
|
%token <std::string> INT_BIN "binary int"
|
||||||
|
%token <std::string> INT_HEX "hexadecimal int"
|
||||||
|
|
||||||
%type <program_ptr> program
|
%type <program_ptr> program
|
||||||
%type <include_ptr> include
|
%type <include_ptr> include
|
||||||
@ -202,9 +206,8 @@ xsk::gsc::s1::parser::symbol_type S1lex(yyscan_t yyscanner, xsk::gsc::location&
|
|||||||
%type <file_ptr> file
|
%type <file_ptr> file
|
||||||
%type <istring_ptr> istring
|
%type <istring_ptr> istring
|
||||||
%type <string_ptr> string
|
%type <string_ptr> string
|
||||||
|
%type <color_ptr> color
|
||||||
%type <vector_ptr> vector
|
%type <vector_ptr> vector
|
||||||
%type <float_ptr> neg_float
|
|
||||||
%type <integer_ptr> neg_integer
|
|
||||||
%type <float_ptr> float
|
%type <float_ptr> float
|
||||||
%type <integer_ptr> integer
|
%type <integer_ptr> integer
|
||||||
%type <false_ptr> false
|
%type <false_ptr> false
|
||||||
@ -419,8 +422,6 @@ stmt_switch
|
|||||||
stmt_case
|
stmt_case
|
||||||
: CASE integer COLON
|
: CASE integer COLON
|
||||||
{ $$ = std::make_unique<node_stmt_case>(@$, expr_ptr(std::move($2)), std::make_unique<gsc::node_stmt_list>(@$)); }
|
{ $$ = std::make_unique<node_stmt_case>(@$, expr_ptr(std::move($2)), std::make_unique<gsc::node_stmt_list>(@$)); }
|
||||||
| CASE neg_integer COLON
|
|
||||||
{ $$ = std::make_unique<node_stmt_case>(@$, expr_ptr(std::move($2)), std::make_unique<gsc::node_stmt_list>(@$)); }
|
|
||||||
| CASE string COLON
|
| CASE string COLON
|
||||||
{ $$ = std::make_unique<node_stmt_case>(@$, expr_ptr(std::move($2)), std::make_unique<gsc::node_stmt_list>(@$)); }
|
{ $$ = std::make_unique<node_stmt_case>(@$, expr_ptr(std::move($2)), std::make_unique<gsc::node_stmt_list>(@$)); }
|
||||||
;
|
;
|
||||||
@ -549,9 +550,8 @@ expr_primitive
|
|||||||
| name { $$.as_node = std::move($1); }
|
| name { $$.as_node = std::move($1); }
|
||||||
| istring { $$.as_node = std::move($1); }
|
| istring { $$.as_node = std::move($1); }
|
||||||
| string { $$.as_node = std::move($1); }
|
| string { $$.as_node = std::move($1); }
|
||||||
|
| color { $$.as_node = std::move($1); }
|
||||||
| vector { $$.as_node = std::move($1); }
|
| vector { $$.as_node = std::move($1); }
|
||||||
| neg_float { $$.as_node = std::move($1); }
|
|
||||||
| neg_integer { $$.as_node = std::move($1); }
|
|
||||||
| float { $$.as_node = std::move($1); }
|
| float { $$.as_node = std::move($1); }
|
||||||
| integer { $$.as_node = std::move($1); }
|
| integer { $$.as_node = std::move($1); }
|
||||||
| false { $$.as_node = std::move($1); }
|
| false { $$.as_node = std::move($1); }
|
||||||
@ -648,6 +648,19 @@ object
|
|||||||
| name { $$ = std::move($1); }
|
| name { $$ = std::move($1); }
|
||||||
;
|
;
|
||||||
|
|
||||||
|
float
|
||||||
|
: SUB FLOAT %prec NEG { $$ = std::make_unique<node_float>(@$, "-" + $2); };
|
||||||
|
| FLOAT { $$ = std::make_unique<node_float>(@$, $1); };
|
||||||
|
;
|
||||||
|
|
||||||
|
integer
|
||||||
|
: SUB INT_DEC %prec NEG { $$ = std::make_unique<node_integer>(@$, "-" + $2); };
|
||||||
|
| INT_DEC { $$ = std::make_unique<node_integer>(@$, $1); };
|
||||||
|
| INT_OCT { $$ = std::make_unique<node_integer>(@$, $1); };
|
||||||
|
| INT_BIN { $$ = std::make_unique<node_integer>(@$, $1); };
|
||||||
|
| INT_HEX { $$ = std::make_unique<node_integer>(@$, $1); };
|
||||||
|
;
|
||||||
|
|
||||||
thisthread : THISTHREAD { $$ = std::make_unique<node_thisthread>(@$); };
|
thisthread : THISTHREAD { $$ = std::make_unique<node_thisthread>(@$); };
|
||||||
empty_array : LBRACKET RBRACKET { $$ = std::make_unique<node_empty_array>(@$); };
|
empty_array : LBRACKET RBRACKET { $$ = std::make_unique<node_empty_array>(@$); };
|
||||||
undefined : UNDEFINED { $$ = std::make_unique<node_undefined>(@$); };
|
undefined : UNDEFINED { $$ = std::make_unique<node_undefined>(@$); };
|
||||||
@ -661,11 +674,8 @@ name : NAME { $$ = std::make_unique<n
|
|||||||
file : FILE { $$ = std::make_unique<node_file>(@$, $1); };
|
file : FILE { $$ = std::make_unique<node_file>(@$, $1); };
|
||||||
istring : ISTRING { $$ = std::make_unique<node_istring>(@$, $1); };
|
istring : ISTRING { $$ = std::make_unique<node_istring>(@$, $1); };
|
||||||
string : STRING { $$ = std::make_unique<node_string>(@$, $1); };
|
string : STRING { $$ = std::make_unique<node_string>(@$, $1); };
|
||||||
|
color : COLOR { $$ = std::make_unique<node_color>(@$, $1); };
|
||||||
vector : LPAREN expr COMMA expr COMMA expr RPAREN { $$ = std::make_unique<node_vector>(@$, std::move($2), std::move($4), std::move($6)); };
|
vector : LPAREN expr COMMA expr COMMA expr RPAREN { $$ = std::make_unique<node_vector>(@$, std::move($2), std::move($4), std::move($6)); };
|
||||||
neg_float : SUB FLOAT %prec NEG { $$ = std::make_unique<node_float>(@$, "-" + $2); };
|
|
||||||
neg_integer : SUB INTEGER %prec NEG { $$ = std::make_unique<node_integer>(@$, "-" + $2); };
|
|
||||||
float : FLOAT { $$ = std::make_unique<node_float>(@$, $1); };
|
|
||||||
integer : INTEGER { $$ = std::make_unique<node_integer>(@$, $1); };
|
|
||||||
false : FALSE { $$ = std::make_unique<node_false>(@$); };
|
false : FALSE { $$ = std::make_unique<node_false>(@$); };
|
||||||
true : TRUE { $$ = std::make_unique<node_true>(@$); };
|
true : TRUE { $$ = std::make_unique<node_true>(@$); };
|
||||||
|
|
||||||
|
@ -26,8 +26,12 @@ using namespace xsk::gsc;
|
|||||||
RGX_FILE ([_A-Za-z0-9]+\\)+[_A-Za-z0-9]+
|
RGX_FILE ([_A-Za-z0-9]+\\)+[_A-Za-z0-9]+
|
||||||
RGX_NAME [_A-Za-z][_A-Za-z0-9]*
|
RGX_NAME [_A-Za-z][_A-Za-z0-9]*
|
||||||
RGX_STRING \"(?:\\.|[^\"])*?\"|\'(?:\\.|[^\'])*?\'
|
RGX_STRING \"(?:\\.|[^\"])*?\"|\'(?:\\.|[^\'])*?\'
|
||||||
RGX_FLOAT [0-9]+\.(?:[0-9]*)?f?|\.[0-9]+f?
|
RGX_COLOR #([0-9a-fA-F]{6}|[0-9a-fA-F]{3})
|
||||||
RGX_INTEGER [0-9]+
|
RGX_FLT_DEC [0-9]+\.(?:[0-9]*)?f?|\.[0-9]+f?
|
||||||
|
RGX_INT_OCT 0[1-7][0-7]*
|
||||||
|
RGX_INT_BIN 0[bB][01]+
|
||||||
|
RGX_INT_HEX 0[xX][0-9a-fA-F]+
|
||||||
|
RGX_INT_DEC [0-9]+
|
||||||
RGX_DEFAULT (.|\n)
|
RGX_DEFAULT (.|\n)
|
||||||
|
|
||||||
%x COMMENT_BLOCK_STATE
|
%x COMMENT_BLOCK_STATE
|
||||||
@ -141,8 +145,12 @@ RGX_DEFAULT (.|\n)
|
|||||||
{RGX_NAME} { return s2::parser::make_NAME((std::string(yytext, 3) == "_ID") ? std::string(yytext) : utils::string::to_lower(yytext), loc); }
|
{RGX_NAME} { return s2::parser::make_NAME((std::string(yytext, 3) == "_ID") ? std::string(yytext) : utils::string::to_lower(yytext), loc); }
|
||||||
\&{RGX_STRING} { return s2::parser::make_ISTRING(std::string(yytext).substr(1), loc); }
|
\&{RGX_STRING} { return s2::parser::make_ISTRING(std::string(yytext).substr(1), loc); }
|
||||||
{RGX_STRING} { return s2::parser::make_STRING(std::string(yytext), loc); }
|
{RGX_STRING} { return s2::parser::make_STRING(std::string(yytext), loc); }
|
||||||
{RGX_FLOAT} { return s2::parser::make_FLOAT(std::string(yytext), loc); }
|
{RGX_COLOR} { return s2::parser::make_COLOR(std::string(yytext).substr(1), loc); }
|
||||||
{RGX_INTEGER} { return s2::parser::make_INTEGER(std::string(yytext), loc); }
|
{RGX_FLT_DEC} { return s2::parser::make_FLOAT(std::string(yytext), loc); }
|
||||||
|
{RGX_INT_OCT} { return s2::parser::make_INT_OCT(utils::string::oct_to_dec(yytext), loc); }
|
||||||
|
{RGX_INT_BIN} { return s2::parser::make_INT_BIN(utils::string::bin_to_dec(yytext), loc); }
|
||||||
|
{RGX_INT_HEX} { return s2::parser::make_INT_HEX(utils::string::hex_to_dec(yytext), loc); }
|
||||||
|
{RGX_INT_DEC} { return s2::parser::make_INT_DEC(std::string(yytext), loc); }
|
||||||
<<EOF>> { return s2::parser::make_S2EOF(loc); }
|
<<EOF>> { return s2::parser::make_S2EOF(loc); }
|
||||||
<*>{RGX_DEFAULT} { throw s2::parser::syntax_error(loc, "bad token: \'" + std::string(yytext) + "\'"); }
|
<*>{RGX_DEFAULT} { throw s2::parser::syntax_error(loc, "bad token: \'" + std::string(yytext) + "\'"); }
|
||||||
|
|
||||||
|
@ -131,8 +131,12 @@ xsk::gsc::s2::parser::symbol_type S2lex(yyscan_t yyscanner, xsk::gsc::location&
|
|||||||
%token <std::string> NAME "identifier"
|
%token <std::string> NAME "identifier"
|
||||||
%token <std::string> STRING "string literal"
|
%token <std::string> STRING "string literal"
|
||||||
%token <std::string> ISTRING "localized string"
|
%token <std::string> ISTRING "localized string"
|
||||||
|
%token <std::string> COLOR "color"
|
||||||
%token <std::string> FLOAT "float"
|
%token <std::string> FLOAT "float"
|
||||||
%token <std::string> INTEGER "int"
|
%token <std::string> INT_DEC "int"
|
||||||
|
%token <std::string> INT_OCT "octal int"
|
||||||
|
%token <std::string> INT_BIN "binary int"
|
||||||
|
%token <std::string> INT_HEX "hexadecimal int"
|
||||||
|
|
||||||
%type <program_ptr> program
|
%type <program_ptr> program
|
||||||
%type <include_ptr> include
|
%type <include_ptr> include
|
||||||
@ -202,9 +206,8 @@ xsk::gsc::s2::parser::symbol_type S2lex(yyscan_t yyscanner, xsk::gsc::location&
|
|||||||
%type <file_ptr> file
|
%type <file_ptr> file
|
||||||
%type <istring_ptr> istring
|
%type <istring_ptr> istring
|
||||||
%type <string_ptr> string
|
%type <string_ptr> string
|
||||||
|
%type <color_ptr> color
|
||||||
%type <vector_ptr> vector
|
%type <vector_ptr> vector
|
||||||
%type <float_ptr> neg_float
|
|
||||||
%type <integer_ptr> neg_integer
|
|
||||||
%type <float_ptr> float
|
%type <float_ptr> float
|
||||||
%type <integer_ptr> integer
|
%type <integer_ptr> integer
|
||||||
%type <false_ptr> false
|
%type <false_ptr> false
|
||||||
@ -419,8 +422,6 @@ stmt_switch
|
|||||||
stmt_case
|
stmt_case
|
||||||
: CASE integer COLON
|
: CASE integer COLON
|
||||||
{ $$ = std::make_unique<node_stmt_case>(@$, expr_ptr(std::move($2)), std::make_unique<gsc::node_stmt_list>(@$)); }
|
{ $$ = std::make_unique<node_stmt_case>(@$, expr_ptr(std::move($2)), std::make_unique<gsc::node_stmt_list>(@$)); }
|
||||||
| CASE neg_integer COLON
|
|
||||||
{ $$ = std::make_unique<node_stmt_case>(@$, expr_ptr(std::move($2)), std::make_unique<gsc::node_stmt_list>(@$)); }
|
|
||||||
| CASE string COLON
|
| CASE string COLON
|
||||||
{ $$ = std::make_unique<node_stmt_case>(@$, expr_ptr(std::move($2)), std::make_unique<gsc::node_stmt_list>(@$)); }
|
{ $$ = std::make_unique<node_stmt_case>(@$, expr_ptr(std::move($2)), std::make_unique<gsc::node_stmt_list>(@$)); }
|
||||||
;
|
;
|
||||||
@ -549,9 +550,8 @@ expr_primitive
|
|||||||
| name { $$.as_node = std::move($1); }
|
| name { $$.as_node = std::move($1); }
|
||||||
| istring { $$.as_node = std::move($1); }
|
| istring { $$.as_node = std::move($1); }
|
||||||
| string { $$.as_node = std::move($1); }
|
| string { $$.as_node = std::move($1); }
|
||||||
|
| color { $$.as_node = std::move($1); }
|
||||||
| vector { $$.as_node = std::move($1); }
|
| vector { $$.as_node = std::move($1); }
|
||||||
| neg_float { $$.as_node = std::move($1); }
|
|
||||||
| neg_integer { $$.as_node = std::move($1); }
|
|
||||||
| float { $$.as_node = std::move($1); }
|
| float { $$.as_node = std::move($1); }
|
||||||
| integer { $$.as_node = std::move($1); }
|
| integer { $$.as_node = std::move($1); }
|
||||||
| false { $$.as_node = std::move($1); }
|
| false { $$.as_node = std::move($1); }
|
||||||
@ -648,6 +648,19 @@ object
|
|||||||
| name { $$ = std::move($1); }
|
| name { $$ = std::move($1); }
|
||||||
;
|
;
|
||||||
|
|
||||||
|
float
|
||||||
|
: SUB FLOAT %prec NEG { $$ = std::make_unique<node_float>(@$, "-" + $2); };
|
||||||
|
| FLOAT { $$ = std::make_unique<node_float>(@$, $1); };
|
||||||
|
;
|
||||||
|
|
||||||
|
integer
|
||||||
|
: SUB INT_DEC %prec NEG { $$ = std::make_unique<node_integer>(@$, "-" + $2); };
|
||||||
|
| INT_DEC { $$ = std::make_unique<node_integer>(@$, $1); };
|
||||||
|
| INT_OCT { $$ = std::make_unique<node_integer>(@$, $1); };
|
||||||
|
| INT_BIN { $$ = std::make_unique<node_integer>(@$, $1); };
|
||||||
|
| INT_HEX { $$ = std::make_unique<node_integer>(@$, $1); };
|
||||||
|
;
|
||||||
|
|
||||||
thisthread : THISTHREAD { $$ = std::make_unique<node_thisthread>(@$); };
|
thisthread : THISTHREAD { $$ = std::make_unique<node_thisthread>(@$); };
|
||||||
empty_array : LBRACKET RBRACKET { $$ = std::make_unique<node_empty_array>(@$); };
|
empty_array : LBRACKET RBRACKET { $$ = std::make_unique<node_empty_array>(@$); };
|
||||||
undefined : UNDEFINED { $$ = std::make_unique<node_undefined>(@$); };
|
undefined : UNDEFINED { $$ = std::make_unique<node_undefined>(@$); };
|
||||||
@ -661,11 +674,8 @@ name : NAME { $$ = std::make_unique<n
|
|||||||
file : FILE { $$ = std::make_unique<node_file>(@$, $1); };
|
file : FILE { $$ = std::make_unique<node_file>(@$, $1); };
|
||||||
istring : ISTRING { $$ = std::make_unique<node_istring>(@$, $1); };
|
istring : ISTRING { $$ = std::make_unique<node_istring>(@$, $1); };
|
||||||
string : STRING { $$ = std::make_unique<node_string>(@$, $1); };
|
string : STRING { $$ = std::make_unique<node_string>(@$, $1); };
|
||||||
|
color : COLOR { $$ = std::make_unique<node_color>(@$, $1); };
|
||||||
vector : LPAREN expr COMMA expr COMMA expr RPAREN { $$ = std::make_unique<node_vector>(@$, std::move($2), std::move($4), std::move($6)); };
|
vector : LPAREN expr COMMA expr COMMA expr RPAREN { $$ = std::make_unique<node_vector>(@$, std::move($2), std::move($4), std::move($6)); };
|
||||||
neg_float : SUB FLOAT %prec NEG { $$ = std::make_unique<node_float>(@$, "-" + $2); };
|
|
||||||
neg_integer : SUB INTEGER %prec NEG { $$ = std::make_unique<node_integer>(@$, "-" + $2); };
|
|
||||||
float : FLOAT { $$ = std::make_unique<node_float>(@$, $1); };
|
|
||||||
integer : INTEGER { $$ = std::make_unique<node_integer>(@$, $1); };
|
|
||||||
false : FALSE { $$ = std::make_unique<node_false>(@$); };
|
false : FALSE { $$ = std::make_unique<node_false>(@$); };
|
||||||
true : TRUE { $$ = std::make_unique<node_true>(@$); };
|
true : TRUE { $$ = std::make_unique<node_true>(@$); };
|
||||||
|
|
||||||
|
@ -791,6 +791,7 @@ void compiler::emit_expr(const gsc::context_ptr& ctx, const gsc::expr_ptr& expr)
|
|||||||
case gsc::node_t::data_name: emit_local_variable(ctx, expr.as_name); break;
|
case gsc::node_t::data_name: emit_local_variable(ctx, expr.as_name); break;
|
||||||
case gsc::node_t::data_istring: emit_istring(ctx, expr.as_istring); break;
|
case gsc::node_t::data_istring: emit_istring(ctx, expr.as_istring); break;
|
||||||
case gsc::node_t::data_string: emit_string(ctx, expr.as_string); break;
|
case gsc::node_t::data_string: emit_string(ctx, expr.as_string); break;
|
||||||
|
case gsc::node_t::data_color: emit_color(ctx, expr.as_color); break;
|
||||||
case gsc::node_t::data_vector: emit_vector(ctx, expr.as_vector); break;
|
case gsc::node_t::data_vector: emit_vector(ctx, expr.as_vector); break;
|
||||||
case gsc::node_t::data_float: emit_float(ctx, expr.as_float); break;
|
case gsc::node_t::data_float: emit_float(ctx, expr.as_float); break;
|
||||||
case gsc::node_t::data_integer: emit_integer(ctx, expr.as_integer); break;
|
case gsc::node_t::data_integer: emit_integer(ctx, expr.as_integer); break;
|
||||||
@ -1612,6 +1613,30 @@ void compiler::emit_string(const gsc::context_ptr& ctx, const gsc::string_ptr& s
|
|||||||
emit_opcode(ctx, opcode::OP_GetString, str->value);
|
emit_opcode(ctx, opcode::OP_GetString, str->value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void compiler::emit_color(const gsc::context_ptr& ctx, const gsc::color_ptr& color)
|
||||||
|
{
|
||||||
|
std::vector<std::string> data;
|
||||||
|
std::string x, y, z;
|
||||||
|
|
||||||
|
if(color->value.size() == 3)
|
||||||
|
{
|
||||||
|
x = "0x" + color->value.substr(0, 1) + color->value.substr(0, 1);
|
||||||
|
y = "0x" + color->value.substr(1, 1) + color->value.substr(1, 1);
|
||||||
|
z = "0x" + color->value.substr(2, 1) + color->value.substr(2, 1);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
x = "0x" + color->value.substr(0, 2);
|
||||||
|
y = "0x" + color->value.substr(2, 2);
|
||||||
|
z = "0x" + color->value.substr(4, 2);
|
||||||
|
}
|
||||||
|
|
||||||
|
data.push_back(gsc::utils::string::hex_to_dec(x.data()));
|
||||||
|
data.push_back(gsc::utils::string::hex_to_dec(y.data()));
|
||||||
|
data.push_back(gsc::utils::string::hex_to_dec(z.data()));
|
||||||
|
emit_opcode(ctx, opcode::OP_GetVector, data);
|
||||||
|
}
|
||||||
|
|
||||||
void compiler::emit_vector(const gsc::context_ptr& ctx, const gsc::vector_ptr& vec)
|
void compiler::emit_vector(const gsc::context_ptr& ctx, const gsc::vector_ptr& vec)
|
||||||
{
|
{
|
||||||
std::vector<std::string> data;
|
std::vector<std::string> data;
|
||||||
|
@ -102,6 +102,7 @@ private:
|
|||||||
void emit_animation(const gsc::context_ptr& ctx, const gsc::animation_ptr& animation);
|
void emit_animation(const gsc::context_ptr& ctx, const gsc::animation_ptr& animation);
|
||||||
void emit_istring(const gsc::context_ptr& ctx, const gsc::istring_ptr& str);
|
void emit_istring(const gsc::context_ptr& ctx, const gsc::istring_ptr& str);
|
||||||
void emit_string(const gsc::context_ptr& ctx, const gsc::string_ptr& str);
|
void emit_string(const gsc::context_ptr& ctx, const gsc::string_ptr& str);
|
||||||
|
void emit_color(const gsc::context_ptr& ctx, const gsc::color_ptr& color);
|
||||||
void emit_vector(const gsc::context_ptr& ctx, const gsc::vector_ptr& vec);
|
void emit_vector(const gsc::context_ptr& ctx, const gsc::vector_ptr& vec);
|
||||||
void emit_float(const gsc::context_ptr& ctx, const gsc::float_ptr& num);
|
void emit_float(const gsc::context_ptr& ctx, const gsc::float_ptr& num);
|
||||||
void emit_integer(const gsc::context_ptr& ctx, const gsc::integer_ptr& num);
|
void emit_integer(const gsc::context_ptr& ctx, const gsc::integer_ptr& num);
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -700,7 +700,7 @@ extern int yylex (yyscan_t yyscanner);
|
|||||||
#undef yyTABLES_NAME
|
#undef yyTABLES_NAME
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#line 150 "lexer.lpp"
|
#line 158 "lexer.lpp"
|
||||||
|
|
||||||
|
|
||||||
#line 706 "lexer.hpp"
|
#line 706 "lexer.hpp"
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -417,31 +417,34 @@ namespace xsk { namespace gsc { namespace h1 {
|
|||||||
// animtree
|
// animtree
|
||||||
char dummy3[sizeof (animtree_ptr)];
|
char dummy3[sizeof (animtree_ptr)];
|
||||||
|
|
||||||
|
// color
|
||||||
|
char dummy4[sizeof (color_ptr)];
|
||||||
|
|
||||||
// constant
|
// constant
|
||||||
char dummy4[sizeof (constant_ptr)];
|
char dummy5[sizeof (constant_ptr)];
|
||||||
|
|
||||||
// define
|
// define
|
||||||
char dummy5[sizeof (define_ptr)];
|
char dummy6[sizeof (define_ptr)];
|
||||||
|
|
||||||
// empty_array
|
// empty_array
|
||||||
char dummy6[sizeof (empty_array_ptr)];
|
char dummy7[sizeof (empty_array_ptr)];
|
||||||
|
|
||||||
// expr_arguments
|
// expr_arguments
|
||||||
// expr_arguments_filled
|
// expr_arguments_filled
|
||||||
// expr_arguments_empty
|
// expr_arguments_empty
|
||||||
char dummy7[sizeof (expr_arguments_ptr)];
|
char dummy8[sizeof (expr_arguments_ptr)];
|
||||||
|
|
||||||
// expr_assign
|
// expr_assign
|
||||||
char dummy8[sizeof (expr_assign_ptr)];
|
char dummy9[sizeof (expr_assign_ptr)];
|
||||||
|
|
||||||
// expr_call
|
// expr_call
|
||||||
// expr_call_thread
|
// expr_call_thread
|
||||||
// expr_call_childthread
|
// expr_call_childthread
|
||||||
char dummy9[sizeof (expr_call_ptr)];
|
char dummy10[sizeof (expr_call_ptr)];
|
||||||
|
|
||||||
// expr_call_function
|
// expr_call_function
|
||||||
// expr_call_pointer
|
// expr_call_pointer
|
||||||
char dummy10[sizeof (expr_call_type_ptr)];
|
char dummy11[sizeof (expr_call_type_ptr)];
|
||||||
|
|
||||||
// for_expr
|
// for_expr
|
||||||
// expr
|
// expr
|
||||||
@ -449,36 +452,34 @@ namespace xsk { namespace gsc { namespace h1 {
|
|||||||
// expr_ternary
|
// expr_ternary
|
||||||
// expr_binary
|
// expr_binary
|
||||||
// expr_primitive
|
// expr_primitive
|
||||||
char dummy11[sizeof (expr_ptr)];
|
char dummy12[sizeof (expr_ptr)];
|
||||||
|
|
||||||
// false
|
// false
|
||||||
char dummy12[sizeof (false_ptr)];
|
char dummy13[sizeof (false_ptr)];
|
||||||
|
|
||||||
// file
|
// file
|
||||||
char dummy13[sizeof (file_ptr)];
|
char dummy14[sizeof (file_ptr)];
|
||||||
|
|
||||||
// neg_float
|
|
||||||
// float
|
// float
|
||||||
char dummy14[sizeof (float_ptr)];
|
char dummy15[sizeof (float_ptr)];
|
||||||
|
|
||||||
// game
|
// game
|
||||||
char dummy15[sizeof (game_ptr)];
|
char dummy16[sizeof (game_ptr)];
|
||||||
|
|
||||||
// include
|
// include
|
||||||
char dummy16[sizeof (include_ptr)];
|
char dummy17[sizeof (include_ptr)];
|
||||||
|
|
||||||
// neg_integer
|
|
||||||
// integer
|
// integer
|
||||||
char dummy17[sizeof (integer_ptr)];
|
char dummy18[sizeof (integer_ptr)];
|
||||||
|
|
||||||
// istring
|
// istring
|
||||||
char dummy18[sizeof (istring_ptr)];
|
char dummy19[sizeof (istring_ptr)];
|
||||||
|
|
||||||
// level
|
// level
|
||||||
char dummy19[sizeof (level_ptr)];
|
char dummy20[sizeof (level_ptr)];
|
||||||
|
|
||||||
// name
|
// name
|
||||||
char dummy20[sizeof (name_ptr)];
|
char dummy21[sizeof (name_ptr)];
|
||||||
|
|
||||||
// expr_function
|
// expr_function
|
||||||
// expr_add_array
|
// expr_add_array
|
||||||
@ -486,122 +487,126 @@ namespace xsk { namespace gsc { namespace h1 {
|
|||||||
// expr_field
|
// expr_field
|
||||||
// expr_size
|
// expr_size
|
||||||
// object
|
// object
|
||||||
char dummy21[sizeof (node_ptr)];
|
char dummy22[sizeof (node_ptr)];
|
||||||
|
|
||||||
// parameters
|
// parameters
|
||||||
char dummy22[sizeof (parameters_ptr)];
|
char dummy23[sizeof (parameters_ptr)];
|
||||||
|
|
||||||
// program
|
// program
|
||||||
char dummy23[sizeof (program_ptr)];
|
char dummy24[sizeof (program_ptr)];
|
||||||
|
|
||||||
// self
|
// self
|
||||||
char dummy24[sizeof (self_ptr)];
|
char dummy25[sizeof (self_ptr)];
|
||||||
|
|
||||||
// "file path"
|
// "file path"
|
||||||
// "identifier"
|
// "identifier"
|
||||||
// "string literal"
|
// "string literal"
|
||||||
// "localized string"
|
// "localized string"
|
||||||
|
// "color"
|
||||||
// "float"
|
// "float"
|
||||||
// "int"
|
// "int"
|
||||||
char dummy25[sizeof (std::string)];
|
// "octal int"
|
||||||
|
// "binary int"
|
||||||
|
// "hexadecimal int"
|
||||||
|
char dummy26[sizeof (std::string)];
|
||||||
|
|
||||||
// stmt_assign
|
// stmt_assign
|
||||||
char dummy26[sizeof (stmt_assign_ptr)];
|
char dummy27[sizeof (stmt_assign_ptr)];
|
||||||
|
|
||||||
// stmt_break
|
// stmt_break
|
||||||
char dummy27[sizeof (stmt_break_ptr)];
|
char dummy28[sizeof (stmt_break_ptr)];
|
||||||
|
|
||||||
// stmt_breakpoint
|
// stmt_breakpoint
|
||||||
char dummy28[sizeof (stmt_breakpoint_ptr)];
|
char dummy29[sizeof (stmt_breakpoint_ptr)];
|
||||||
|
|
||||||
// stmt_call
|
// stmt_call
|
||||||
char dummy29[sizeof (stmt_call_ptr)];
|
char dummy30[sizeof (stmt_call_ptr)];
|
||||||
|
|
||||||
// stmt_case
|
// stmt_case
|
||||||
char dummy30[sizeof (stmt_case_ptr)];
|
char dummy31[sizeof (stmt_case_ptr)];
|
||||||
|
|
||||||
// stmt_continue
|
// stmt_continue
|
||||||
char dummy31[sizeof (stmt_continue_ptr)];
|
char dummy32[sizeof (stmt_continue_ptr)];
|
||||||
|
|
||||||
// stmt_default
|
// stmt_default
|
||||||
char dummy32[sizeof (stmt_default_ptr)];
|
char dummy33[sizeof (stmt_default_ptr)];
|
||||||
|
|
||||||
// stmt_endon
|
// stmt_endon
|
||||||
char dummy33[sizeof (stmt_endon_ptr)];
|
char dummy34[sizeof (stmt_endon_ptr)];
|
||||||
|
|
||||||
// stmt_for
|
// stmt_for
|
||||||
char dummy34[sizeof (stmt_for_ptr)];
|
char dummy35[sizeof (stmt_for_ptr)];
|
||||||
|
|
||||||
// stmt_foreach
|
// stmt_foreach
|
||||||
char dummy35[sizeof (stmt_foreach_ptr)];
|
char dummy36[sizeof (stmt_foreach_ptr)];
|
||||||
|
|
||||||
// stmt_if
|
// stmt_if
|
||||||
char dummy36[sizeof (stmt_if_ptr)];
|
char dummy37[sizeof (stmt_if_ptr)];
|
||||||
|
|
||||||
// stmt_ifelse
|
// stmt_ifelse
|
||||||
char dummy37[sizeof (stmt_ifelse_ptr)];
|
char dummy38[sizeof (stmt_ifelse_ptr)];
|
||||||
|
|
||||||
// stmt_block
|
// stmt_block
|
||||||
// stmt_list
|
// stmt_list
|
||||||
char dummy38[sizeof (stmt_list_ptr)];
|
char dummy39[sizeof (stmt_list_ptr)];
|
||||||
|
|
||||||
// stmt_notify
|
// stmt_notify
|
||||||
char dummy39[sizeof (stmt_notify_ptr)];
|
char dummy40[sizeof (stmt_notify_ptr)];
|
||||||
|
|
||||||
// stmt_prof_begin
|
// stmt_prof_begin
|
||||||
char dummy40[sizeof (stmt_prof_begin_ptr)];
|
char dummy41[sizeof (stmt_prof_begin_ptr)];
|
||||||
|
|
||||||
// stmt_prof_end
|
// stmt_prof_end
|
||||||
char dummy41[sizeof (stmt_prof_end_ptr)];
|
char dummy42[sizeof (stmt_prof_end_ptr)];
|
||||||
|
|
||||||
// stmt
|
// stmt
|
||||||
// for_stmt
|
// for_stmt
|
||||||
char dummy42[sizeof (stmt_ptr)];
|
char dummy43[sizeof (stmt_ptr)];
|
||||||
|
|
||||||
// stmt_return
|
// stmt_return
|
||||||
char dummy43[sizeof (stmt_return_ptr)];
|
char dummy44[sizeof (stmt_return_ptr)];
|
||||||
|
|
||||||
// stmt_switch
|
// stmt_switch
|
||||||
char dummy44[sizeof (stmt_switch_ptr)];
|
char dummy45[sizeof (stmt_switch_ptr)];
|
||||||
|
|
||||||
// stmt_wait
|
// stmt_wait
|
||||||
char dummy45[sizeof (stmt_wait_ptr)];
|
char dummy46[sizeof (stmt_wait_ptr)];
|
||||||
|
|
||||||
// stmt_waitframe
|
// stmt_waitframe
|
||||||
char dummy46[sizeof (stmt_waitframe_ptr)];
|
char dummy47[sizeof (stmt_waitframe_ptr)];
|
||||||
|
|
||||||
// stmt_waittill
|
// stmt_waittill
|
||||||
char dummy47[sizeof (stmt_waittill_ptr)];
|
char dummy48[sizeof (stmt_waittill_ptr)];
|
||||||
|
|
||||||
// stmt_waittillframeend
|
// stmt_waittillframeend
|
||||||
char dummy48[sizeof (stmt_waittillframeend_ptr)];
|
char dummy49[sizeof (stmt_waittillframeend_ptr)];
|
||||||
|
|
||||||
// stmt_waittillmatch
|
// stmt_waittillmatch
|
||||||
char dummy49[sizeof (stmt_waittillmatch_ptr)];
|
char dummy50[sizeof (stmt_waittillmatch_ptr)];
|
||||||
|
|
||||||
// stmt_while
|
// stmt_while
|
||||||
char dummy50[sizeof (stmt_while_ptr)];
|
char dummy51[sizeof (stmt_while_ptr)];
|
||||||
|
|
||||||
// string
|
// string
|
||||||
char dummy51[sizeof (string_ptr)];
|
char dummy52[sizeof (string_ptr)];
|
||||||
|
|
||||||
// thisthread
|
// thisthread
|
||||||
char dummy52[sizeof (thisthread_ptr)];
|
char dummy53[sizeof (thisthread_ptr)];
|
||||||
|
|
||||||
// thread
|
// thread
|
||||||
char dummy53[sizeof (thread_ptr)];
|
char dummy54[sizeof (thread_ptr)];
|
||||||
|
|
||||||
// true
|
// true
|
||||||
char dummy54[sizeof (true_ptr)];
|
char dummy55[sizeof (true_ptr)];
|
||||||
|
|
||||||
// undefined
|
// undefined
|
||||||
char dummy55[sizeof (undefined_ptr)];
|
char dummy56[sizeof (undefined_ptr)];
|
||||||
|
|
||||||
// usingtree
|
// usingtree
|
||||||
char dummy56[sizeof (usingtree_ptr)];
|
char dummy57[sizeof (usingtree_ptr)];
|
||||||
|
|
||||||
// vector
|
// vector
|
||||||
char dummy57[sizeof (vector_ptr)];
|
char dummy58[sizeof (vector_ptr)];
|
||||||
};
|
};
|
||||||
|
|
||||||
/// The size of the largest semantic type.
|
/// The size of the largest semantic type.
|
||||||
@ -739,17 +744,21 @@ namespace xsk { namespace gsc { namespace h1 {
|
|||||||
NAME = 86, // "identifier"
|
NAME = 86, // "identifier"
|
||||||
STRING = 87, // "string literal"
|
STRING = 87, // "string literal"
|
||||||
ISTRING = 88, // "localized string"
|
ISTRING = 88, // "localized string"
|
||||||
FLOAT = 89, // "float"
|
COLOR = 89, // "color"
|
||||||
INTEGER = 90, // "int"
|
FLOAT = 90, // "float"
|
||||||
ADD_ARRAY = 91, // ADD_ARRAY
|
INT_DEC = 91, // "int"
|
||||||
THEN = 92, // THEN
|
INT_OCT = 92, // "octal int"
|
||||||
TERN = 93, // TERN
|
INT_BIN = 93, // "binary int"
|
||||||
NEG = 94, // NEG
|
INT_HEX = 94, // "hexadecimal int"
|
||||||
ANIMREF = 95, // ANIMREF
|
ADD_ARRAY = 95, // ADD_ARRAY
|
||||||
PREINC = 96, // PREINC
|
THEN = 96, // THEN
|
||||||
PREDEC = 97, // PREDEC
|
TERN = 97, // TERN
|
||||||
POSTINC = 98, // POSTINC
|
NEG = 98, // NEG
|
||||||
POSTDEC = 99 // POSTDEC
|
ANIMREF = 99, // ANIMREF
|
||||||
|
PREINC = 100, // PREINC
|
||||||
|
PREDEC = 101, // PREDEC
|
||||||
|
POSTINC = 102, // POSTINC
|
||||||
|
POSTDEC = 103 // POSTDEC
|
||||||
};
|
};
|
||||||
/// Backward compatibility alias (Bison 3.6).
|
/// Backward compatibility alias (Bison 3.6).
|
||||||
typedef token_kind_type yytokentype;
|
typedef token_kind_type yytokentype;
|
||||||
@ -766,7 +775,7 @@ namespace xsk { namespace gsc { namespace h1 {
|
|||||||
{
|
{
|
||||||
enum symbol_kind_type
|
enum symbol_kind_type
|
||||||
{
|
{
|
||||||
YYNTOKENS = 100, ///< Number of tokens.
|
YYNTOKENS = 104, ///< Number of tokens.
|
||||||
S_YYEMPTY = -2,
|
S_YYEMPTY = -2,
|
||||||
S_YYEOF = 0, // "end of file"
|
S_YYEOF = 0, // "end of file"
|
||||||
S_YYerror = 1, // error
|
S_YYerror = 1, // error
|
||||||
@ -857,94 +866,97 @@ namespace xsk { namespace gsc { namespace h1 {
|
|||||||
S_NAME = 86, // "identifier"
|
S_NAME = 86, // "identifier"
|
||||||
S_STRING = 87, // "string literal"
|
S_STRING = 87, // "string literal"
|
||||||
S_ISTRING = 88, // "localized string"
|
S_ISTRING = 88, // "localized string"
|
||||||
S_FLOAT = 89, // "float"
|
S_COLOR = 89, // "color"
|
||||||
S_INTEGER = 90, // "int"
|
S_FLOAT = 90, // "float"
|
||||||
S_ADD_ARRAY = 91, // ADD_ARRAY
|
S_INT_DEC = 91, // "int"
|
||||||
S_THEN = 92, // THEN
|
S_INT_OCT = 92, // "octal int"
|
||||||
S_TERN = 93, // TERN
|
S_INT_BIN = 93, // "binary int"
|
||||||
S_NEG = 94, // NEG
|
S_INT_HEX = 94, // "hexadecimal int"
|
||||||
S_ANIMREF = 95, // ANIMREF
|
S_ADD_ARRAY = 95, // ADD_ARRAY
|
||||||
S_PREINC = 96, // PREINC
|
S_THEN = 96, // THEN
|
||||||
S_PREDEC = 97, // PREDEC
|
S_TERN = 97, // TERN
|
||||||
S_POSTINC = 98, // POSTINC
|
S_NEG = 98, // NEG
|
||||||
S_POSTDEC = 99, // POSTDEC
|
S_ANIMREF = 99, // ANIMREF
|
||||||
S_YYACCEPT = 100, // $accept
|
S_PREINC = 100, // PREINC
|
||||||
S_root = 101, // root
|
S_PREDEC = 101, // PREDEC
|
||||||
S_program = 102, // program
|
S_POSTINC = 102, // POSTINC
|
||||||
S_include = 103, // include
|
S_POSTDEC = 103, // POSTDEC
|
||||||
S_define = 104, // define
|
S_YYACCEPT = 104, // $accept
|
||||||
S_usingtree = 105, // usingtree
|
S_root = 105, // root
|
||||||
S_constant = 106, // constant
|
S_program = 106, // program
|
||||||
S_thread = 107, // thread
|
S_include = 107, // include
|
||||||
S_parameters = 108, // parameters
|
S_define = 108, // define
|
||||||
S_stmt = 109, // stmt
|
S_usingtree = 109, // usingtree
|
||||||
S_stmt_block = 110, // stmt_block
|
S_constant = 110, // constant
|
||||||
S_stmt_list = 111, // stmt_list
|
S_thread = 111, // thread
|
||||||
S_stmt_call = 112, // stmt_call
|
S_parameters = 112, // parameters
|
||||||
S_stmt_assign = 113, // stmt_assign
|
S_stmt = 113, // stmt
|
||||||
S_stmt_endon = 114, // stmt_endon
|
S_stmt_block = 114, // stmt_block
|
||||||
S_stmt_notify = 115, // stmt_notify
|
S_stmt_list = 115, // stmt_list
|
||||||
S_stmt_wait = 116, // stmt_wait
|
S_stmt_call = 116, // stmt_call
|
||||||
S_stmt_waittill = 117, // stmt_waittill
|
S_stmt_assign = 117, // stmt_assign
|
||||||
S_stmt_waittillmatch = 118, // stmt_waittillmatch
|
S_stmt_endon = 118, // stmt_endon
|
||||||
S_stmt_waittillframeend = 119, // stmt_waittillframeend
|
S_stmt_notify = 119, // stmt_notify
|
||||||
S_stmt_waitframe = 120, // stmt_waitframe
|
S_stmt_wait = 120, // stmt_wait
|
||||||
S_stmt_if = 121, // stmt_if
|
S_stmt_waittill = 121, // stmt_waittill
|
||||||
S_stmt_ifelse = 122, // stmt_ifelse
|
S_stmt_waittillmatch = 122, // stmt_waittillmatch
|
||||||
S_stmt_while = 123, // stmt_while
|
S_stmt_waittillframeend = 123, // stmt_waittillframeend
|
||||||
S_stmt_for = 124, // stmt_for
|
S_stmt_waitframe = 124, // stmt_waitframe
|
||||||
S_stmt_foreach = 125, // stmt_foreach
|
S_stmt_if = 125, // stmt_if
|
||||||
S_stmt_switch = 126, // stmt_switch
|
S_stmt_ifelse = 126, // stmt_ifelse
|
||||||
S_stmt_case = 127, // stmt_case
|
S_stmt_while = 127, // stmt_while
|
||||||
S_stmt_default = 128, // stmt_default
|
S_stmt_for = 128, // stmt_for
|
||||||
S_stmt_break = 129, // stmt_break
|
S_stmt_foreach = 129, // stmt_foreach
|
||||||
S_stmt_continue = 130, // stmt_continue
|
S_stmt_switch = 130, // stmt_switch
|
||||||
S_stmt_return = 131, // stmt_return
|
S_stmt_case = 131, // stmt_case
|
||||||
S_stmt_breakpoint = 132, // stmt_breakpoint
|
S_stmt_default = 132, // stmt_default
|
||||||
S_stmt_prof_begin = 133, // stmt_prof_begin
|
S_stmt_break = 133, // stmt_break
|
||||||
S_stmt_prof_end = 134, // stmt_prof_end
|
S_stmt_continue = 134, // stmt_continue
|
||||||
S_for_stmt = 135, // for_stmt
|
S_stmt_return = 135, // stmt_return
|
||||||
S_for_expr = 136, // for_expr
|
S_stmt_breakpoint = 136, // stmt_breakpoint
|
||||||
S_expr = 137, // expr
|
S_stmt_prof_begin = 137, // stmt_prof_begin
|
||||||
S_expr_assign = 138, // expr_assign
|
S_stmt_prof_end = 138, // stmt_prof_end
|
||||||
S_expr_compare = 139, // expr_compare
|
S_for_stmt = 139, // for_stmt
|
||||||
S_expr_ternary = 140, // expr_ternary
|
S_for_expr = 140, // for_expr
|
||||||
S_expr_binary = 141, // expr_binary
|
S_expr = 141, // expr
|
||||||
S_expr_primitive = 142, // expr_primitive
|
S_expr_assign = 142, // expr_assign
|
||||||
S_expr_call = 143, // expr_call
|
S_expr_compare = 143, // expr_compare
|
||||||
S_expr_call_thread = 144, // expr_call_thread
|
S_expr_ternary = 144, // expr_ternary
|
||||||
S_expr_call_childthread = 145, // expr_call_childthread
|
S_expr_binary = 145, // expr_binary
|
||||||
S_expr_call_function = 146, // expr_call_function
|
S_expr_primitive = 146, // expr_primitive
|
||||||
S_expr_call_pointer = 147, // expr_call_pointer
|
S_expr_call = 147, // expr_call
|
||||||
S_expr_arguments = 148, // expr_arguments
|
S_expr_call_thread = 148, // expr_call_thread
|
||||||
S_expr_arguments_filled = 149, // expr_arguments_filled
|
S_expr_call_childthread = 149, // expr_call_childthread
|
||||||
S_expr_arguments_empty = 150, // expr_arguments_empty
|
S_expr_call_function = 150, // expr_call_function
|
||||||
S_expr_function = 151, // expr_function
|
S_expr_call_pointer = 151, // expr_call_pointer
|
||||||
S_expr_add_array = 152, // expr_add_array
|
S_expr_arguments = 152, // expr_arguments
|
||||||
S_expr_array = 153, // expr_array
|
S_expr_arguments_filled = 153, // expr_arguments_filled
|
||||||
S_expr_field = 154, // expr_field
|
S_expr_arguments_empty = 154, // expr_arguments_empty
|
||||||
S_expr_size = 155, // expr_size
|
S_expr_function = 155, // expr_function
|
||||||
S_object = 156, // object
|
S_expr_add_array = 156, // expr_add_array
|
||||||
S_thisthread = 157, // thisthread
|
S_expr_array = 157, // expr_array
|
||||||
S_empty_array = 158, // empty_array
|
S_expr_field = 158, // expr_field
|
||||||
S_undefined = 159, // undefined
|
S_expr_size = 159, // expr_size
|
||||||
S_game = 160, // game
|
S_object = 160, // object
|
||||||
S_self = 161, // self
|
S_float = 161, // float
|
||||||
S_anim = 162, // anim
|
S_integer = 162, // integer
|
||||||
S_level = 163, // level
|
S_thisthread = 163, // thisthread
|
||||||
S_animation = 164, // animation
|
S_empty_array = 164, // empty_array
|
||||||
S_animtree = 165, // animtree
|
S_undefined = 165, // undefined
|
||||||
S_name = 166, // name
|
S_game = 166, // game
|
||||||
S_file = 167, // file
|
S_self = 167, // self
|
||||||
S_istring = 168, // istring
|
S_anim = 168, // anim
|
||||||
S_string = 169, // string
|
S_level = 169, // level
|
||||||
S_vector = 170, // vector
|
S_animation = 170, // animation
|
||||||
S_neg_float = 171, // neg_float
|
S_animtree = 171, // animtree
|
||||||
S_neg_integer = 172, // neg_integer
|
S_name = 172, // name
|
||||||
S_float = 173, // float
|
S_file = 173, // file
|
||||||
S_integer = 174, // integer
|
S_istring = 174, // istring
|
||||||
S_false = 175, // false
|
S_string = 175, // string
|
||||||
S_true = 176 // true
|
S_color = 176, // color
|
||||||
|
S_vector = 177, // vector
|
||||||
|
S_false = 178, // false
|
||||||
|
S_true = 179 // true
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -993,6 +1005,10 @@ namespace xsk { namespace gsc { namespace h1 {
|
|||||||
value.move< animtree_ptr > (std::move (that.value));
|
value.move< animtree_ptr > (std::move (that.value));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case symbol_kind::S_color: // color
|
||||||
|
value.move< color_ptr > (std::move (that.value));
|
||||||
|
break;
|
||||||
|
|
||||||
case symbol_kind::S_constant: // constant
|
case symbol_kind::S_constant: // constant
|
||||||
value.move< constant_ptr > (std::move (that.value));
|
value.move< constant_ptr > (std::move (that.value));
|
||||||
break;
|
break;
|
||||||
@ -1043,7 +1059,6 @@ namespace xsk { namespace gsc { namespace h1 {
|
|||||||
value.move< file_ptr > (std::move (that.value));
|
value.move< file_ptr > (std::move (that.value));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case symbol_kind::S_neg_float: // neg_float
|
|
||||||
case symbol_kind::S_float: // float
|
case symbol_kind::S_float: // float
|
||||||
value.move< float_ptr > (std::move (that.value));
|
value.move< float_ptr > (std::move (that.value));
|
||||||
break;
|
break;
|
||||||
@ -1056,7 +1071,6 @@ namespace xsk { namespace gsc { namespace h1 {
|
|||||||
value.move< include_ptr > (std::move (that.value));
|
value.move< include_ptr > (std::move (that.value));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case symbol_kind::S_neg_integer: // neg_integer
|
|
||||||
case symbol_kind::S_integer: // integer
|
case symbol_kind::S_integer: // integer
|
||||||
value.move< integer_ptr > (std::move (that.value));
|
value.move< integer_ptr > (std::move (that.value));
|
||||||
break;
|
break;
|
||||||
@ -1098,8 +1112,12 @@ namespace xsk { namespace gsc { namespace h1 {
|
|||||||
case symbol_kind::S_NAME: // "identifier"
|
case symbol_kind::S_NAME: // "identifier"
|
||||||
case symbol_kind::S_STRING: // "string literal"
|
case symbol_kind::S_STRING: // "string literal"
|
||||||
case symbol_kind::S_ISTRING: // "localized string"
|
case symbol_kind::S_ISTRING: // "localized string"
|
||||||
|
case symbol_kind::S_COLOR: // "color"
|
||||||
case symbol_kind::S_FLOAT: // "float"
|
case symbol_kind::S_FLOAT: // "float"
|
||||||
case symbol_kind::S_INTEGER: // "int"
|
case symbol_kind::S_INT_DEC: // "int"
|
||||||
|
case symbol_kind::S_INT_OCT: // "octal int"
|
||||||
|
case symbol_kind::S_INT_BIN: // "binary int"
|
||||||
|
case symbol_kind::S_INT_HEX: // "hexadecimal int"
|
||||||
value.move< std::string > (std::move (that.value));
|
value.move< std::string > (std::move (that.value));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -1298,6 +1316,20 @@ namespace xsk { namespace gsc { namespace h1 {
|
|||||||
{}
|
{}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if 201103L <= YY_CPLUSPLUS
|
||||||
|
basic_symbol (typename Base::kind_type t, color_ptr&& v, location_type&& l)
|
||||||
|
: Base (t)
|
||||||
|
, value (std::move (v))
|
||||||
|
, location (std::move (l))
|
||||||
|
{}
|
||||||
|
#else
|
||||||
|
basic_symbol (typename Base::kind_type t, const color_ptr& v, const location_type& l)
|
||||||
|
: Base (t)
|
||||||
|
, value (v)
|
||||||
|
, location (l)
|
||||||
|
{}
|
||||||
|
#endif
|
||||||
|
|
||||||
#if 201103L <= YY_CPLUSPLUS
|
#if 201103L <= YY_CPLUSPLUS
|
||||||
basic_symbol (typename Base::kind_type t, constant_ptr&& v, location_type&& l)
|
basic_symbol (typename Base::kind_type t, constant_ptr&& v, location_type&& l)
|
||||||
: Base (t)
|
: Base (t)
|
||||||
@ -2088,6 +2120,10 @@ switch (yykind)
|
|||||||
value.template destroy< animtree_ptr > ();
|
value.template destroy< animtree_ptr > ();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case symbol_kind::S_color: // color
|
||||||
|
value.template destroy< color_ptr > ();
|
||||||
|
break;
|
||||||
|
|
||||||
case symbol_kind::S_constant: // constant
|
case symbol_kind::S_constant: // constant
|
||||||
value.template destroy< constant_ptr > ();
|
value.template destroy< constant_ptr > ();
|
||||||
break;
|
break;
|
||||||
@ -2138,7 +2174,6 @@ switch (yykind)
|
|||||||
value.template destroy< file_ptr > ();
|
value.template destroy< file_ptr > ();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case symbol_kind::S_neg_float: // neg_float
|
|
||||||
case symbol_kind::S_float: // float
|
case symbol_kind::S_float: // float
|
||||||
value.template destroy< float_ptr > ();
|
value.template destroy< float_ptr > ();
|
||||||
break;
|
break;
|
||||||
@ -2151,7 +2186,6 @@ switch (yykind)
|
|||||||
value.template destroy< include_ptr > ();
|
value.template destroy< include_ptr > ();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case symbol_kind::S_neg_integer: // neg_integer
|
|
||||||
case symbol_kind::S_integer: // integer
|
case symbol_kind::S_integer: // integer
|
||||||
value.template destroy< integer_ptr > ();
|
value.template destroy< integer_ptr > ();
|
||||||
break;
|
break;
|
||||||
@ -2193,8 +2227,12 @@ switch (yykind)
|
|||||||
case symbol_kind::S_NAME: // "identifier"
|
case symbol_kind::S_NAME: // "identifier"
|
||||||
case symbol_kind::S_STRING: // "string literal"
|
case symbol_kind::S_STRING: // "string literal"
|
||||||
case symbol_kind::S_ISTRING: // "localized string"
|
case symbol_kind::S_ISTRING: // "localized string"
|
||||||
|
case symbol_kind::S_COLOR: // "color"
|
||||||
case symbol_kind::S_FLOAT: // "float"
|
case symbol_kind::S_FLOAT: // "float"
|
||||||
case symbol_kind::S_INTEGER: // "int"
|
case symbol_kind::S_INT_DEC: // "int"
|
||||||
|
case symbol_kind::S_INT_OCT: // "octal int"
|
||||||
|
case symbol_kind::S_INT_BIN: // "binary int"
|
||||||
|
case symbol_kind::S_INT_HEX: // "hexadecimal int"
|
||||||
value.template destroy< std::string > ();
|
value.template destroy< std::string > ();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -2434,7 +2472,7 @@ switch (yykind)
|
|||||||
: super_type(token_type (tok), v, l)
|
: super_type(token_type (tok), v, l)
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
H1_ASSERT ((token::FILE <= tok && tok <= token::INTEGER));
|
H1_ASSERT ((token::FILE <= tok && tok <= token::INT_HEX));
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -3819,6 +3857,21 @@ switch (yykind)
|
|||||||
return symbol_type (token::ISTRING, v, l);
|
return symbol_type (token::ISTRING, v, l);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
#if 201103L <= YY_CPLUSPLUS
|
||||||
|
static
|
||||||
|
symbol_type
|
||||||
|
make_COLOR (std::string v, location_type l)
|
||||||
|
{
|
||||||
|
return symbol_type (token::COLOR, std::move (v), std::move (l));
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
static
|
||||||
|
symbol_type
|
||||||
|
make_COLOR (const std::string& v, const location_type& l)
|
||||||
|
{
|
||||||
|
return symbol_type (token::COLOR, v, l);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
#if 201103L <= YY_CPLUSPLUS
|
#if 201103L <= YY_CPLUSPLUS
|
||||||
static
|
static
|
||||||
symbol_type
|
symbol_type
|
||||||
@ -3837,16 +3890,61 @@ switch (yykind)
|
|||||||
#if 201103L <= YY_CPLUSPLUS
|
#if 201103L <= YY_CPLUSPLUS
|
||||||
static
|
static
|
||||||
symbol_type
|
symbol_type
|
||||||
make_INTEGER (std::string v, location_type l)
|
make_INT_DEC (std::string v, location_type l)
|
||||||
{
|
{
|
||||||
return symbol_type (token::INTEGER, std::move (v), std::move (l));
|
return symbol_type (token::INT_DEC, std::move (v), std::move (l));
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
static
|
static
|
||||||
symbol_type
|
symbol_type
|
||||||
make_INTEGER (const std::string& v, const location_type& l)
|
make_INT_DEC (const std::string& v, const location_type& l)
|
||||||
{
|
{
|
||||||
return symbol_type (token::INTEGER, v, l);
|
return symbol_type (token::INT_DEC, v, l);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#if 201103L <= YY_CPLUSPLUS
|
||||||
|
static
|
||||||
|
symbol_type
|
||||||
|
make_INT_OCT (std::string v, location_type l)
|
||||||
|
{
|
||||||
|
return symbol_type (token::INT_OCT, std::move (v), std::move (l));
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
static
|
||||||
|
symbol_type
|
||||||
|
make_INT_OCT (const std::string& v, const location_type& l)
|
||||||
|
{
|
||||||
|
return symbol_type (token::INT_OCT, v, l);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#if 201103L <= YY_CPLUSPLUS
|
||||||
|
static
|
||||||
|
symbol_type
|
||||||
|
make_INT_BIN (std::string v, location_type l)
|
||||||
|
{
|
||||||
|
return symbol_type (token::INT_BIN, std::move (v), std::move (l));
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
static
|
||||||
|
symbol_type
|
||||||
|
make_INT_BIN (const std::string& v, const location_type& l)
|
||||||
|
{
|
||||||
|
return symbol_type (token::INT_BIN, v, l);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#if 201103L <= YY_CPLUSPLUS
|
||||||
|
static
|
||||||
|
symbol_type
|
||||||
|
make_INT_HEX (std::string v, location_type l)
|
||||||
|
{
|
||||||
|
return symbol_type (token::INT_HEX, std::move (v), std::move (l));
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
static
|
||||||
|
symbol_type
|
||||||
|
make_INT_HEX (const std::string& v, const location_type& l)
|
||||||
|
{
|
||||||
|
return symbol_type (token::INT_HEX, v, l);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#if 201103L <= YY_CPLUSPLUS
|
#if 201103L <= YY_CPLUSPLUS
|
||||||
@ -4328,8 +4426,8 @@ switch (yykind)
|
|||||||
/// Constants.
|
/// Constants.
|
||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
yylast_ = 1842, ///< Last index in yytable_.
|
yylast_ = 1883, ///< Last index in yytable_.
|
||||||
yynnts_ = 77, ///< Number of nonterminal symbols.
|
yynnts_ = 76, ///< Number of nonterminal symbols.
|
||||||
yyfinal_ = 15 ///< Termination state number.
|
yyfinal_ = 15 ///< Termination state number.
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -4369,6 +4467,10 @@ switch (yykind)
|
|||||||
value.copy< animtree_ptr > (YY_MOVE (that.value));
|
value.copy< animtree_ptr > (YY_MOVE (that.value));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case symbol_kind::S_color: // color
|
||||||
|
value.copy< color_ptr > (YY_MOVE (that.value));
|
||||||
|
break;
|
||||||
|
|
||||||
case symbol_kind::S_constant: // constant
|
case symbol_kind::S_constant: // constant
|
||||||
value.copy< constant_ptr > (YY_MOVE (that.value));
|
value.copy< constant_ptr > (YY_MOVE (that.value));
|
||||||
break;
|
break;
|
||||||
@ -4419,7 +4521,6 @@ switch (yykind)
|
|||||||
value.copy< file_ptr > (YY_MOVE (that.value));
|
value.copy< file_ptr > (YY_MOVE (that.value));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case symbol_kind::S_neg_float: // neg_float
|
|
||||||
case symbol_kind::S_float: // float
|
case symbol_kind::S_float: // float
|
||||||
value.copy< float_ptr > (YY_MOVE (that.value));
|
value.copy< float_ptr > (YY_MOVE (that.value));
|
||||||
break;
|
break;
|
||||||
@ -4432,7 +4533,6 @@ switch (yykind)
|
|||||||
value.copy< include_ptr > (YY_MOVE (that.value));
|
value.copy< include_ptr > (YY_MOVE (that.value));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case symbol_kind::S_neg_integer: // neg_integer
|
|
||||||
case symbol_kind::S_integer: // integer
|
case symbol_kind::S_integer: // integer
|
||||||
value.copy< integer_ptr > (YY_MOVE (that.value));
|
value.copy< integer_ptr > (YY_MOVE (that.value));
|
||||||
break;
|
break;
|
||||||
@ -4474,8 +4574,12 @@ switch (yykind)
|
|||||||
case symbol_kind::S_NAME: // "identifier"
|
case symbol_kind::S_NAME: // "identifier"
|
||||||
case symbol_kind::S_STRING: // "string literal"
|
case symbol_kind::S_STRING: // "string literal"
|
||||||
case symbol_kind::S_ISTRING: // "localized string"
|
case symbol_kind::S_ISTRING: // "localized string"
|
||||||
|
case symbol_kind::S_COLOR: // "color"
|
||||||
case symbol_kind::S_FLOAT: // "float"
|
case symbol_kind::S_FLOAT: // "float"
|
||||||
case symbol_kind::S_INTEGER: // "int"
|
case symbol_kind::S_INT_DEC: // "int"
|
||||||
|
case symbol_kind::S_INT_OCT: // "octal int"
|
||||||
|
case symbol_kind::S_INT_BIN: // "binary int"
|
||||||
|
case symbol_kind::S_INT_HEX: // "hexadecimal int"
|
||||||
value.copy< std::string > (YY_MOVE (that.value));
|
value.copy< std::string > (YY_MOVE (that.value));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -4650,6 +4754,10 @@ switch (yykind)
|
|||||||
value.move< animtree_ptr > (YY_MOVE (s.value));
|
value.move< animtree_ptr > (YY_MOVE (s.value));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case symbol_kind::S_color: // color
|
||||||
|
value.move< color_ptr > (YY_MOVE (s.value));
|
||||||
|
break;
|
||||||
|
|
||||||
case symbol_kind::S_constant: // constant
|
case symbol_kind::S_constant: // constant
|
||||||
value.move< constant_ptr > (YY_MOVE (s.value));
|
value.move< constant_ptr > (YY_MOVE (s.value));
|
||||||
break;
|
break;
|
||||||
@ -4700,7 +4808,6 @@ switch (yykind)
|
|||||||
value.move< file_ptr > (YY_MOVE (s.value));
|
value.move< file_ptr > (YY_MOVE (s.value));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case symbol_kind::S_neg_float: // neg_float
|
|
||||||
case symbol_kind::S_float: // float
|
case symbol_kind::S_float: // float
|
||||||
value.move< float_ptr > (YY_MOVE (s.value));
|
value.move< float_ptr > (YY_MOVE (s.value));
|
||||||
break;
|
break;
|
||||||
@ -4713,7 +4820,6 @@ switch (yykind)
|
|||||||
value.move< include_ptr > (YY_MOVE (s.value));
|
value.move< include_ptr > (YY_MOVE (s.value));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case symbol_kind::S_neg_integer: // neg_integer
|
|
||||||
case symbol_kind::S_integer: // integer
|
case symbol_kind::S_integer: // integer
|
||||||
value.move< integer_ptr > (YY_MOVE (s.value));
|
value.move< integer_ptr > (YY_MOVE (s.value));
|
||||||
break;
|
break;
|
||||||
@ -4755,8 +4861,12 @@ switch (yykind)
|
|||||||
case symbol_kind::S_NAME: // "identifier"
|
case symbol_kind::S_NAME: // "identifier"
|
||||||
case symbol_kind::S_STRING: // "string literal"
|
case symbol_kind::S_STRING: // "string literal"
|
||||||
case symbol_kind::S_ISTRING: // "localized string"
|
case symbol_kind::S_ISTRING: // "localized string"
|
||||||
|
case symbol_kind::S_COLOR: // "color"
|
||||||
case symbol_kind::S_FLOAT: // "float"
|
case symbol_kind::S_FLOAT: // "float"
|
||||||
case symbol_kind::S_INTEGER: // "int"
|
case symbol_kind::S_INT_DEC: // "int"
|
||||||
|
case symbol_kind::S_INT_OCT: // "octal int"
|
||||||
|
case symbol_kind::S_INT_BIN: // "binary int"
|
||||||
|
case symbol_kind::S_INT_HEX: // "hexadecimal int"
|
||||||
value.move< std::string > (YY_MOVE (s.value));
|
value.move< std::string > (YY_MOVE (s.value));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -4953,7 +5063,7 @@ switch (yykind)
|
|||||||
|
|
||||||
#line 13 "parser.ypp"
|
#line 13 "parser.ypp"
|
||||||
} } } // xsk::gsc::h1
|
} } } // xsk::gsc::h1
|
||||||
#line 4957 "parser.hpp"
|
#line 5067 "parser.hpp"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -791,6 +791,7 @@ void compiler::emit_expr(const gsc::context_ptr& ctx, const gsc::expr_ptr& expr)
|
|||||||
case gsc::node_t::data_name: emit_local_variable(ctx, expr.as_name); break;
|
case gsc::node_t::data_name: emit_local_variable(ctx, expr.as_name); break;
|
||||||
case gsc::node_t::data_istring: emit_istring(ctx, expr.as_istring); break;
|
case gsc::node_t::data_istring: emit_istring(ctx, expr.as_istring); break;
|
||||||
case gsc::node_t::data_string: emit_string(ctx, expr.as_string); break;
|
case gsc::node_t::data_string: emit_string(ctx, expr.as_string); break;
|
||||||
|
case gsc::node_t::data_color: emit_color(ctx, expr.as_color); break;
|
||||||
case gsc::node_t::data_vector: emit_vector(ctx, expr.as_vector); break;
|
case gsc::node_t::data_vector: emit_vector(ctx, expr.as_vector); break;
|
||||||
case gsc::node_t::data_float: emit_float(ctx, expr.as_float); break;
|
case gsc::node_t::data_float: emit_float(ctx, expr.as_float); break;
|
||||||
case gsc::node_t::data_integer: emit_integer(ctx, expr.as_integer); break;
|
case gsc::node_t::data_integer: emit_integer(ctx, expr.as_integer); break;
|
||||||
@ -1612,6 +1613,30 @@ void compiler::emit_string(const gsc::context_ptr& ctx, const gsc::string_ptr& s
|
|||||||
emit_opcode(ctx, opcode::OP_GetString, str->value);
|
emit_opcode(ctx, opcode::OP_GetString, str->value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void compiler::emit_color(const gsc::context_ptr& ctx, const gsc::color_ptr& color)
|
||||||
|
{
|
||||||
|
std::vector<std::string> data;
|
||||||
|
std::string x, y, z;
|
||||||
|
|
||||||
|
if(color->value.size() == 3)
|
||||||
|
{
|
||||||
|
x = "0x" + color->value.substr(0, 1) + color->value.substr(0, 1);
|
||||||
|
y = "0x" + color->value.substr(1, 1) + color->value.substr(1, 1);
|
||||||
|
z = "0x" + color->value.substr(2, 1) + color->value.substr(2, 1);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
x = "0x" + color->value.substr(0, 2);
|
||||||
|
y = "0x" + color->value.substr(2, 2);
|
||||||
|
z = "0x" + color->value.substr(4, 2);
|
||||||
|
}
|
||||||
|
|
||||||
|
data.push_back(gsc::utils::string::hex_to_dec(x.data()));
|
||||||
|
data.push_back(gsc::utils::string::hex_to_dec(y.data()));
|
||||||
|
data.push_back(gsc::utils::string::hex_to_dec(z.data()));
|
||||||
|
emit_opcode(ctx, opcode::OP_GetVector, data);
|
||||||
|
}
|
||||||
|
|
||||||
void compiler::emit_vector(const gsc::context_ptr& ctx, const gsc::vector_ptr& vec)
|
void compiler::emit_vector(const gsc::context_ptr& ctx, const gsc::vector_ptr& vec)
|
||||||
{
|
{
|
||||||
std::vector<std::string> data;
|
std::vector<std::string> data;
|
||||||
|
@ -102,6 +102,7 @@ private:
|
|||||||
void emit_animation(const gsc::context_ptr& ctx, const gsc::animation_ptr& animation);
|
void emit_animation(const gsc::context_ptr& ctx, const gsc::animation_ptr& animation);
|
||||||
void emit_istring(const gsc::context_ptr& ctx, const gsc::istring_ptr& str);
|
void emit_istring(const gsc::context_ptr& ctx, const gsc::istring_ptr& str);
|
||||||
void emit_string(const gsc::context_ptr& ctx, const gsc::string_ptr& str);
|
void emit_string(const gsc::context_ptr& ctx, const gsc::string_ptr& str);
|
||||||
|
void emit_color(const gsc::context_ptr& ctx, const gsc::color_ptr& color);
|
||||||
void emit_vector(const gsc::context_ptr& ctx, const gsc::vector_ptr& vec);
|
void emit_vector(const gsc::context_ptr& ctx, const gsc::vector_ptr& vec);
|
||||||
void emit_float(const gsc::context_ptr& ctx, const gsc::float_ptr& num);
|
void emit_float(const gsc::context_ptr& ctx, const gsc::float_ptr& num);
|
||||||
void emit_integer(const gsc::context_ptr& ctx, const gsc::integer_ptr& num);
|
void emit_integer(const gsc::context_ptr& ctx, const gsc::integer_ptr& num);
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -700,7 +700,7 @@ extern int yylex (yyscan_t yyscanner);
|
|||||||
#undef yyTABLES_NAME
|
#undef yyTABLES_NAME
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#line 150 "lexer.lpp"
|
#line 158 "lexer.lpp"
|
||||||
|
|
||||||
|
|
||||||
#line 706 "lexer.hpp"
|
#line 706 "lexer.hpp"
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -417,31 +417,34 @@ namespace xsk { namespace gsc { namespace h2 {
|
|||||||
// animtree
|
// animtree
|
||||||
char dummy3[sizeof (animtree_ptr)];
|
char dummy3[sizeof (animtree_ptr)];
|
||||||
|
|
||||||
|
// color
|
||||||
|
char dummy4[sizeof (color_ptr)];
|
||||||
|
|
||||||
// constant
|
// constant
|
||||||
char dummy4[sizeof (constant_ptr)];
|
char dummy5[sizeof (constant_ptr)];
|
||||||
|
|
||||||
// define
|
// define
|
||||||
char dummy5[sizeof (define_ptr)];
|
char dummy6[sizeof (define_ptr)];
|
||||||
|
|
||||||
// empty_array
|
// empty_array
|
||||||
char dummy6[sizeof (empty_array_ptr)];
|
char dummy7[sizeof (empty_array_ptr)];
|
||||||
|
|
||||||
// expr_arguments
|
// expr_arguments
|
||||||
// expr_arguments_filled
|
// expr_arguments_filled
|
||||||
// expr_arguments_empty
|
// expr_arguments_empty
|
||||||
char dummy7[sizeof (expr_arguments_ptr)];
|
char dummy8[sizeof (expr_arguments_ptr)];
|
||||||
|
|
||||||
// expr_assign
|
// expr_assign
|
||||||
char dummy8[sizeof (expr_assign_ptr)];
|
char dummy9[sizeof (expr_assign_ptr)];
|
||||||
|
|
||||||
// expr_call
|
// expr_call
|
||||||
// expr_call_thread
|
// expr_call_thread
|
||||||
// expr_call_childthread
|
// expr_call_childthread
|
||||||
char dummy9[sizeof (expr_call_ptr)];
|
char dummy10[sizeof (expr_call_ptr)];
|
||||||
|
|
||||||
// expr_call_function
|
// expr_call_function
|
||||||
// expr_call_pointer
|
// expr_call_pointer
|
||||||
char dummy10[sizeof (expr_call_type_ptr)];
|
char dummy11[sizeof (expr_call_type_ptr)];
|
||||||
|
|
||||||
// for_expr
|
// for_expr
|
||||||
// expr
|
// expr
|
||||||
@ -449,36 +452,34 @@ namespace xsk { namespace gsc { namespace h2 {
|
|||||||
// expr_ternary
|
// expr_ternary
|
||||||
// expr_binary
|
// expr_binary
|
||||||
// expr_primitive
|
// expr_primitive
|
||||||
char dummy11[sizeof (expr_ptr)];
|
char dummy12[sizeof (expr_ptr)];
|
||||||
|
|
||||||
// false
|
// false
|
||||||
char dummy12[sizeof (false_ptr)];
|
char dummy13[sizeof (false_ptr)];
|
||||||
|
|
||||||
// file
|
// file
|
||||||
char dummy13[sizeof (file_ptr)];
|
char dummy14[sizeof (file_ptr)];
|
||||||
|
|
||||||
// neg_float
|
|
||||||
// float
|
// float
|
||||||
char dummy14[sizeof (float_ptr)];
|
char dummy15[sizeof (float_ptr)];
|
||||||
|
|
||||||
// game
|
// game
|
||||||
char dummy15[sizeof (game_ptr)];
|
char dummy16[sizeof (game_ptr)];
|
||||||
|
|
||||||
// include
|
// include
|
||||||
char dummy16[sizeof (include_ptr)];
|
char dummy17[sizeof (include_ptr)];
|
||||||
|
|
||||||
// neg_integer
|
|
||||||
// integer
|
// integer
|
||||||
char dummy17[sizeof (integer_ptr)];
|
char dummy18[sizeof (integer_ptr)];
|
||||||
|
|
||||||
// istring
|
// istring
|
||||||
char dummy18[sizeof (istring_ptr)];
|
char dummy19[sizeof (istring_ptr)];
|
||||||
|
|
||||||
// level
|
// level
|
||||||
char dummy19[sizeof (level_ptr)];
|
char dummy20[sizeof (level_ptr)];
|
||||||
|
|
||||||
// name
|
// name
|
||||||
char dummy20[sizeof (name_ptr)];
|
char dummy21[sizeof (name_ptr)];
|
||||||
|
|
||||||
// expr_function
|
// expr_function
|
||||||
// expr_add_array
|
// expr_add_array
|
||||||
@ -486,122 +487,126 @@ namespace xsk { namespace gsc { namespace h2 {
|
|||||||
// expr_field
|
// expr_field
|
||||||
// expr_size
|
// expr_size
|
||||||
// object
|
// object
|
||||||
char dummy21[sizeof (node_ptr)];
|
char dummy22[sizeof (node_ptr)];
|
||||||
|
|
||||||
// parameters
|
// parameters
|
||||||
char dummy22[sizeof (parameters_ptr)];
|
char dummy23[sizeof (parameters_ptr)];
|
||||||
|
|
||||||
// program
|
// program
|
||||||
char dummy23[sizeof (program_ptr)];
|
char dummy24[sizeof (program_ptr)];
|
||||||
|
|
||||||
// self
|
// self
|
||||||
char dummy24[sizeof (self_ptr)];
|
char dummy25[sizeof (self_ptr)];
|
||||||
|
|
||||||
// "file path"
|
// "file path"
|
||||||
// "identifier"
|
// "identifier"
|
||||||
// "string literal"
|
// "string literal"
|
||||||
// "localized string"
|
// "localized string"
|
||||||
|
// "color"
|
||||||
// "float"
|
// "float"
|
||||||
// "int"
|
// "int"
|
||||||
char dummy25[sizeof (std::string)];
|
// "octal int"
|
||||||
|
// "binary int"
|
||||||
|
// "hexadecimal int"
|
||||||
|
char dummy26[sizeof (std::string)];
|
||||||
|
|
||||||
// stmt_assign
|
// stmt_assign
|
||||||
char dummy26[sizeof (stmt_assign_ptr)];
|
char dummy27[sizeof (stmt_assign_ptr)];
|
||||||
|
|
||||||
// stmt_break
|
// stmt_break
|
||||||
char dummy27[sizeof (stmt_break_ptr)];
|
char dummy28[sizeof (stmt_break_ptr)];
|
||||||
|
|
||||||
// stmt_breakpoint
|
// stmt_breakpoint
|
||||||
char dummy28[sizeof (stmt_breakpoint_ptr)];
|
char dummy29[sizeof (stmt_breakpoint_ptr)];
|
||||||
|
|
||||||
// stmt_call
|
// stmt_call
|
||||||
char dummy29[sizeof (stmt_call_ptr)];
|
char dummy30[sizeof (stmt_call_ptr)];
|
||||||
|
|
||||||
// stmt_case
|
// stmt_case
|
||||||
char dummy30[sizeof (stmt_case_ptr)];
|
char dummy31[sizeof (stmt_case_ptr)];
|
||||||
|
|
||||||
// stmt_continue
|
// stmt_continue
|
||||||
char dummy31[sizeof (stmt_continue_ptr)];
|
char dummy32[sizeof (stmt_continue_ptr)];
|
||||||
|
|
||||||
// stmt_default
|
// stmt_default
|
||||||
char dummy32[sizeof (stmt_default_ptr)];
|
char dummy33[sizeof (stmt_default_ptr)];
|
||||||
|
|
||||||
// stmt_endon
|
// stmt_endon
|
||||||
char dummy33[sizeof (stmt_endon_ptr)];
|
char dummy34[sizeof (stmt_endon_ptr)];
|
||||||
|
|
||||||
// stmt_for
|
// stmt_for
|
||||||
char dummy34[sizeof (stmt_for_ptr)];
|
char dummy35[sizeof (stmt_for_ptr)];
|
||||||
|
|
||||||
// stmt_foreach
|
// stmt_foreach
|
||||||
char dummy35[sizeof (stmt_foreach_ptr)];
|
char dummy36[sizeof (stmt_foreach_ptr)];
|
||||||
|
|
||||||
// stmt_if
|
// stmt_if
|
||||||
char dummy36[sizeof (stmt_if_ptr)];
|
char dummy37[sizeof (stmt_if_ptr)];
|
||||||
|
|
||||||
// stmt_ifelse
|
// stmt_ifelse
|
||||||
char dummy37[sizeof (stmt_ifelse_ptr)];
|
char dummy38[sizeof (stmt_ifelse_ptr)];
|
||||||
|
|
||||||
// stmt_block
|
// stmt_block
|
||||||
// stmt_list
|
// stmt_list
|
||||||
char dummy38[sizeof (stmt_list_ptr)];
|
char dummy39[sizeof (stmt_list_ptr)];
|
||||||
|
|
||||||
// stmt_notify
|
// stmt_notify
|
||||||
char dummy39[sizeof (stmt_notify_ptr)];
|
char dummy40[sizeof (stmt_notify_ptr)];
|
||||||
|
|
||||||
// stmt_prof_begin
|
// stmt_prof_begin
|
||||||
char dummy40[sizeof (stmt_prof_begin_ptr)];
|
char dummy41[sizeof (stmt_prof_begin_ptr)];
|
||||||
|
|
||||||
// stmt_prof_end
|
// stmt_prof_end
|
||||||
char dummy41[sizeof (stmt_prof_end_ptr)];
|
char dummy42[sizeof (stmt_prof_end_ptr)];
|
||||||
|
|
||||||
// stmt
|
// stmt
|
||||||
// for_stmt
|
// for_stmt
|
||||||
char dummy42[sizeof (stmt_ptr)];
|
char dummy43[sizeof (stmt_ptr)];
|
||||||
|
|
||||||
// stmt_return
|
// stmt_return
|
||||||
char dummy43[sizeof (stmt_return_ptr)];
|
char dummy44[sizeof (stmt_return_ptr)];
|
||||||
|
|
||||||
// stmt_switch
|
// stmt_switch
|
||||||
char dummy44[sizeof (stmt_switch_ptr)];
|
char dummy45[sizeof (stmt_switch_ptr)];
|
||||||
|
|
||||||
// stmt_wait
|
// stmt_wait
|
||||||
char dummy45[sizeof (stmt_wait_ptr)];
|
char dummy46[sizeof (stmt_wait_ptr)];
|
||||||
|
|
||||||
// stmt_waitframe
|
// stmt_waitframe
|
||||||
char dummy46[sizeof (stmt_waitframe_ptr)];
|
char dummy47[sizeof (stmt_waitframe_ptr)];
|
||||||
|
|
||||||
// stmt_waittill
|
// stmt_waittill
|
||||||
char dummy47[sizeof (stmt_waittill_ptr)];
|
char dummy48[sizeof (stmt_waittill_ptr)];
|
||||||
|
|
||||||
// stmt_waittillframeend
|
// stmt_waittillframeend
|
||||||
char dummy48[sizeof (stmt_waittillframeend_ptr)];
|
char dummy49[sizeof (stmt_waittillframeend_ptr)];
|
||||||
|
|
||||||
// stmt_waittillmatch
|
// stmt_waittillmatch
|
||||||
char dummy49[sizeof (stmt_waittillmatch_ptr)];
|
char dummy50[sizeof (stmt_waittillmatch_ptr)];
|
||||||
|
|
||||||
// stmt_while
|
// stmt_while
|
||||||
char dummy50[sizeof (stmt_while_ptr)];
|
char dummy51[sizeof (stmt_while_ptr)];
|
||||||
|
|
||||||
// string
|
// string
|
||||||
char dummy51[sizeof (string_ptr)];
|
char dummy52[sizeof (string_ptr)];
|
||||||
|
|
||||||
// thisthread
|
// thisthread
|
||||||
char dummy52[sizeof (thisthread_ptr)];
|
char dummy53[sizeof (thisthread_ptr)];
|
||||||
|
|
||||||
// thread
|
// thread
|
||||||
char dummy53[sizeof (thread_ptr)];
|
char dummy54[sizeof (thread_ptr)];
|
||||||
|
|
||||||
// true
|
// true
|
||||||
char dummy54[sizeof (true_ptr)];
|
char dummy55[sizeof (true_ptr)];
|
||||||
|
|
||||||
// undefined
|
// undefined
|
||||||
char dummy55[sizeof (undefined_ptr)];
|
char dummy56[sizeof (undefined_ptr)];
|
||||||
|
|
||||||
// usingtree
|
// usingtree
|
||||||
char dummy56[sizeof (usingtree_ptr)];
|
char dummy57[sizeof (usingtree_ptr)];
|
||||||
|
|
||||||
// vector
|
// vector
|
||||||
char dummy57[sizeof (vector_ptr)];
|
char dummy58[sizeof (vector_ptr)];
|
||||||
};
|
};
|
||||||
|
|
||||||
/// The size of the largest semantic type.
|
/// The size of the largest semantic type.
|
||||||
@ -739,17 +744,21 @@ namespace xsk { namespace gsc { namespace h2 {
|
|||||||
NAME = 86, // "identifier"
|
NAME = 86, // "identifier"
|
||||||
STRING = 87, // "string literal"
|
STRING = 87, // "string literal"
|
||||||
ISTRING = 88, // "localized string"
|
ISTRING = 88, // "localized string"
|
||||||
FLOAT = 89, // "float"
|
COLOR = 89, // "color"
|
||||||
INTEGER = 90, // "int"
|
FLOAT = 90, // "float"
|
||||||
ADD_ARRAY = 91, // ADD_ARRAY
|
INT_DEC = 91, // "int"
|
||||||
THEN = 92, // THEN
|
INT_OCT = 92, // "octal int"
|
||||||
TERN = 93, // TERN
|
INT_BIN = 93, // "binary int"
|
||||||
NEG = 94, // NEG
|
INT_HEX = 94, // "hexadecimal int"
|
||||||
ANIMREF = 95, // ANIMREF
|
ADD_ARRAY = 95, // ADD_ARRAY
|
||||||
PREINC = 96, // PREINC
|
THEN = 96, // THEN
|
||||||
PREDEC = 97, // PREDEC
|
TERN = 97, // TERN
|
||||||
POSTINC = 98, // POSTINC
|
NEG = 98, // NEG
|
||||||
POSTDEC = 99 // POSTDEC
|
ANIMREF = 99, // ANIMREF
|
||||||
|
PREINC = 100, // PREINC
|
||||||
|
PREDEC = 101, // PREDEC
|
||||||
|
POSTINC = 102, // POSTINC
|
||||||
|
POSTDEC = 103 // POSTDEC
|
||||||
};
|
};
|
||||||
/// Backward compatibility alias (Bison 3.6).
|
/// Backward compatibility alias (Bison 3.6).
|
||||||
typedef token_kind_type yytokentype;
|
typedef token_kind_type yytokentype;
|
||||||
@ -766,7 +775,7 @@ namespace xsk { namespace gsc { namespace h2 {
|
|||||||
{
|
{
|
||||||
enum symbol_kind_type
|
enum symbol_kind_type
|
||||||
{
|
{
|
||||||
YYNTOKENS = 100, ///< Number of tokens.
|
YYNTOKENS = 104, ///< Number of tokens.
|
||||||
S_YYEMPTY = -2,
|
S_YYEMPTY = -2,
|
||||||
S_YYEOF = 0, // "end of file"
|
S_YYEOF = 0, // "end of file"
|
||||||
S_YYerror = 1, // error
|
S_YYerror = 1, // error
|
||||||
@ -857,94 +866,97 @@ namespace xsk { namespace gsc { namespace h2 {
|
|||||||
S_NAME = 86, // "identifier"
|
S_NAME = 86, // "identifier"
|
||||||
S_STRING = 87, // "string literal"
|
S_STRING = 87, // "string literal"
|
||||||
S_ISTRING = 88, // "localized string"
|
S_ISTRING = 88, // "localized string"
|
||||||
S_FLOAT = 89, // "float"
|
S_COLOR = 89, // "color"
|
||||||
S_INTEGER = 90, // "int"
|
S_FLOAT = 90, // "float"
|
||||||
S_ADD_ARRAY = 91, // ADD_ARRAY
|
S_INT_DEC = 91, // "int"
|
||||||
S_THEN = 92, // THEN
|
S_INT_OCT = 92, // "octal int"
|
||||||
S_TERN = 93, // TERN
|
S_INT_BIN = 93, // "binary int"
|
||||||
S_NEG = 94, // NEG
|
S_INT_HEX = 94, // "hexadecimal int"
|
||||||
S_ANIMREF = 95, // ANIMREF
|
S_ADD_ARRAY = 95, // ADD_ARRAY
|
||||||
S_PREINC = 96, // PREINC
|
S_THEN = 96, // THEN
|
||||||
S_PREDEC = 97, // PREDEC
|
S_TERN = 97, // TERN
|
||||||
S_POSTINC = 98, // POSTINC
|
S_NEG = 98, // NEG
|
||||||
S_POSTDEC = 99, // POSTDEC
|
S_ANIMREF = 99, // ANIMREF
|
||||||
S_YYACCEPT = 100, // $accept
|
S_PREINC = 100, // PREINC
|
||||||
S_root = 101, // root
|
S_PREDEC = 101, // PREDEC
|
||||||
S_program = 102, // program
|
S_POSTINC = 102, // POSTINC
|
||||||
S_include = 103, // include
|
S_POSTDEC = 103, // POSTDEC
|
||||||
S_define = 104, // define
|
S_YYACCEPT = 104, // $accept
|
||||||
S_usingtree = 105, // usingtree
|
S_root = 105, // root
|
||||||
S_constant = 106, // constant
|
S_program = 106, // program
|
||||||
S_thread = 107, // thread
|
S_include = 107, // include
|
||||||
S_parameters = 108, // parameters
|
S_define = 108, // define
|
||||||
S_stmt = 109, // stmt
|
S_usingtree = 109, // usingtree
|
||||||
S_stmt_block = 110, // stmt_block
|
S_constant = 110, // constant
|
||||||
S_stmt_list = 111, // stmt_list
|
S_thread = 111, // thread
|
||||||
S_stmt_call = 112, // stmt_call
|
S_parameters = 112, // parameters
|
||||||
S_stmt_assign = 113, // stmt_assign
|
S_stmt = 113, // stmt
|
||||||
S_stmt_endon = 114, // stmt_endon
|
S_stmt_block = 114, // stmt_block
|
||||||
S_stmt_notify = 115, // stmt_notify
|
S_stmt_list = 115, // stmt_list
|
||||||
S_stmt_wait = 116, // stmt_wait
|
S_stmt_call = 116, // stmt_call
|
||||||
S_stmt_waittill = 117, // stmt_waittill
|
S_stmt_assign = 117, // stmt_assign
|
||||||
S_stmt_waittillmatch = 118, // stmt_waittillmatch
|
S_stmt_endon = 118, // stmt_endon
|
||||||
S_stmt_waittillframeend = 119, // stmt_waittillframeend
|
S_stmt_notify = 119, // stmt_notify
|
||||||
S_stmt_waitframe = 120, // stmt_waitframe
|
S_stmt_wait = 120, // stmt_wait
|
||||||
S_stmt_if = 121, // stmt_if
|
S_stmt_waittill = 121, // stmt_waittill
|
||||||
S_stmt_ifelse = 122, // stmt_ifelse
|
S_stmt_waittillmatch = 122, // stmt_waittillmatch
|
||||||
S_stmt_while = 123, // stmt_while
|
S_stmt_waittillframeend = 123, // stmt_waittillframeend
|
||||||
S_stmt_for = 124, // stmt_for
|
S_stmt_waitframe = 124, // stmt_waitframe
|
||||||
S_stmt_foreach = 125, // stmt_foreach
|
S_stmt_if = 125, // stmt_if
|
||||||
S_stmt_switch = 126, // stmt_switch
|
S_stmt_ifelse = 126, // stmt_ifelse
|
||||||
S_stmt_case = 127, // stmt_case
|
S_stmt_while = 127, // stmt_while
|
||||||
S_stmt_default = 128, // stmt_default
|
S_stmt_for = 128, // stmt_for
|
||||||
S_stmt_break = 129, // stmt_break
|
S_stmt_foreach = 129, // stmt_foreach
|
||||||
S_stmt_continue = 130, // stmt_continue
|
S_stmt_switch = 130, // stmt_switch
|
||||||
S_stmt_return = 131, // stmt_return
|
S_stmt_case = 131, // stmt_case
|
||||||
S_stmt_breakpoint = 132, // stmt_breakpoint
|
S_stmt_default = 132, // stmt_default
|
||||||
S_stmt_prof_begin = 133, // stmt_prof_begin
|
S_stmt_break = 133, // stmt_break
|
||||||
S_stmt_prof_end = 134, // stmt_prof_end
|
S_stmt_continue = 134, // stmt_continue
|
||||||
S_for_stmt = 135, // for_stmt
|
S_stmt_return = 135, // stmt_return
|
||||||
S_for_expr = 136, // for_expr
|
S_stmt_breakpoint = 136, // stmt_breakpoint
|
||||||
S_expr = 137, // expr
|
S_stmt_prof_begin = 137, // stmt_prof_begin
|
||||||
S_expr_assign = 138, // expr_assign
|
S_stmt_prof_end = 138, // stmt_prof_end
|
||||||
S_expr_compare = 139, // expr_compare
|
S_for_stmt = 139, // for_stmt
|
||||||
S_expr_ternary = 140, // expr_ternary
|
S_for_expr = 140, // for_expr
|
||||||
S_expr_binary = 141, // expr_binary
|
S_expr = 141, // expr
|
||||||
S_expr_primitive = 142, // expr_primitive
|
S_expr_assign = 142, // expr_assign
|
||||||
S_expr_call = 143, // expr_call
|
S_expr_compare = 143, // expr_compare
|
||||||
S_expr_call_thread = 144, // expr_call_thread
|
S_expr_ternary = 144, // expr_ternary
|
||||||
S_expr_call_childthread = 145, // expr_call_childthread
|
S_expr_binary = 145, // expr_binary
|
||||||
S_expr_call_function = 146, // expr_call_function
|
S_expr_primitive = 146, // expr_primitive
|
||||||
S_expr_call_pointer = 147, // expr_call_pointer
|
S_expr_call = 147, // expr_call
|
||||||
S_expr_arguments = 148, // expr_arguments
|
S_expr_call_thread = 148, // expr_call_thread
|
||||||
S_expr_arguments_filled = 149, // expr_arguments_filled
|
S_expr_call_childthread = 149, // expr_call_childthread
|
||||||
S_expr_arguments_empty = 150, // expr_arguments_empty
|
S_expr_call_function = 150, // expr_call_function
|
||||||
S_expr_function = 151, // expr_function
|
S_expr_call_pointer = 151, // expr_call_pointer
|
||||||
S_expr_add_array = 152, // expr_add_array
|
S_expr_arguments = 152, // expr_arguments
|
||||||
S_expr_array = 153, // expr_array
|
S_expr_arguments_filled = 153, // expr_arguments_filled
|
||||||
S_expr_field = 154, // expr_field
|
S_expr_arguments_empty = 154, // expr_arguments_empty
|
||||||
S_expr_size = 155, // expr_size
|
S_expr_function = 155, // expr_function
|
||||||
S_object = 156, // object
|
S_expr_add_array = 156, // expr_add_array
|
||||||
S_thisthread = 157, // thisthread
|
S_expr_array = 157, // expr_array
|
||||||
S_empty_array = 158, // empty_array
|
S_expr_field = 158, // expr_field
|
||||||
S_undefined = 159, // undefined
|
S_expr_size = 159, // expr_size
|
||||||
S_game = 160, // game
|
S_object = 160, // object
|
||||||
S_self = 161, // self
|
S_float = 161, // float
|
||||||
S_anim = 162, // anim
|
S_integer = 162, // integer
|
||||||
S_level = 163, // level
|
S_thisthread = 163, // thisthread
|
||||||
S_animation = 164, // animation
|
S_empty_array = 164, // empty_array
|
||||||
S_animtree = 165, // animtree
|
S_undefined = 165, // undefined
|
||||||
S_name = 166, // name
|
S_game = 166, // game
|
||||||
S_file = 167, // file
|
S_self = 167, // self
|
||||||
S_istring = 168, // istring
|
S_anim = 168, // anim
|
||||||
S_string = 169, // string
|
S_level = 169, // level
|
||||||
S_vector = 170, // vector
|
S_animation = 170, // animation
|
||||||
S_neg_float = 171, // neg_float
|
S_animtree = 171, // animtree
|
||||||
S_neg_integer = 172, // neg_integer
|
S_name = 172, // name
|
||||||
S_float = 173, // float
|
S_file = 173, // file
|
||||||
S_integer = 174, // integer
|
S_istring = 174, // istring
|
||||||
S_false = 175, // false
|
S_string = 175, // string
|
||||||
S_true = 176 // true
|
S_color = 176, // color
|
||||||
|
S_vector = 177, // vector
|
||||||
|
S_false = 178, // false
|
||||||
|
S_true = 179 // true
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -993,6 +1005,10 @@ namespace xsk { namespace gsc { namespace h2 {
|
|||||||
value.move< animtree_ptr > (std::move (that.value));
|
value.move< animtree_ptr > (std::move (that.value));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case symbol_kind::S_color: // color
|
||||||
|
value.move< color_ptr > (std::move (that.value));
|
||||||
|
break;
|
||||||
|
|
||||||
case symbol_kind::S_constant: // constant
|
case symbol_kind::S_constant: // constant
|
||||||
value.move< constant_ptr > (std::move (that.value));
|
value.move< constant_ptr > (std::move (that.value));
|
||||||
break;
|
break;
|
||||||
@ -1043,7 +1059,6 @@ namespace xsk { namespace gsc { namespace h2 {
|
|||||||
value.move< file_ptr > (std::move (that.value));
|
value.move< file_ptr > (std::move (that.value));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case symbol_kind::S_neg_float: // neg_float
|
|
||||||
case symbol_kind::S_float: // float
|
case symbol_kind::S_float: // float
|
||||||
value.move< float_ptr > (std::move (that.value));
|
value.move< float_ptr > (std::move (that.value));
|
||||||
break;
|
break;
|
||||||
@ -1056,7 +1071,6 @@ namespace xsk { namespace gsc { namespace h2 {
|
|||||||
value.move< include_ptr > (std::move (that.value));
|
value.move< include_ptr > (std::move (that.value));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case symbol_kind::S_neg_integer: // neg_integer
|
|
||||||
case symbol_kind::S_integer: // integer
|
case symbol_kind::S_integer: // integer
|
||||||
value.move< integer_ptr > (std::move (that.value));
|
value.move< integer_ptr > (std::move (that.value));
|
||||||
break;
|
break;
|
||||||
@ -1098,8 +1112,12 @@ namespace xsk { namespace gsc { namespace h2 {
|
|||||||
case symbol_kind::S_NAME: // "identifier"
|
case symbol_kind::S_NAME: // "identifier"
|
||||||
case symbol_kind::S_STRING: // "string literal"
|
case symbol_kind::S_STRING: // "string literal"
|
||||||
case symbol_kind::S_ISTRING: // "localized string"
|
case symbol_kind::S_ISTRING: // "localized string"
|
||||||
|
case symbol_kind::S_COLOR: // "color"
|
||||||
case symbol_kind::S_FLOAT: // "float"
|
case symbol_kind::S_FLOAT: // "float"
|
||||||
case symbol_kind::S_INTEGER: // "int"
|
case symbol_kind::S_INT_DEC: // "int"
|
||||||
|
case symbol_kind::S_INT_OCT: // "octal int"
|
||||||
|
case symbol_kind::S_INT_BIN: // "binary int"
|
||||||
|
case symbol_kind::S_INT_HEX: // "hexadecimal int"
|
||||||
value.move< std::string > (std::move (that.value));
|
value.move< std::string > (std::move (that.value));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -1298,6 +1316,20 @@ namespace xsk { namespace gsc { namespace h2 {
|
|||||||
{}
|
{}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if 201103L <= YY_CPLUSPLUS
|
||||||
|
basic_symbol (typename Base::kind_type t, color_ptr&& v, location_type&& l)
|
||||||
|
: Base (t)
|
||||||
|
, value (std::move (v))
|
||||||
|
, location (std::move (l))
|
||||||
|
{}
|
||||||
|
#else
|
||||||
|
basic_symbol (typename Base::kind_type t, const color_ptr& v, const location_type& l)
|
||||||
|
: Base (t)
|
||||||
|
, value (v)
|
||||||
|
, location (l)
|
||||||
|
{}
|
||||||
|
#endif
|
||||||
|
|
||||||
#if 201103L <= YY_CPLUSPLUS
|
#if 201103L <= YY_CPLUSPLUS
|
||||||
basic_symbol (typename Base::kind_type t, constant_ptr&& v, location_type&& l)
|
basic_symbol (typename Base::kind_type t, constant_ptr&& v, location_type&& l)
|
||||||
: Base (t)
|
: Base (t)
|
||||||
@ -2088,6 +2120,10 @@ switch (yykind)
|
|||||||
value.template destroy< animtree_ptr > ();
|
value.template destroy< animtree_ptr > ();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case symbol_kind::S_color: // color
|
||||||
|
value.template destroy< color_ptr > ();
|
||||||
|
break;
|
||||||
|
|
||||||
case symbol_kind::S_constant: // constant
|
case symbol_kind::S_constant: // constant
|
||||||
value.template destroy< constant_ptr > ();
|
value.template destroy< constant_ptr > ();
|
||||||
break;
|
break;
|
||||||
@ -2138,7 +2174,6 @@ switch (yykind)
|
|||||||
value.template destroy< file_ptr > ();
|
value.template destroy< file_ptr > ();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case symbol_kind::S_neg_float: // neg_float
|
|
||||||
case symbol_kind::S_float: // float
|
case symbol_kind::S_float: // float
|
||||||
value.template destroy< float_ptr > ();
|
value.template destroy< float_ptr > ();
|
||||||
break;
|
break;
|
||||||
@ -2151,7 +2186,6 @@ switch (yykind)
|
|||||||
value.template destroy< include_ptr > ();
|
value.template destroy< include_ptr > ();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case symbol_kind::S_neg_integer: // neg_integer
|
|
||||||
case symbol_kind::S_integer: // integer
|
case symbol_kind::S_integer: // integer
|
||||||
value.template destroy< integer_ptr > ();
|
value.template destroy< integer_ptr > ();
|
||||||
break;
|
break;
|
||||||
@ -2193,8 +2227,12 @@ switch (yykind)
|
|||||||
case symbol_kind::S_NAME: // "identifier"
|
case symbol_kind::S_NAME: // "identifier"
|
||||||
case symbol_kind::S_STRING: // "string literal"
|
case symbol_kind::S_STRING: // "string literal"
|
||||||
case symbol_kind::S_ISTRING: // "localized string"
|
case symbol_kind::S_ISTRING: // "localized string"
|
||||||
|
case symbol_kind::S_COLOR: // "color"
|
||||||
case symbol_kind::S_FLOAT: // "float"
|
case symbol_kind::S_FLOAT: // "float"
|
||||||
case symbol_kind::S_INTEGER: // "int"
|
case symbol_kind::S_INT_DEC: // "int"
|
||||||
|
case symbol_kind::S_INT_OCT: // "octal int"
|
||||||
|
case symbol_kind::S_INT_BIN: // "binary int"
|
||||||
|
case symbol_kind::S_INT_HEX: // "hexadecimal int"
|
||||||
value.template destroy< std::string > ();
|
value.template destroy< std::string > ();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -2434,7 +2472,7 @@ switch (yykind)
|
|||||||
: super_type(token_type (tok), v, l)
|
: super_type(token_type (tok), v, l)
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
H2_ASSERT ((token::FILE <= tok && tok <= token::INTEGER));
|
H2_ASSERT ((token::FILE <= tok && tok <= token::INT_HEX));
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -3819,6 +3857,21 @@ switch (yykind)
|
|||||||
return symbol_type (token::ISTRING, v, l);
|
return symbol_type (token::ISTRING, v, l);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
#if 201103L <= YY_CPLUSPLUS
|
||||||
|
static
|
||||||
|
symbol_type
|
||||||
|
make_COLOR (std::string v, location_type l)
|
||||||
|
{
|
||||||
|
return symbol_type (token::COLOR, std::move (v), std::move (l));
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
static
|
||||||
|
symbol_type
|
||||||
|
make_COLOR (const std::string& v, const location_type& l)
|
||||||
|
{
|
||||||
|
return symbol_type (token::COLOR, v, l);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
#if 201103L <= YY_CPLUSPLUS
|
#if 201103L <= YY_CPLUSPLUS
|
||||||
static
|
static
|
||||||
symbol_type
|
symbol_type
|
||||||
@ -3837,16 +3890,61 @@ switch (yykind)
|
|||||||
#if 201103L <= YY_CPLUSPLUS
|
#if 201103L <= YY_CPLUSPLUS
|
||||||
static
|
static
|
||||||
symbol_type
|
symbol_type
|
||||||
make_INTEGER (std::string v, location_type l)
|
make_INT_DEC (std::string v, location_type l)
|
||||||
{
|
{
|
||||||
return symbol_type (token::INTEGER, std::move (v), std::move (l));
|
return symbol_type (token::INT_DEC, std::move (v), std::move (l));
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
static
|
static
|
||||||
symbol_type
|
symbol_type
|
||||||
make_INTEGER (const std::string& v, const location_type& l)
|
make_INT_DEC (const std::string& v, const location_type& l)
|
||||||
{
|
{
|
||||||
return symbol_type (token::INTEGER, v, l);
|
return symbol_type (token::INT_DEC, v, l);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#if 201103L <= YY_CPLUSPLUS
|
||||||
|
static
|
||||||
|
symbol_type
|
||||||
|
make_INT_OCT (std::string v, location_type l)
|
||||||
|
{
|
||||||
|
return symbol_type (token::INT_OCT, std::move (v), std::move (l));
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
static
|
||||||
|
symbol_type
|
||||||
|
make_INT_OCT (const std::string& v, const location_type& l)
|
||||||
|
{
|
||||||
|
return symbol_type (token::INT_OCT, v, l);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#if 201103L <= YY_CPLUSPLUS
|
||||||
|
static
|
||||||
|
symbol_type
|
||||||
|
make_INT_BIN (std::string v, location_type l)
|
||||||
|
{
|
||||||
|
return symbol_type (token::INT_BIN, std::move (v), std::move (l));
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
static
|
||||||
|
symbol_type
|
||||||
|
make_INT_BIN (const std::string& v, const location_type& l)
|
||||||
|
{
|
||||||
|
return symbol_type (token::INT_BIN, v, l);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#if 201103L <= YY_CPLUSPLUS
|
||||||
|
static
|
||||||
|
symbol_type
|
||||||
|
make_INT_HEX (std::string v, location_type l)
|
||||||
|
{
|
||||||
|
return symbol_type (token::INT_HEX, std::move (v), std::move (l));
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
static
|
||||||
|
symbol_type
|
||||||
|
make_INT_HEX (const std::string& v, const location_type& l)
|
||||||
|
{
|
||||||
|
return symbol_type (token::INT_HEX, v, l);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#if 201103L <= YY_CPLUSPLUS
|
#if 201103L <= YY_CPLUSPLUS
|
||||||
@ -4328,8 +4426,8 @@ switch (yykind)
|
|||||||
/// Constants.
|
/// Constants.
|
||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
yylast_ = 1842, ///< Last index in yytable_.
|
yylast_ = 1883, ///< Last index in yytable_.
|
||||||
yynnts_ = 77, ///< Number of nonterminal symbols.
|
yynnts_ = 76, ///< Number of nonterminal symbols.
|
||||||
yyfinal_ = 15 ///< Termination state number.
|
yyfinal_ = 15 ///< Termination state number.
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -4369,6 +4467,10 @@ switch (yykind)
|
|||||||
value.copy< animtree_ptr > (YY_MOVE (that.value));
|
value.copy< animtree_ptr > (YY_MOVE (that.value));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case symbol_kind::S_color: // color
|
||||||
|
value.copy< color_ptr > (YY_MOVE (that.value));
|
||||||
|
break;
|
||||||
|
|
||||||
case symbol_kind::S_constant: // constant
|
case symbol_kind::S_constant: // constant
|
||||||
value.copy< constant_ptr > (YY_MOVE (that.value));
|
value.copy< constant_ptr > (YY_MOVE (that.value));
|
||||||
break;
|
break;
|
||||||
@ -4419,7 +4521,6 @@ switch (yykind)
|
|||||||
value.copy< file_ptr > (YY_MOVE (that.value));
|
value.copy< file_ptr > (YY_MOVE (that.value));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case symbol_kind::S_neg_float: // neg_float
|
|
||||||
case symbol_kind::S_float: // float
|
case symbol_kind::S_float: // float
|
||||||
value.copy< float_ptr > (YY_MOVE (that.value));
|
value.copy< float_ptr > (YY_MOVE (that.value));
|
||||||
break;
|
break;
|
||||||
@ -4432,7 +4533,6 @@ switch (yykind)
|
|||||||
value.copy< include_ptr > (YY_MOVE (that.value));
|
value.copy< include_ptr > (YY_MOVE (that.value));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case symbol_kind::S_neg_integer: // neg_integer
|
|
||||||
case symbol_kind::S_integer: // integer
|
case symbol_kind::S_integer: // integer
|
||||||
value.copy< integer_ptr > (YY_MOVE (that.value));
|
value.copy< integer_ptr > (YY_MOVE (that.value));
|
||||||
break;
|
break;
|
||||||
@ -4474,8 +4574,12 @@ switch (yykind)
|
|||||||
case symbol_kind::S_NAME: // "identifier"
|
case symbol_kind::S_NAME: // "identifier"
|
||||||
case symbol_kind::S_STRING: // "string literal"
|
case symbol_kind::S_STRING: // "string literal"
|
||||||
case symbol_kind::S_ISTRING: // "localized string"
|
case symbol_kind::S_ISTRING: // "localized string"
|
||||||
|
case symbol_kind::S_COLOR: // "color"
|
||||||
case symbol_kind::S_FLOAT: // "float"
|
case symbol_kind::S_FLOAT: // "float"
|
||||||
case symbol_kind::S_INTEGER: // "int"
|
case symbol_kind::S_INT_DEC: // "int"
|
||||||
|
case symbol_kind::S_INT_OCT: // "octal int"
|
||||||
|
case symbol_kind::S_INT_BIN: // "binary int"
|
||||||
|
case symbol_kind::S_INT_HEX: // "hexadecimal int"
|
||||||
value.copy< std::string > (YY_MOVE (that.value));
|
value.copy< std::string > (YY_MOVE (that.value));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -4650,6 +4754,10 @@ switch (yykind)
|
|||||||
value.move< animtree_ptr > (YY_MOVE (s.value));
|
value.move< animtree_ptr > (YY_MOVE (s.value));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case symbol_kind::S_color: // color
|
||||||
|
value.move< color_ptr > (YY_MOVE (s.value));
|
||||||
|
break;
|
||||||
|
|
||||||
case symbol_kind::S_constant: // constant
|
case symbol_kind::S_constant: // constant
|
||||||
value.move< constant_ptr > (YY_MOVE (s.value));
|
value.move< constant_ptr > (YY_MOVE (s.value));
|
||||||
break;
|
break;
|
||||||
@ -4700,7 +4808,6 @@ switch (yykind)
|
|||||||
value.move< file_ptr > (YY_MOVE (s.value));
|
value.move< file_ptr > (YY_MOVE (s.value));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case symbol_kind::S_neg_float: // neg_float
|
|
||||||
case symbol_kind::S_float: // float
|
case symbol_kind::S_float: // float
|
||||||
value.move< float_ptr > (YY_MOVE (s.value));
|
value.move< float_ptr > (YY_MOVE (s.value));
|
||||||
break;
|
break;
|
||||||
@ -4713,7 +4820,6 @@ switch (yykind)
|
|||||||
value.move< include_ptr > (YY_MOVE (s.value));
|
value.move< include_ptr > (YY_MOVE (s.value));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case symbol_kind::S_neg_integer: // neg_integer
|
|
||||||
case symbol_kind::S_integer: // integer
|
case symbol_kind::S_integer: // integer
|
||||||
value.move< integer_ptr > (YY_MOVE (s.value));
|
value.move< integer_ptr > (YY_MOVE (s.value));
|
||||||
break;
|
break;
|
||||||
@ -4755,8 +4861,12 @@ switch (yykind)
|
|||||||
case symbol_kind::S_NAME: // "identifier"
|
case symbol_kind::S_NAME: // "identifier"
|
||||||
case symbol_kind::S_STRING: // "string literal"
|
case symbol_kind::S_STRING: // "string literal"
|
||||||
case symbol_kind::S_ISTRING: // "localized string"
|
case symbol_kind::S_ISTRING: // "localized string"
|
||||||
|
case symbol_kind::S_COLOR: // "color"
|
||||||
case symbol_kind::S_FLOAT: // "float"
|
case symbol_kind::S_FLOAT: // "float"
|
||||||
case symbol_kind::S_INTEGER: // "int"
|
case symbol_kind::S_INT_DEC: // "int"
|
||||||
|
case symbol_kind::S_INT_OCT: // "octal int"
|
||||||
|
case symbol_kind::S_INT_BIN: // "binary int"
|
||||||
|
case symbol_kind::S_INT_HEX: // "hexadecimal int"
|
||||||
value.move< std::string > (YY_MOVE (s.value));
|
value.move< std::string > (YY_MOVE (s.value));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -4953,7 +5063,7 @@ switch (yykind)
|
|||||||
|
|
||||||
#line 13 "parser.ypp"
|
#line 13 "parser.ypp"
|
||||||
} } } // xsk::gsc::h2
|
} } } // xsk::gsc::h2
|
||||||
#line 4957 "parser.hpp"
|
#line 5067 "parser.hpp"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -785,6 +785,7 @@ void compiler::emit_expr(const gsc::context_ptr& ctx, const gsc::expr_ptr& expr)
|
|||||||
case gsc::node_t::data_name: emit_local_variable(ctx, expr.as_name); break;
|
case gsc::node_t::data_name: emit_local_variable(ctx, expr.as_name); break;
|
||||||
case gsc::node_t::data_istring: emit_istring(ctx, expr.as_istring); break;
|
case gsc::node_t::data_istring: emit_istring(ctx, expr.as_istring); break;
|
||||||
case gsc::node_t::data_string: emit_string(ctx, expr.as_string); break;
|
case gsc::node_t::data_string: emit_string(ctx, expr.as_string); break;
|
||||||
|
case gsc::node_t::data_color: emit_color(ctx, expr.as_color); break;
|
||||||
case gsc::node_t::data_vector: emit_vector(ctx, expr.as_vector); break;
|
case gsc::node_t::data_vector: emit_vector(ctx, expr.as_vector); break;
|
||||||
case gsc::node_t::data_float: emit_float(ctx, expr.as_float); break;
|
case gsc::node_t::data_float: emit_float(ctx, expr.as_float); break;
|
||||||
case gsc::node_t::data_integer: emit_integer(ctx, expr.as_integer); break;
|
case gsc::node_t::data_integer: emit_integer(ctx, expr.as_integer); break;
|
||||||
@ -1606,6 +1607,30 @@ void compiler::emit_string(const gsc::context_ptr& ctx, const gsc::string_ptr& s
|
|||||||
emit_opcode(ctx, opcode::OP_GetString, str->value);
|
emit_opcode(ctx, opcode::OP_GetString, str->value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void compiler::emit_color(const gsc::context_ptr& ctx, const gsc::color_ptr& color)
|
||||||
|
{
|
||||||
|
std::vector<std::string> data;
|
||||||
|
std::string x, y, z;
|
||||||
|
|
||||||
|
if(color->value.size() == 3)
|
||||||
|
{
|
||||||
|
x = "0x" + color->value.substr(0, 1) + color->value.substr(0, 1);
|
||||||
|
y = "0x" + color->value.substr(1, 1) + color->value.substr(1, 1);
|
||||||
|
z = "0x" + color->value.substr(2, 1) + color->value.substr(2, 1);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
x = "0x" + color->value.substr(0, 2);
|
||||||
|
y = "0x" + color->value.substr(2, 2);
|
||||||
|
z = "0x" + color->value.substr(4, 2);
|
||||||
|
}
|
||||||
|
|
||||||
|
data.push_back(gsc::utils::string::hex_to_dec(x.data()));
|
||||||
|
data.push_back(gsc::utils::string::hex_to_dec(y.data()));
|
||||||
|
data.push_back(gsc::utils::string::hex_to_dec(z.data()));
|
||||||
|
emit_opcode(ctx, opcode::OP_GetVector, data);
|
||||||
|
}
|
||||||
|
|
||||||
void compiler::emit_vector(const gsc::context_ptr& ctx, const gsc::vector_ptr& vec)
|
void compiler::emit_vector(const gsc::context_ptr& ctx, const gsc::vector_ptr& vec)
|
||||||
{
|
{
|
||||||
std::vector<std::string> data;
|
std::vector<std::string> data;
|
||||||
|
@ -101,6 +101,7 @@ private:
|
|||||||
void emit_animation(const gsc::context_ptr& ctx, const gsc::animation_ptr& animation);
|
void emit_animation(const gsc::context_ptr& ctx, const gsc::animation_ptr& animation);
|
||||||
void emit_istring(const gsc::context_ptr& ctx, const gsc::istring_ptr& str);
|
void emit_istring(const gsc::context_ptr& ctx, const gsc::istring_ptr& str);
|
||||||
void emit_string(const gsc::context_ptr& ctx, const gsc::string_ptr& str);
|
void emit_string(const gsc::context_ptr& ctx, const gsc::string_ptr& str);
|
||||||
|
void emit_color(const gsc::context_ptr& ctx, const gsc::color_ptr& color);
|
||||||
void emit_vector(const gsc::context_ptr& ctx, const gsc::vector_ptr& vec);
|
void emit_vector(const gsc::context_ptr& ctx, const gsc::vector_ptr& vec);
|
||||||
void emit_float(const gsc::context_ptr& ctx, const gsc::float_ptr& num);
|
void emit_float(const gsc::context_ptr& ctx, const gsc::float_ptr& num);
|
||||||
void emit_integer(const gsc::context_ptr& ctx, const gsc::integer_ptr& num);
|
void emit_integer(const gsc::context_ptr& ctx, const gsc::integer_ptr& num);
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -700,7 +700,7 @@ extern int yylex (yyscan_t yyscanner);
|
|||||||
#undef yyTABLES_NAME
|
#undef yyTABLES_NAME
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#line 149 "lexer.lpp"
|
#line 157 "lexer.lpp"
|
||||||
|
|
||||||
|
|
||||||
#line 706 "lexer.hpp"
|
#line 706 "lexer.hpp"
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -417,31 +417,34 @@ namespace xsk { namespace gsc { namespace iw5 {
|
|||||||
// animtree
|
// animtree
|
||||||
char dummy3[sizeof (animtree_ptr)];
|
char dummy3[sizeof (animtree_ptr)];
|
||||||
|
|
||||||
|
// color
|
||||||
|
char dummy4[sizeof (color_ptr)];
|
||||||
|
|
||||||
// constant
|
// constant
|
||||||
char dummy4[sizeof (constant_ptr)];
|
char dummy5[sizeof (constant_ptr)];
|
||||||
|
|
||||||
// define
|
// define
|
||||||
char dummy5[sizeof (define_ptr)];
|
char dummy6[sizeof (define_ptr)];
|
||||||
|
|
||||||
// empty_array
|
// empty_array
|
||||||
char dummy6[sizeof (empty_array_ptr)];
|
char dummy7[sizeof (empty_array_ptr)];
|
||||||
|
|
||||||
// expr_arguments
|
// expr_arguments
|
||||||
// expr_arguments_filled
|
// expr_arguments_filled
|
||||||
// expr_arguments_empty
|
// expr_arguments_empty
|
||||||
char dummy7[sizeof (expr_arguments_ptr)];
|
char dummy8[sizeof (expr_arguments_ptr)];
|
||||||
|
|
||||||
// expr_assign
|
// expr_assign
|
||||||
char dummy8[sizeof (expr_assign_ptr)];
|
char dummy9[sizeof (expr_assign_ptr)];
|
||||||
|
|
||||||
// expr_call
|
// expr_call
|
||||||
// expr_call_thread
|
// expr_call_thread
|
||||||
// expr_call_childthread
|
// expr_call_childthread
|
||||||
char dummy9[sizeof (expr_call_ptr)];
|
char dummy10[sizeof (expr_call_ptr)];
|
||||||
|
|
||||||
// expr_call_function
|
// expr_call_function
|
||||||
// expr_call_pointer
|
// expr_call_pointer
|
||||||
char dummy10[sizeof (expr_call_type_ptr)];
|
char dummy11[sizeof (expr_call_type_ptr)];
|
||||||
|
|
||||||
// for_expr
|
// for_expr
|
||||||
// expr
|
// expr
|
||||||
@ -449,36 +452,34 @@ namespace xsk { namespace gsc { namespace iw5 {
|
|||||||
// expr_ternary
|
// expr_ternary
|
||||||
// expr_binary
|
// expr_binary
|
||||||
// expr_primitive
|
// expr_primitive
|
||||||
char dummy11[sizeof (expr_ptr)];
|
char dummy12[sizeof (expr_ptr)];
|
||||||
|
|
||||||
// false
|
// false
|
||||||
char dummy12[sizeof (false_ptr)];
|
char dummy13[sizeof (false_ptr)];
|
||||||
|
|
||||||
// file
|
// file
|
||||||
char dummy13[sizeof (file_ptr)];
|
char dummy14[sizeof (file_ptr)];
|
||||||
|
|
||||||
// neg_float
|
|
||||||
// float
|
// float
|
||||||
char dummy14[sizeof (float_ptr)];
|
char dummy15[sizeof (float_ptr)];
|
||||||
|
|
||||||
// game
|
// game
|
||||||
char dummy15[sizeof (game_ptr)];
|
char dummy16[sizeof (game_ptr)];
|
||||||
|
|
||||||
// include
|
// include
|
||||||
char dummy16[sizeof (include_ptr)];
|
char dummy17[sizeof (include_ptr)];
|
||||||
|
|
||||||
// neg_integer
|
|
||||||
// integer
|
// integer
|
||||||
char dummy17[sizeof (integer_ptr)];
|
char dummy18[sizeof (integer_ptr)];
|
||||||
|
|
||||||
// istring
|
// istring
|
||||||
char dummy18[sizeof (istring_ptr)];
|
char dummy19[sizeof (istring_ptr)];
|
||||||
|
|
||||||
// level
|
// level
|
||||||
char dummy19[sizeof (level_ptr)];
|
char dummy20[sizeof (level_ptr)];
|
||||||
|
|
||||||
// name
|
// name
|
||||||
char dummy20[sizeof (name_ptr)];
|
char dummy21[sizeof (name_ptr)];
|
||||||
|
|
||||||
// expr_function
|
// expr_function
|
||||||
// expr_add_array
|
// expr_add_array
|
||||||
@ -486,119 +487,123 @@ namespace xsk { namespace gsc { namespace iw5 {
|
|||||||
// expr_field
|
// expr_field
|
||||||
// expr_size
|
// expr_size
|
||||||
// object
|
// object
|
||||||
char dummy21[sizeof (node_ptr)];
|
char dummy22[sizeof (node_ptr)];
|
||||||
|
|
||||||
// parameters
|
// parameters
|
||||||
char dummy22[sizeof (parameters_ptr)];
|
char dummy23[sizeof (parameters_ptr)];
|
||||||
|
|
||||||
// program
|
// program
|
||||||
char dummy23[sizeof (program_ptr)];
|
char dummy24[sizeof (program_ptr)];
|
||||||
|
|
||||||
// self
|
// self
|
||||||
char dummy24[sizeof (self_ptr)];
|
char dummy25[sizeof (self_ptr)];
|
||||||
|
|
||||||
// "file path"
|
// "file path"
|
||||||
// "identifier"
|
// "identifier"
|
||||||
// "string literal"
|
// "string literal"
|
||||||
// "localized string"
|
// "localized string"
|
||||||
|
// "color"
|
||||||
// "float"
|
// "float"
|
||||||
// "int"
|
// "int"
|
||||||
char dummy25[sizeof (std::string)];
|
// "octal int"
|
||||||
|
// "binary int"
|
||||||
|
// "hexadecimal int"
|
||||||
|
char dummy26[sizeof (std::string)];
|
||||||
|
|
||||||
// stmt_assign
|
// stmt_assign
|
||||||
char dummy26[sizeof (stmt_assign_ptr)];
|
char dummy27[sizeof (stmt_assign_ptr)];
|
||||||
|
|
||||||
// stmt_break
|
// stmt_break
|
||||||
char dummy27[sizeof (stmt_break_ptr)];
|
char dummy28[sizeof (stmt_break_ptr)];
|
||||||
|
|
||||||
// stmt_breakpoint
|
// stmt_breakpoint
|
||||||
char dummy28[sizeof (stmt_breakpoint_ptr)];
|
char dummy29[sizeof (stmt_breakpoint_ptr)];
|
||||||
|
|
||||||
// stmt_call
|
// stmt_call
|
||||||
char dummy29[sizeof (stmt_call_ptr)];
|
char dummy30[sizeof (stmt_call_ptr)];
|
||||||
|
|
||||||
// stmt_case
|
// stmt_case
|
||||||
char dummy30[sizeof (stmt_case_ptr)];
|
char dummy31[sizeof (stmt_case_ptr)];
|
||||||
|
|
||||||
// stmt_continue
|
// stmt_continue
|
||||||
char dummy31[sizeof (stmt_continue_ptr)];
|
char dummy32[sizeof (stmt_continue_ptr)];
|
||||||
|
|
||||||
// stmt_default
|
// stmt_default
|
||||||
char dummy32[sizeof (stmt_default_ptr)];
|
char dummy33[sizeof (stmt_default_ptr)];
|
||||||
|
|
||||||
// stmt_endon
|
// stmt_endon
|
||||||
char dummy33[sizeof (stmt_endon_ptr)];
|
char dummy34[sizeof (stmt_endon_ptr)];
|
||||||
|
|
||||||
// stmt_for
|
// stmt_for
|
||||||
char dummy34[sizeof (stmt_for_ptr)];
|
char dummy35[sizeof (stmt_for_ptr)];
|
||||||
|
|
||||||
// stmt_foreach
|
// stmt_foreach
|
||||||
char dummy35[sizeof (stmt_foreach_ptr)];
|
char dummy36[sizeof (stmt_foreach_ptr)];
|
||||||
|
|
||||||
// stmt_if
|
// stmt_if
|
||||||
char dummy36[sizeof (stmt_if_ptr)];
|
char dummy37[sizeof (stmt_if_ptr)];
|
||||||
|
|
||||||
// stmt_ifelse
|
// stmt_ifelse
|
||||||
char dummy37[sizeof (stmt_ifelse_ptr)];
|
char dummy38[sizeof (stmt_ifelse_ptr)];
|
||||||
|
|
||||||
// stmt_block
|
// stmt_block
|
||||||
// stmt_list
|
// stmt_list
|
||||||
char dummy38[sizeof (stmt_list_ptr)];
|
char dummy39[sizeof (stmt_list_ptr)];
|
||||||
|
|
||||||
// stmt_notify
|
// stmt_notify
|
||||||
char dummy39[sizeof (stmt_notify_ptr)];
|
char dummy40[sizeof (stmt_notify_ptr)];
|
||||||
|
|
||||||
// stmt_prof_begin
|
// stmt_prof_begin
|
||||||
char dummy40[sizeof (stmt_prof_begin_ptr)];
|
char dummy41[sizeof (stmt_prof_begin_ptr)];
|
||||||
|
|
||||||
// stmt_prof_end
|
// stmt_prof_end
|
||||||
char dummy41[sizeof (stmt_prof_end_ptr)];
|
char dummy42[sizeof (stmt_prof_end_ptr)];
|
||||||
|
|
||||||
// stmt
|
// stmt
|
||||||
// for_stmt
|
// for_stmt
|
||||||
char dummy42[sizeof (stmt_ptr)];
|
char dummy43[sizeof (stmt_ptr)];
|
||||||
|
|
||||||
// stmt_return
|
// stmt_return
|
||||||
char dummy43[sizeof (stmt_return_ptr)];
|
char dummy44[sizeof (stmt_return_ptr)];
|
||||||
|
|
||||||
// stmt_switch
|
// stmt_switch
|
||||||
char dummy44[sizeof (stmt_switch_ptr)];
|
char dummy45[sizeof (stmt_switch_ptr)];
|
||||||
|
|
||||||
// stmt_wait
|
// stmt_wait
|
||||||
char dummy45[sizeof (stmt_wait_ptr)];
|
char dummy46[sizeof (stmt_wait_ptr)];
|
||||||
|
|
||||||
// stmt_waittill
|
// stmt_waittill
|
||||||
char dummy46[sizeof (stmt_waittill_ptr)];
|
char dummy47[sizeof (stmt_waittill_ptr)];
|
||||||
|
|
||||||
// stmt_waittillframeend
|
// stmt_waittillframeend
|
||||||
char dummy47[sizeof (stmt_waittillframeend_ptr)];
|
char dummy48[sizeof (stmt_waittillframeend_ptr)];
|
||||||
|
|
||||||
// stmt_waittillmatch
|
// stmt_waittillmatch
|
||||||
char dummy48[sizeof (stmt_waittillmatch_ptr)];
|
char dummy49[sizeof (stmt_waittillmatch_ptr)];
|
||||||
|
|
||||||
// stmt_while
|
// stmt_while
|
||||||
char dummy49[sizeof (stmt_while_ptr)];
|
char dummy50[sizeof (stmt_while_ptr)];
|
||||||
|
|
||||||
// string
|
// string
|
||||||
char dummy50[sizeof (string_ptr)];
|
char dummy51[sizeof (string_ptr)];
|
||||||
|
|
||||||
// thisthread
|
// thisthread
|
||||||
char dummy51[sizeof (thisthread_ptr)];
|
char dummy52[sizeof (thisthread_ptr)];
|
||||||
|
|
||||||
// thread
|
// thread
|
||||||
char dummy52[sizeof (thread_ptr)];
|
char dummy53[sizeof (thread_ptr)];
|
||||||
|
|
||||||
// true
|
// true
|
||||||
char dummy53[sizeof (true_ptr)];
|
char dummy54[sizeof (true_ptr)];
|
||||||
|
|
||||||
// undefined
|
// undefined
|
||||||
char dummy54[sizeof (undefined_ptr)];
|
char dummy55[sizeof (undefined_ptr)];
|
||||||
|
|
||||||
// usingtree
|
// usingtree
|
||||||
char dummy55[sizeof (usingtree_ptr)];
|
char dummy56[sizeof (usingtree_ptr)];
|
||||||
|
|
||||||
// vector
|
// vector
|
||||||
char dummy56[sizeof (vector_ptr)];
|
char dummy57[sizeof (vector_ptr)];
|
||||||
};
|
};
|
||||||
|
|
||||||
/// The size of the largest semantic type.
|
/// The size of the largest semantic type.
|
||||||
@ -735,17 +740,21 @@ namespace xsk { namespace gsc { namespace iw5 {
|
|||||||
NAME = 85, // "identifier"
|
NAME = 85, // "identifier"
|
||||||
STRING = 86, // "string literal"
|
STRING = 86, // "string literal"
|
||||||
ISTRING = 87, // "localized string"
|
ISTRING = 87, // "localized string"
|
||||||
FLOAT = 88, // "float"
|
COLOR = 88, // "color"
|
||||||
INTEGER = 89, // "int"
|
FLOAT = 89, // "float"
|
||||||
ADD_ARRAY = 90, // ADD_ARRAY
|
INT_DEC = 90, // "int"
|
||||||
THEN = 91, // THEN
|
INT_OCT = 91, // "octal int"
|
||||||
TERN = 92, // TERN
|
INT_BIN = 92, // "binary int"
|
||||||
NEG = 93, // NEG
|
INT_HEX = 93, // "hexadecimal int"
|
||||||
ANIMREF = 94, // ANIMREF
|
ADD_ARRAY = 94, // ADD_ARRAY
|
||||||
PREINC = 95, // PREINC
|
THEN = 95, // THEN
|
||||||
PREDEC = 96, // PREDEC
|
TERN = 96, // TERN
|
||||||
POSTINC = 97, // POSTINC
|
NEG = 97, // NEG
|
||||||
POSTDEC = 98 // POSTDEC
|
ANIMREF = 98, // ANIMREF
|
||||||
|
PREINC = 99, // PREINC
|
||||||
|
PREDEC = 100, // PREDEC
|
||||||
|
POSTINC = 101, // POSTINC
|
||||||
|
POSTDEC = 102 // POSTDEC
|
||||||
};
|
};
|
||||||
/// Backward compatibility alias (Bison 3.6).
|
/// Backward compatibility alias (Bison 3.6).
|
||||||
typedef token_kind_type yytokentype;
|
typedef token_kind_type yytokentype;
|
||||||
@ -762,7 +771,7 @@ namespace xsk { namespace gsc { namespace iw5 {
|
|||||||
{
|
{
|
||||||
enum symbol_kind_type
|
enum symbol_kind_type
|
||||||
{
|
{
|
||||||
YYNTOKENS = 99, ///< Number of tokens.
|
YYNTOKENS = 103, ///< Number of tokens.
|
||||||
S_YYEMPTY = -2,
|
S_YYEMPTY = -2,
|
||||||
S_YYEOF = 0, // "end of file"
|
S_YYEOF = 0, // "end of file"
|
||||||
S_YYerror = 1, // error
|
S_YYerror = 1, // error
|
||||||
@ -852,93 +861,96 @@ namespace xsk { namespace gsc { namespace iw5 {
|
|||||||
S_NAME = 85, // "identifier"
|
S_NAME = 85, // "identifier"
|
||||||
S_STRING = 86, // "string literal"
|
S_STRING = 86, // "string literal"
|
||||||
S_ISTRING = 87, // "localized string"
|
S_ISTRING = 87, // "localized string"
|
||||||
S_FLOAT = 88, // "float"
|
S_COLOR = 88, // "color"
|
||||||
S_INTEGER = 89, // "int"
|
S_FLOAT = 89, // "float"
|
||||||
S_ADD_ARRAY = 90, // ADD_ARRAY
|
S_INT_DEC = 90, // "int"
|
||||||
S_THEN = 91, // THEN
|
S_INT_OCT = 91, // "octal int"
|
||||||
S_TERN = 92, // TERN
|
S_INT_BIN = 92, // "binary int"
|
||||||
S_NEG = 93, // NEG
|
S_INT_HEX = 93, // "hexadecimal int"
|
||||||
S_ANIMREF = 94, // ANIMREF
|
S_ADD_ARRAY = 94, // ADD_ARRAY
|
||||||
S_PREINC = 95, // PREINC
|
S_THEN = 95, // THEN
|
||||||
S_PREDEC = 96, // PREDEC
|
S_TERN = 96, // TERN
|
||||||
S_POSTINC = 97, // POSTINC
|
S_NEG = 97, // NEG
|
||||||
S_POSTDEC = 98, // POSTDEC
|
S_ANIMREF = 98, // ANIMREF
|
||||||
S_YYACCEPT = 99, // $accept
|
S_PREINC = 99, // PREINC
|
||||||
S_root = 100, // root
|
S_PREDEC = 100, // PREDEC
|
||||||
S_program = 101, // program
|
S_POSTINC = 101, // POSTINC
|
||||||
S_include = 102, // include
|
S_POSTDEC = 102, // POSTDEC
|
||||||
S_define = 103, // define
|
S_YYACCEPT = 103, // $accept
|
||||||
S_usingtree = 104, // usingtree
|
S_root = 104, // root
|
||||||
S_constant = 105, // constant
|
S_program = 105, // program
|
||||||
S_thread = 106, // thread
|
S_include = 106, // include
|
||||||
S_parameters = 107, // parameters
|
S_define = 107, // define
|
||||||
S_stmt = 108, // stmt
|
S_usingtree = 108, // usingtree
|
||||||
S_stmt_block = 109, // stmt_block
|
S_constant = 109, // constant
|
||||||
S_stmt_list = 110, // stmt_list
|
S_thread = 110, // thread
|
||||||
S_stmt_call = 111, // stmt_call
|
S_parameters = 111, // parameters
|
||||||
S_stmt_assign = 112, // stmt_assign
|
S_stmt = 112, // stmt
|
||||||
S_stmt_endon = 113, // stmt_endon
|
S_stmt_block = 113, // stmt_block
|
||||||
S_stmt_notify = 114, // stmt_notify
|
S_stmt_list = 114, // stmt_list
|
||||||
S_stmt_wait = 115, // stmt_wait
|
S_stmt_call = 115, // stmt_call
|
||||||
S_stmt_waittill = 116, // stmt_waittill
|
S_stmt_assign = 116, // stmt_assign
|
||||||
S_stmt_waittillmatch = 117, // stmt_waittillmatch
|
S_stmt_endon = 117, // stmt_endon
|
||||||
S_stmt_waittillframeend = 118, // stmt_waittillframeend
|
S_stmt_notify = 118, // stmt_notify
|
||||||
S_stmt_if = 119, // stmt_if
|
S_stmt_wait = 119, // stmt_wait
|
||||||
S_stmt_ifelse = 120, // stmt_ifelse
|
S_stmt_waittill = 120, // stmt_waittill
|
||||||
S_stmt_while = 121, // stmt_while
|
S_stmt_waittillmatch = 121, // stmt_waittillmatch
|
||||||
S_stmt_for = 122, // stmt_for
|
S_stmt_waittillframeend = 122, // stmt_waittillframeend
|
||||||
S_stmt_foreach = 123, // stmt_foreach
|
S_stmt_if = 123, // stmt_if
|
||||||
S_stmt_switch = 124, // stmt_switch
|
S_stmt_ifelse = 124, // stmt_ifelse
|
||||||
S_stmt_case = 125, // stmt_case
|
S_stmt_while = 125, // stmt_while
|
||||||
S_stmt_default = 126, // stmt_default
|
S_stmt_for = 126, // stmt_for
|
||||||
S_stmt_break = 127, // stmt_break
|
S_stmt_foreach = 127, // stmt_foreach
|
||||||
S_stmt_continue = 128, // stmt_continue
|
S_stmt_switch = 128, // stmt_switch
|
||||||
S_stmt_return = 129, // stmt_return
|
S_stmt_case = 129, // stmt_case
|
||||||
S_stmt_breakpoint = 130, // stmt_breakpoint
|
S_stmt_default = 130, // stmt_default
|
||||||
S_stmt_prof_begin = 131, // stmt_prof_begin
|
S_stmt_break = 131, // stmt_break
|
||||||
S_stmt_prof_end = 132, // stmt_prof_end
|
S_stmt_continue = 132, // stmt_continue
|
||||||
S_for_stmt = 133, // for_stmt
|
S_stmt_return = 133, // stmt_return
|
||||||
S_for_expr = 134, // for_expr
|
S_stmt_breakpoint = 134, // stmt_breakpoint
|
||||||
S_expr = 135, // expr
|
S_stmt_prof_begin = 135, // stmt_prof_begin
|
||||||
S_expr_assign = 136, // expr_assign
|
S_stmt_prof_end = 136, // stmt_prof_end
|
||||||
S_expr_compare = 137, // expr_compare
|
S_for_stmt = 137, // for_stmt
|
||||||
S_expr_ternary = 138, // expr_ternary
|
S_for_expr = 138, // for_expr
|
||||||
S_expr_binary = 139, // expr_binary
|
S_expr = 139, // expr
|
||||||
S_expr_primitive = 140, // expr_primitive
|
S_expr_assign = 140, // expr_assign
|
||||||
S_expr_call = 141, // expr_call
|
S_expr_compare = 141, // expr_compare
|
||||||
S_expr_call_thread = 142, // expr_call_thread
|
S_expr_ternary = 142, // expr_ternary
|
||||||
S_expr_call_childthread = 143, // expr_call_childthread
|
S_expr_binary = 143, // expr_binary
|
||||||
S_expr_call_function = 144, // expr_call_function
|
S_expr_primitive = 144, // expr_primitive
|
||||||
S_expr_call_pointer = 145, // expr_call_pointer
|
S_expr_call = 145, // expr_call
|
||||||
S_expr_arguments = 146, // expr_arguments
|
S_expr_call_thread = 146, // expr_call_thread
|
||||||
S_expr_arguments_filled = 147, // expr_arguments_filled
|
S_expr_call_childthread = 147, // expr_call_childthread
|
||||||
S_expr_arguments_empty = 148, // expr_arguments_empty
|
S_expr_call_function = 148, // expr_call_function
|
||||||
S_expr_function = 149, // expr_function
|
S_expr_call_pointer = 149, // expr_call_pointer
|
||||||
S_expr_add_array = 150, // expr_add_array
|
S_expr_arguments = 150, // expr_arguments
|
||||||
S_expr_array = 151, // expr_array
|
S_expr_arguments_filled = 151, // expr_arguments_filled
|
||||||
S_expr_field = 152, // expr_field
|
S_expr_arguments_empty = 152, // expr_arguments_empty
|
||||||
S_expr_size = 153, // expr_size
|
S_expr_function = 153, // expr_function
|
||||||
S_object = 154, // object
|
S_expr_add_array = 154, // expr_add_array
|
||||||
S_thisthread = 155, // thisthread
|
S_expr_array = 155, // expr_array
|
||||||
S_empty_array = 156, // empty_array
|
S_expr_field = 156, // expr_field
|
||||||
S_undefined = 157, // undefined
|
S_expr_size = 157, // expr_size
|
||||||
S_game = 158, // game
|
S_object = 158, // object
|
||||||
S_self = 159, // self
|
S_float = 159, // float
|
||||||
S_anim = 160, // anim
|
S_integer = 160, // integer
|
||||||
S_level = 161, // level
|
S_thisthread = 161, // thisthread
|
||||||
S_animation = 162, // animation
|
S_empty_array = 162, // empty_array
|
||||||
S_animtree = 163, // animtree
|
S_undefined = 163, // undefined
|
||||||
S_name = 164, // name
|
S_game = 164, // game
|
||||||
S_file = 165, // file
|
S_self = 165, // self
|
||||||
S_istring = 166, // istring
|
S_anim = 166, // anim
|
||||||
S_string = 167, // string
|
S_level = 167, // level
|
||||||
S_vector = 168, // vector
|
S_animation = 168, // animation
|
||||||
S_neg_float = 169, // neg_float
|
S_animtree = 169, // animtree
|
||||||
S_neg_integer = 170, // neg_integer
|
S_name = 170, // name
|
||||||
S_float = 171, // float
|
S_file = 171, // file
|
||||||
S_integer = 172, // integer
|
S_istring = 172, // istring
|
||||||
S_false = 173, // false
|
S_string = 173, // string
|
||||||
S_true = 174 // true
|
S_color = 174, // color
|
||||||
|
S_vector = 175, // vector
|
||||||
|
S_false = 176, // false
|
||||||
|
S_true = 177 // true
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -987,6 +999,10 @@ namespace xsk { namespace gsc { namespace iw5 {
|
|||||||
value.move< animtree_ptr > (std::move (that.value));
|
value.move< animtree_ptr > (std::move (that.value));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case symbol_kind::S_color: // color
|
||||||
|
value.move< color_ptr > (std::move (that.value));
|
||||||
|
break;
|
||||||
|
|
||||||
case symbol_kind::S_constant: // constant
|
case symbol_kind::S_constant: // constant
|
||||||
value.move< constant_ptr > (std::move (that.value));
|
value.move< constant_ptr > (std::move (that.value));
|
||||||
break;
|
break;
|
||||||
@ -1037,7 +1053,6 @@ namespace xsk { namespace gsc { namespace iw5 {
|
|||||||
value.move< file_ptr > (std::move (that.value));
|
value.move< file_ptr > (std::move (that.value));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case symbol_kind::S_neg_float: // neg_float
|
|
||||||
case symbol_kind::S_float: // float
|
case symbol_kind::S_float: // float
|
||||||
value.move< float_ptr > (std::move (that.value));
|
value.move< float_ptr > (std::move (that.value));
|
||||||
break;
|
break;
|
||||||
@ -1050,7 +1065,6 @@ namespace xsk { namespace gsc { namespace iw5 {
|
|||||||
value.move< include_ptr > (std::move (that.value));
|
value.move< include_ptr > (std::move (that.value));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case symbol_kind::S_neg_integer: // neg_integer
|
|
||||||
case symbol_kind::S_integer: // integer
|
case symbol_kind::S_integer: // integer
|
||||||
value.move< integer_ptr > (std::move (that.value));
|
value.move< integer_ptr > (std::move (that.value));
|
||||||
break;
|
break;
|
||||||
@ -1092,8 +1106,12 @@ namespace xsk { namespace gsc { namespace iw5 {
|
|||||||
case symbol_kind::S_NAME: // "identifier"
|
case symbol_kind::S_NAME: // "identifier"
|
||||||
case symbol_kind::S_STRING: // "string literal"
|
case symbol_kind::S_STRING: // "string literal"
|
||||||
case symbol_kind::S_ISTRING: // "localized string"
|
case symbol_kind::S_ISTRING: // "localized string"
|
||||||
|
case symbol_kind::S_COLOR: // "color"
|
||||||
case symbol_kind::S_FLOAT: // "float"
|
case symbol_kind::S_FLOAT: // "float"
|
||||||
case symbol_kind::S_INTEGER: // "int"
|
case symbol_kind::S_INT_DEC: // "int"
|
||||||
|
case symbol_kind::S_INT_OCT: // "octal int"
|
||||||
|
case symbol_kind::S_INT_BIN: // "binary int"
|
||||||
|
case symbol_kind::S_INT_HEX: // "hexadecimal int"
|
||||||
value.move< std::string > (std::move (that.value));
|
value.move< std::string > (std::move (that.value));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -1288,6 +1306,20 @@ namespace xsk { namespace gsc { namespace iw5 {
|
|||||||
{}
|
{}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if 201103L <= YY_CPLUSPLUS
|
||||||
|
basic_symbol (typename Base::kind_type t, color_ptr&& v, location_type&& l)
|
||||||
|
: Base (t)
|
||||||
|
, value (std::move (v))
|
||||||
|
, location (std::move (l))
|
||||||
|
{}
|
||||||
|
#else
|
||||||
|
basic_symbol (typename Base::kind_type t, const color_ptr& v, const location_type& l)
|
||||||
|
: Base (t)
|
||||||
|
, value (v)
|
||||||
|
, location (l)
|
||||||
|
{}
|
||||||
|
#endif
|
||||||
|
|
||||||
#if 201103L <= YY_CPLUSPLUS
|
#if 201103L <= YY_CPLUSPLUS
|
||||||
basic_symbol (typename Base::kind_type t, constant_ptr&& v, location_type&& l)
|
basic_symbol (typename Base::kind_type t, constant_ptr&& v, location_type&& l)
|
||||||
: Base (t)
|
: Base (t)
|
||||||
@ -2064,6 +2096,10 @@ switch (yykind)
|
|||||||
value.template destroy< animtree_ptr > ();
|
value.template destroy< animtree_ptr > ();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case symbol_kind::S_color: // color
|
||||||
|
value.template destroy< color_ptr > ();
|
||||||
|
break;
|
||||||
|
|
||||||
case symbol_kind::S_constant: // constant
|
case symbol_kind::S_constant: // constant
|
||||||
value.template destroy< constant_ptr > ();
|
value.template destroy< constant_ptr > ();
|
||||||
break;
|
break;
|
||||||
@ -2114,7 +2150,6 @@ switch (yykind)
|
|||||||
value.template destroy< file_ptr > ();
|
value.template destroy< file_ptr > ();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case symbol_kind::S_neg_float: // neg_float
|
|
||||||
case symbol_kind::S_float: // float
|
case symbol_kind::S_float: // float
|
||||||
value.template destroy< float_ptr > ();
|
value.template destroy< float_ptr > ();
|
||||||
break;
|
break;
|
||||||
@ -2127,7 +2162,6 @@ switch (yykind)
|
|||||||
value.template destroy< include_ptr > ();
|
value.template destroy< include_ptr > ();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case symbol_kind::S_neg_integer: // neg_integer
|
|
||||||
case symbol_kind::S_integer: // integer
|
case symbol_kind::S_integer: // integer
|
||||||
value.template destroy< integer_ptr > ();
|
value.template destroy< integer_ptr > ();
|
||||||
break;
|
break;
|
||||||
@ -2169,8 +2203,12 @@ switch (yykind)
|
|||||||
case symbol_kind::S_NAME: // "identifier"
|
case symbol_kind::S_NAME: // "identifier"
|
||||||
case symbol_kind::S_STRING: // "string literal"
|
case symbol_kind::S_STRING: // "string literal"
|
||||||
case symbol_kind::S_ISTRING: // "localized string"
|
case symbol_kind::S_ISTRING: // "localized string"
|
||||||
|
case symbol_kind::S_COLOR: // "color"
|
||||||
case symbol_kind::S_FLOAT: // "float"
|
case symbol_kind::S_FLOAT: // "float"
|
||||||
case symbol_kind::S_INTEGER: // "int"
|
case symbol_kind::S_INT_DEC: // "int"
|
||||||
|
case symbol_kind::S_INT_OCT: // "octal int"
|
||||||
|
case symbol_kind::S_INT_BIN: // "binary int"
|
||||||
|
case symbol_kind::S_INT_HEX: // "hexadecimal int"
|
||||||
value.template destroy< std::string > ();
|
value.template destroy< std::string > ();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -2406,7 +2444,7 @@ switch (yykind)
|
|||||||
: super_type(token_type (tok), v, l)
|
: super_type(token_type (tok), v, l)
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
IW5_ASSERT ((token::FILE <= tok && tok <= token::INTEGER));
|
IW5_ASSERT ((token::FILE <= tok && tok <= token::INT_HEX));
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -3776,6 +3814,21 @@ switch (yykind)
|
|||||||
return symbol_type (token::ISTRING, v, l);
|
return symbol_type (token::ISTRING, v, l);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
#if 201103L <= YY_CPLUSPLUS
|
||||||
|
static
|
||||||
|
symbol_type
|
||||||
|
make_COLOR (std::string v, location_type l)
|
||||||
|
{
|
||||||
|
return symbol_type (token::COLOR, std::move (v), std::move (l));
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
static
|
||||||
|
symbol_type
|
||||||
|
make_COLOR (const std::string& v, const location_type& l)
|
||||||
|
{
|
||||||
|
return symbol_type (token::COLOR, v, l);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
#if 201103L <= YY_CPLUSPLUS
|
#if 201103L <= YY_CPLUSPLUS
|
||||||
static
|
static
|
||||||
symbol_type
|
symbol_type
|
||||||
@ -3794,16 +3847,61 @@ switch (yykind)
|
|||||||
#if 201103L <= YY_CPLUSPLUS
|
#if 201103L <= YY_CPLUSPLUS
|
||||||
static
|
static
|
||||||
symbol_type
|
symbol_type
|
||||||
make_INTEGER (std::string v, location_type l)
|
make_INT_DEC (std::string v, location_type l)
|
||||||
{
|
{
|
||||||
return symbol_type (token::INTEGER, std::move (v), std::move (l));
|
return symbol_type (token::INT_DEC, std::move (v), std::move (l));
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
static
|
static
|
||||||
symbol_type
|
symbol_type
|
||||||
make_INTEGER (const std::string& v, const location_type& l)
|
make_INT_DEC (const std::string& v, const location_type& l)
|
||||||
{
|
{
|
||||||
return symbol_type (token::INTEGER, v, l);
|
return symbol_type (token::INT_DEC, v, l);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#if 201103L <= YY_CPLUSPLUS
|
||||||
|
static
|
||||||
|
symbol_type
|
||||||
|
make_INT_OCT (std::string v, location_type l)
|
||||||
|
{
|
||||||
|
return symbol_type (token::INT_OCT, std::move (v), std::move (l));
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
static
|
||||||
|
symbol_type
|
||||||
|
make_INT_OCT (const std::string& v, const location_type& l)
|
||||||
|
{
|
||||||
|
return symbol_type (token::INT_OCT, v, l);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#if 201103L <= YY_CPLUSPLUS
|
||||||
|
static
|
||||||
|
symbol_type
|
||||||
|
make_INT_BIN (std::string v, location_type l)
|
||||||
|
{
|
||||||
|
return symbol_type (token::INT_BIN, std::move (v), std::move (l));
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
static
|
||||||
|
symbol_type
|
||||||
|
make_INT_BIN (const std::string& v, const location_type& l)
|
||||||
|
{
|
||||||
|
return symbol_type (token::INT_BIN, v, l);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#if 201103L <= YY_CPLUSPLUS
|
||||||
|
static
|
||||||
|
symbol_type
|
||||||
|
make_INT_HEX (std::string v, location_type l)
|
||||||
|
{
|
||||||
|
return symbol_type (token::INT_HEX, std::move (v), std::move (l));
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
static
|
||||||
|
symbol_type
|
||||||
|
make_INT_HEX (const std::string& v, const location_type& l)
|
||||||
|
{
|
||||||
|
return symbol_type (token::INT_HEX, v, l);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#if 201103L <= YY_CPLUSPLUS
|
#if 201103L <= YY_CPLUSPLUS
|
||||||
@ -4285,8 +4383,8 @@ switch (yykind)
|
|||||||
/// Constants.
|
/// Constants.
|
||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
yylast_ = 1892, ///< Last index in yytable_.
|
yylast_ = 1813, ///< Last index in yytable_.
|
||||||
yynnts_ = 76, ///< Number of nonterminal symbols.
|
yynnts_ = 75, ///< Number of nonterminal symbols.
|
||||||
yyfinal_ = 15 ///< Termination state number.
|
yyfinal_ = 15 ///< Termination state number.
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -4326,6 +4424,10 @@ switch (yykind)
|
|||||||
value.copy< animtree_ptr > (YY_MOVE (that.value));
|
value.copy< animtree_ptr > (YY_MOVE (that.value));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case symbol_kind::S_color: // color
|
||||||
|
value.copy< color_ptr > (YY_MOVE (that.value));
|
||||||
|
break;
|
||||||
|
|
||||||
case symbol_kind::S_constant: // constant
|
case symbol_kind::S_constant: // constant
|
||||||
value.copy< constant_ptr > (YY_MOVE (that.value));
|
value.copy< constant_ptr > (YY_MOVE (that.value));
|
||||||
break;
|
break;
|
||||||
@ -4376,7 +4478,6 @@ switch (yykind)
|
|||||||
value.copy< file_ptr > (YY_MOVE (that.value));
|
value.copy< file_ptr > (YY_MOVE (that.value));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case symbol_kind::S_neg_float: // neg_float
|
|
||||||
case symbol_kind::S_float: // float
|
case symbol_kind::S_float: // float
|
||||||
value.copy< float_ptr > (YY_MOVE (that.value));
|
value.copy< float_ptr > (YY_MOVE (that.value));
|
||||||
break;
|
break;
|
||||||
@ -4389,7 +4490,6 @@ switch (yykind)
|
|||||||
value.copy< include_ptr > (YY_MOVE (that.value));
|
value.copy< include_ptr > (YY_MOVE (that.value));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case symbol_kind::S_neg_integer: // neg_integer
|
|
||||||
case symbol_kind::S_integer: // integer
|
case symbol_kind::S_integer: // integer
|
||||||
value.copy< integer_ptr > (YY_MOVE (that.value));
|
value.copy< integer_ptr > (YY_MOVE (that.value));
|
||||||
break;
|
break;
|
||||||
@ -4431,8 +4531,12 @@ switch (yykind)
|
|||||||
case symbol_kind::S_NAME: // "identifier"
|
case symbol_kind::S_NAME: // "identifier"
|
||||||
case symbol_kind::S_STRING: // "string literal"
|
case symbol_kind::S_STRING: // "string literal"
|
||||||
case symbol_kind::S_ISTRING: // "localized string"
|
case symbol_kind::S_ISTRING: // "localized string"
|
||||||
|
case symbol_kind::S_COLOR: // "color"
|
||||||
case symbol_kind::S_FLOAT: // "float"
|
case symbol_kind::S_FLOAT: // "float"
|
||||||
case symbol_kind::S_INTEGER: // "int"
|
case symbol_kind::S_INT_DEC: // "int"
|
||||||
|
case symbol_kind::S_INT_OCT: // "octal int"
|
||||||
|
case symbol_kind::S_INT_BIN: // "binary int"
|
||||||
|
case symbol_kind::S_INT_HEX: // "hexadecimal int"
|
||||||
value.copy< std::string > (YY_MOVE (that.value));
|
value.copy< std::string > (YY_MOVE (that.value));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -4603,6 +4707,10 @@ switch (yykind)
|
|||||||
value.move< animtree_ptr > (YY_MOVE (s.value));
|
value.move< animtree_ptr > (YY_MOVE (s.value));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case symbol_kind::S_color: // color
|
||||||
|
value.move< color_ptr > (YY_MOVE (s.value));
|
||||||
|
break;
|
||||||
|
|
||||||
case symbol_kind::S_constant: // constant
|
case symbol_kind::S_constant: // constant
|
||||||
value.move< constant_ptr > (YY_MOVE (s.value));
|
value.move< constant_ptr > (YY_MOVE (s.value));
|
||||||
break;
|
break;
|
||||||
@ -4653,7 +4761,6 @@ switch (yykind)
|
|||||||
value.move< file_ptr > (YY_MOVE (s.value));
|
value.move< file_ptr > (YY_MOVE (s.value));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case symbol_kind::S_neg_float: // neg_float
|
|
||||||
case symbol_kind::S_float: // float
|
case symbol_kind::S_float: // float
|
||||||
value.move< float_ptr > (YY_MOVE (s.value));
|
value.move< float_ptr > (YY_MOVE (s.value));
|
||||||
break;
|
break;
|
||||||
@ -4666,7 +4773,6 @@ switch (yykind)
|
|||||||
value.move< include_ptr > (YY_MOVE (s.value));
|
value.move< include_ptr > (YY_MOVE (s.value));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case symbol_kind::S_neg_integer: // neg_integer
|
|
||||||
case symbol_kind::S_integer: // integer
|
case symbol_kind::S_integer: // integer
|
||||||
value.move< integer_ptr > (YY_MOVE (s.value));
|
value.move< integer_ptr > (YY_MOVE (s.value));
|
||||||
break;
|
break;
|
||||||
@ -4708,8 +4814,12 @@ switch (yykind)
|
|||||||
case symbol_kind::S_NAME: // "identifier"
|
case symbol_kind::S_NAME: // "identifier"
|
||||||
case symbol_kind::S_STRING: // "string literal"
|
case symbol_kind::S_STRING: // "string literal"
|
||||||
case symbol_kind::S_ISTRING: // "localized string"
|
case symbol_kind::S_ISTRING: // "localized string"
|
||||||
|
case symbol_kind::S_COLOR: // "color"
|
||||||
case symbol_kind::S_FLOAT: // "float"
|
case symbol_kind::S_FLOAT: // "float"
|
||||||
case symbol_kind::S_INTEGER: // "int"
|
case symbol_kind::S_INT_DEC: // "int"
|
||||||
|
case symbol_kind::S_INT_OCT: // "octal int"
|
||||||
|
case symbol_kind::S_INT_BIN: // "binary int"
|
||||||
|
case symbol_kind::S_INT_HEX: // "hexadecimal int"
|
||||||
value.move< std::string > (YY_MOVE (s.value));
|
value.move< std::string > (YY_MOVE (s.value));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -4902,7 +5012,7 @@ switch (yykind)
|
|||||||
|
|
||||||
#line 13 "parser.ypp"
|
#line 13 "parser.ypp"
|
||||||
} } } // xsk::gsc::iw5
|
} } } // xsk::gsc::iw5
|
||||||
#line 4906 "parser.hpp"
|
#line 5016 "parser.hpp"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -785,6 +785,7 @@ void compiler::emit_expr(const gsc::context_ptr& ctx, const gsc::expr_ptr& expr)
|
|||||||
case gsc::node_t::data_name: emit_local_variable(ctx, expr.as_name); break;
|
case gsc::node_t::data_name: emit_local_variable(ctx, expr.as_name); break;
|
||||||
case gsc::node_t::data_istring: emit_istring(ctx, expr.as_istring); break;
|
case gsc::node_t::data_istring: emit_istring(ctx, expr.as_istring); break;
|
||||||
case gsc::node_t::data_string: emit_string(ctx, expr.as_string); break;
|
case gsc::node_t::data_string: emit_string(ctx, expr.as_string); break;
|
||||||
|
case gsc::node_t::data_color: emit_color(ctx, expr.as_color); break;
|
||||||
case gsc::node_t::data_vector: emit_vector(ctx, expr.as_vector); break;
|
case gsc::node_t::data_vector: emit_vector(ctx, expr.as_vector); break;
|
||||||
case gsc::node_t::data_float: emit_float(ctx, expr.as_float); break;
|
case gsc::node_t::data_float: emit_float(ctx, expr.as_float); break;
|
||||||
case gsc::node_t::data_integer: emit_integer(ctx, expr.as_integer); break;
|
case gsc::node_t::data_integer: emit_integer(ctx, expr.as_integer); break;
|
||||||
@ -1606,6 +1607,30 @@ void compiler::emit_string(const gsc::context_ptr& ctx, const gsc::string_ptr& s
|
|||||||
emit_opcode(ctx, opcode::OP_GetString, str->value);
|
emit_opcode(ctx, opcode::OP_GetString, str->value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void compiler::emit_color(const gsc::context_ptr& ctx, const gsc::color_ptr& color)
|
||||||
|
{
|
||||||
|
std::vector<std::string> data;
|
||||||
|
std::string x, y, z;
|
||||||
|
|
||||||
|
if(color->value.size() == 3)
|
||||||
|
{
|
||||||
|
x = "0x" + color->value.substr(0, 1) + color->value.substr(0, 1);
|
||||||
|
y = "0x" + color->value.substr(1, 1) + color->value.substr(1, 1);
|
||||||
|
z = "0x" + color->value.substr(2, 1) + color->value.substr(2, 1);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
x = "0x" + color->value.substr(0, 2);
|
||||||
|
y = "0x" + color->value.substr(2, 2);
|
||||||
|
z = "0x" + color->value.substr(4, 2);
|
||||||
|
}
|
||||||
|
|
||||||
|
data.push_back(gsc::utils::string::hex_to_dec(x.data()));
|
||||||
|
data.push_back(gsc::utils::string::hex_to_dec(y.data()));
|
||||||
|
data.push_back(gsc::utils::string::hex_to_dec(z.data()));
|
||||||
|
emit_opcode(ctx, opcode::OP_GetVector, data);
|
||||||
|
}
|
||||||
|
|
||||||
void compiler::emit_vector(const gsc::context_ptr& ctx, const gsc::vector_ptr& vec)
|
void compiler::emit_vector(const gsc::context_ptr& ctx, const gsc::vector_ptr& vec)
|
||||||
{
|
{
|
||||||
std::vector<std::string> data;
|
std::vector<std::string> data;
|
||||||
|
@ -101,6 +101,7 @@ private:
|
|||||||
void emit_animation(const gsc::context_ptr& ctx, const gsc::animation_ptr& animation);
|
void emit_animation(const gsc::context_ptr& ctx, const gsc::animation_ptr& animation);
|
||||||
void emit_istring(const gsc::context_ptr& ctx, const gsc::istring_ptr& str);
|
void emit_istring(const gsc::context_ptr& ctx, const gsc::istring_ptr& str);
|
||||||
void emit_string(const gsc::context_ptr& ctx, const gsc::string_ptr& str);
|
void emit_string(const gsc::context_ptr& ctx, const gsc::string_ptr& str);
|
||||||
|
void emit_color(const gsc::context_ptr& ctx, const gsc::color_ptr& color);
|
||||||
void emit_vector(const gsc::context_ptr& ctx, const gsc::vector_ptr& vec);
|
void emit_vector(const gsc::context_ptr& ctx, const gsc::vector_ptr& vec);
|
||||||
void emit_float(const gsc::context_ptr& ctx, const gsc::float_ptr& num);
|
void emit_float(const gsc::context_ptr& ctx, const gsc::float_ptr& num);
|
||||||
void emit_integer(const gsc::context_ptr& ctx, const gsc::integer_ptr& num);
|
void emit_integer(const gsc::context_ptr& ctx, const gsc::integer_ptr& num);
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -700,7 +700,7 @@ extern int yylex (yyscan_t yyscanner);
|
|||||||
#undef yyTABLES_NAME
|
#undef yyTABLES_NAME
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#line 149 "lexer.lpp"
|
#line 157 "lexer.lpp"
|
||||||
|
|
||||||
|
|
||||||
#line 706 "lexer.hpp"
|
#line 706 "lexer.hpp"
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -417,31 +417,34 @@ namespace xsk { namespace gsc { namespace iw6 {
|
|||||||
// animtree
|
// animtree
|
||||||
char dummy3[sizeof (animtree_ptr)];
|
char dummy3[sizeof (animtree_ptr)];
|
||||||
|
|
||||||
|
// color
|
||||||
|
char dummy4[sizeof (color_ptr)];
|
||||||
|
|
||||||
// constant
|
// constant
|
||||||
char dummy4[sizeof (constant_ptr)];
|
char dummy5[sizeof (constant_ptr)];
|
||||||
|
|
||||||
// define
|
// define
|
||||||
char dummy5[sizeof (define_ptr)];
|
char dummy6[sizeof (define_ptr)];
|
||||||
|
|
||||||
// empty_array
|
// empty_array
|
||||||
char dummy6[sizeof (empty_array_ptr)];
|
char dummy7[sizeof (empty_array_ptr)];
|
||||||
|
|
||||||
// expr_arguments
|
// expr_arguments
|
||||||
// expr_arguments_filled
|
// expr_arguments_filled
|
||||||
// expr_arguments_empty
|
// expr_arguments_empty
|
||||||
char dummy7[sizeof (expr_arguments_ptr)];
|
char dummy8[sizeof (expr_arguments_ptr)];
|
||||||
|
|
||||||
// expr_assign
|
// expr_assign
|
||||||
char dummy8[sizeof (expr_assign_ptr)];
|
char dummy9[sizeof (expr_assign_ptr)];
|
||||||
|
|
||||||
// expr_call
|
// expr_call
|
||||||
// expr_call_thread
|
// expr_call_thread
|
||||||
// expr_call_childthread
|
// expr_call_childthread
|
||||||
char dummy9[sizeof (expr_call_ptr)];
|
char dummy10[sizeof (expr_call_ptr)];
|
||||||
|
|
||||||
// expr_call_function
|
// expr_call_function
|
||||||
// expr_call_pointer
|
// expr_call_pointer
|
||||||
char dummy10[sizeof (expr_call_type_ptr)];
|
char dummy11[sizeof (expr_call_type_ptr)];
|
||||||
|
|
||||||
// for_expr
|
// for_expr
|
||||||
// expr
|
// expr
|
||||||
@ -449,36 +452,34 @@ namespace xsk { namespace gsc { namespace iw6 {
|
|||||||
// expr_ternary
|
// expr_ternary
|
||||||
// expr_binary
|
// expr_binary
|
||||||
// expr_primitive
|
// expr_primitive
|
||||||
char dummy11[sizeof (expr_ptr)];
|
char dummy12[sizeof (expr_ptr)];
|
||||||
|
|
||||||
// false
|
// false
|
||||||
char dummy12[sizeof (false_ptr)];
|
char dummy13[sizeof (false_ptr)];
|
||||||
|
|
||||||
// file
|
// file
|
||||||
char dummy13[sizeof (file_ptr)];
|
char dummy14[sizeof (file_ptr)];
|
||||||
|
|
||||||
// neg_float
|
|
||||||
// float
|
// float
|
||||||
char dummy14[sizeof (float_ptr)];
|
char dummy15[sizeof (float_ptr)];
|
||||||
|
|
||||||
// game
|
// game
|
||||||
char dummy15[sizeof (game_ptr)];
|
char dummy16[sizeof (game_ptr)];
|
||||||
|
|
||||||
// include
|
// include
|
||||||
char dummy16[sizeof (include_ptr)];
|
char dummy17[sizeof (include_ptr)];
|
||||||
|
|
||||||
// neg_integer
|
|
||||||
// integer
|
// integer
|
||||||
char dummy17[sizeof (integer_ptr)];
|
char dummy18[sizeof (integer_ptr)];
|
||||||
|
|
||||||
// istring
|
// istring
|
||||||
char dummy18[sizeof (istring_ptr)];
|
char dummy19[sizeof (istring_ptr)];
|
||||||
|
|
||||||
// level
|
// level
|
||||||
char dummy19[sizeof (level_ptr)];
|
char dummy20[sizeof (level_ptr)];
|
||||||
|
|
||||||
// name
|
// name
|
||||||
char dummy20[sizeof (name_ptr)];
|
char dummy21[sizeof (name_ptr)];
|
||||||
|
|
||||||
// expr_function
|
// expr_function
|
||||||
// expr_add_array
|
// expr_add_array
|
||||||
@ -486,119 +487,123 @@ namespace xsk { namespace gsc { namespace iw6 {
|
|||||||
// expr_field
|
// expr_field
|
||||||
// expr_size
|
// expr_size
|
||||||
// object
|
// object
|
||||||
char dummy21[sizeof (node_ptr)];
|
char dummy22[sizeof (node_ptr)];
|
||||||
|
|
||||||
// parameters
|
// parameters
|
||||||
char dummy22[sizeof (parameters_ptr)];
|
char dummy23[sizeof (parameters_ptr)];
|
||||||
|
|
||||||
// program
|
// program
|
||||||
char dummy23[sizeof (program_ptr)];
|
char dummy24[sizeof (program_ptr)];
|
||||||
|
|
||||||
// self
|
// self
|
||||||
char dummy24[sizeof (self_ptr)];
|
char dummy25[sizeof (self_ptr)];
|
||||||
|
|
||||||
// "file path"
|
// "file path"
|
||||||
// "identifier"
|
// "identifier"
|
||||||
// "string literal"
|
// "string literal"
|
||||||
// "localized string"
|
// "localized string"
|
||||||
|
// "color"
|
||||||
// "float"
|
// "float"
|
||||||
// "int"
|
// "int"
|
||||||
char dummy25[sizeof (std::string)];
|
// "octal int"
|
||||||
|
// "binary int"
|
||||||
|
// "hexadecimal int"
|
||||||
|
char dummy26[sizeof (std::string)];
|
||||||
|
|
||||||
// stmt_assign
|
// stmt_assign
|
||||||
char dummy26[sizeof (stmt_assign_ptr)];
|
char dummy27[sizeof (stmt_assign_ptr)];
|
||||||
|
|
||||||
// stmt_break
|
// stmt_break
|
||||||
char dummy27[sizeof (stmt_break_ptr)];
|
char dummy28[sizeof (stmt_break_ptr)];
|
||||||
|
|
||||||
// stmt_breakpoint
|
// stmt_breakpoint
|
||||||
char dummy28[sizeof (stmt_breakpoint_ptr)];
|
char dummy29[sizeof (stmt_breakpoint_ptr)];
|
||||||
|
|
||||||
// stmt_call
|
// stmt_call
|
||||||
char dummy29[sizeof (stmt_call_ptr)];
|
char dummy30[sizeof (stmt_call_ptr)];
|
||||||
|
|
||||||
// stmt_case
|
// stmt_case
|
||||||
char dummy30[sizeof (stmt_case_ptr)];
|
char dummy31[sizeof (stmt_case_ptr)];
|
||||||
|
|
||||||
// stmt_continue
|
// stmt_continue
|
||||||
char dummy31[sizeof (stmt_continue_ptr)];
|
char dummy32[sizeof (stmt_continue_ptr)];
|
||||||
|
|
||||||
// stmt_default
|
// stmt_default
|
||||||
char dummy32[sizeof (stmt_default_ptr)];
|
char dummy33[sizeof (stmt_default_ptr)];
|
||||||
|
|
||||||
// stmt_endon
|
// stmt_endon
|
||||||
char dummy33[sizeof (stmt_endon_ptr)];
|
char dummy34[sizeof (stmt_endon_ptr)];
|
||||||
|
|
||||||
// stmt_for
|
// stmt_for
|
||||||
char dummy34[sizeof (stmt_for_ptr)];
|
char dummy35[sizeof (stmt_for_ptr)];
|
||||||
|
|
||||||
// stmt_foreach
|
// stmt_foreach
|
||||||
char dummy35[sizeof (stmt_foreach_ptr)];
|
char dummy36[sizeof (stmt_foreach_ptr)];
|
||||||
|
|
||||||
// stmt_if
|
// stmt_if
|
||||||
char dummy36[sizeof (stmt_if_ptr)];
|
char dummy37[sizeof (stmt_if_ptr)];
|
||||||
|
|
||||||
// stmt_ifelse
|
// stmt_ifelse
|
||||||
char dummy37[sizeof (stmt_ifelse_ptr)];
|
char dummy38[sizeof (stmt_ifelse_ptr)];
|
||||||
|
|
||||||
// stmt_block
|
// stmt_block
|
||||||
// stmt_list
|
// stmt_list
|
||||||
char dummy38[sizeof (stmt_list_ptr)];
|
char dummy39[sizeof (stmt_list_ptr)];
|
||||||
|
|
||||||
// stmt_notify
|
// stmt_notify
|
||||||
char dummy39[sizeof (stmt_notify_ptr)];
|
char dummy40[sizeof (stmt_notify_ptr)];
|
||||||
|
|
||||||
// stmt_prof_begin
|
// stmt_prof_begin
|
||||||
char dummy40[sizeof (stmt_prof_begin_ptr)];
|
char dummy41[sizeof (stmt_prof_begin_ptr)];
|
||||||
|
|
||||||
// stmt_prof_end
|
// stmt_prof_end
|
||||||
char dummy41[sizeof (stmt_prof_end_ptr)];
|
char dummy42[sizeof (stmt_prof_end_ptr)];
|
||||||
|
|
||||||
// stmt
|
// stmt
|
||||||
// for_stmt
|
// for_stmt
|
||||||
char dummy42[sizeof (stmt_ptr)];
|
char dummy43[sizeof (stmt_ptr)];
|
||||||
|
|
||||||
// stmt_return
|
// stmt_return
|
||||||
char dummy43[sizeof (stmt_return_ptr)];
|
char dummy44[sizeof (stmt_return_ptr)];
|
||||||
|
|
||||||
// stmt_switch
|
// stmt_switch
|
||||||
char dummy44[sizeof (stmt_switch_ptr)];
|
char dummy45[sizeof (stmt_switch_ptr)];
|
||||||
|
|
||||||
// stmt_wait
|
// stmt_wait
|
||||||
char dummy45[sizeof (stmt_wait_ptr)];
|
char dummy46[sizeof (stmt_wait_ptr)];
|
||||||
|
|
||||||
// stmt_waittill
|
// stmt_waittill
|
||||||
char dummy46[sizeof (stmt_waittill_ptr)];
|
char dummy47[sizeof (stmt_waittill_ptr)];
|
||||||
|
|
||||||
// stmt_waittillframeend
|
// stmt_waittillframeend
|
||||||
char dummy47[sizeof (stmt_waittillframeend_ptr)];
|
char dummy48[sizeof (stmt_waittillframeend_ptr)];
|
||||||
|
|
||||||
// stmt_waittillmatch
|
// stmt_waittillmatch
|
||||||
char dummy48[sizeof (stmt_waittillmatch_ptr)];
|
char dummy49[sizeof (stmt_waittillmatch_ptr)];
|
||||||
|
|
||||||
// stmt_while
|
// stmt_while
|
||||||
char dummy49[sizeof (stmt_while_ptr)];
|
char dummy50[sizeof (stmt_while_ptr)];
|
||||||
|
|
||||||
// string
|
// string
|
||||||
char dummy50[sizeof (string_ptr)];
|
char dummy51[sizeof (string_ptr)];
|
||||||
|
|
||||||
// thisthread
|
// thisthread
|
||||||
char dummy51[sizeof (thisthread_ptr)];
|
char dummy52[sizeof (thisthread_ptr)];
|
||||||
|
|
||||||
// thread
|
// thread
|
||||||
char dummy52[sizeof (thread_ptr)];
|
char dummy53[sizeof (thread_ptr)];
|
||||||
|
|
||||||
// true
|
// true
|
||||||
char dummy53[sizeof (true_ptr)];
|
char dummy54[sizeof (true_ptr)];
|
||||||
|
|
||||||
// undefined
|
// undefined
|
||||||
char dummy54[sizeof (undefined_ptr)];
|
char dummy55[sizeof (undefined_ptr)];
|
||||||
|
|
||||||
// usingtree
|
// usingtree
|
||||||
char dummy55[sizeof (usingtree_ptr)];
|
char dummy56[sizeof (usingtree_ptr)];
|
||||||
|
|
||||||
// vector
|
// vector
|
||||||
char dummy56[sizeof (vector_ptr)];
|
char dummy57[sizeof (vector_ptr)];
|
||||||
};
|
};
|
||||||
|
|
||||||
/// The size of the largest semantic type.
|
/// The size of the largest semantic type.
|
||||||
@ -735,17 +740,21 @@ namespace xsk { namespace gsc { namespace iw6 {
|
|||||||
NAME = 85, // "identifier"
|
NAME = 85, // "identifier"
|
||||||
STRING = 86, // "string literal"
|
STRING = 86, // "string literal"
|
||||||
ISTRING = 87, // "localized string"
|
ISTRING = 87, // "localized string"
|
||||||
FLOAT = 88, // "float"
|
COLOR = 88, // "color"
|
||||||
INTEGER = 89, // "int"
|
FLOAT = 89, // "float"
|
||||||
ADD_ARRAY = 90, // ADD_ARRAY
|
INT_DEC = 90, // "int"
|
||||||
THEN = 91, // THEN
|
INT_OCT = 91, // "octal int"
|
||||||
TERN = 92, // TERN
|
INT_BIN = 92, // "binary int"
|
||||||
NEG = 93, // NEG
|
INT_HEX = 93, // "hexadecimal int"
|
||||||
ANIMREF = 94, // ANIMREF
|
ADD_ARRAY = 94, // ADD_ARRAY
|
||||||
PREINC = 95, // PREINC
|
THEN = 95, // THEN
|
||||||
PREDEC = 96, // PREDEC
|
TERN = 96, // TERN
|
||||||
POSTINC = 97, // POSTINC
|
NEG = 97, // NEG
|
||||||
POSTDEC = 98 // POSTDEC
|
ANIMREF = 98, // ANIMREF
|
||||||
|
PREINC = 99, // PREINC
|
||||||
|
PREDEC = 100, // PREDEC
|
||||||
|
POSTINC = 101, // POSTINC
|
||||||
|
POSTDEC = 102 // POSTDEC
|
||||||
};
|
};
|
||||||
/// Backward compatibility alias (Bison 3.6).
|
/// Backward compatibility alias (Bison 3.6).
|
||||||
typedef token_kind_type yytokentype;
|
typedef token_kind_type yytokentype;
|
||||||
@ -762,7 +771,7 @@ namespace xsk { namespace gsc { namespace iw6 {
|
|||||||
{
|
{
|
||||||
enum symbol_kind_type
|
enum symbol_kind_type
|
||||||
{
|
{
|
||||||
YYNTOKENS = 99, ///< Number of tokens.
|
YYNTOKENS = 103, ///< Number of tokens.
|
||||||
S_YYEMPTY = -2,
|
S_YYEMPTY = -2,
|
||||||
S_YYEOF = 0, // "end of file"
|
S_YYEOF = 0, // "end of file"
|
||||||
S_YYerror = 1, // error
|
S_YYerror = 1, // error
|
||||||
@ -852,93 +861,96 @@ namespace xsk { namespace gsc { namespace iw6 {
|
|||||||
S_NAME = 85, // "identifier"
|
S_NAME = 85, // "identifier"
|
||||||
S_STRING = 86, // "string literal"
|
S_STRING = 86, // "string literal"
|
||||||
S_ISTRING = 87, // "localized string"
|
S_ISTRING = 87, // "localized string"
|
||||||
S_FLOAT = 88, // "float"
|
S_COLOR = 88, // "color"
|
||||||
S_INTEGER = 89, // "int"
|
S_FLOAT = 89, // "float"
|
||||||
S_ADD_ARRAY = 90, // ADD_ARRAY
|
S_INT_DEC = 90, // "int"
|
||||||
S_THEN = 91, // THEN
|
S_INT_OCT = 91, // "octal int"
|
||||||
S_TERN = 92, // TERN
|
S_INT_BIN = 92, // "binary int"
|
||||||
S_NEG = 93, // NEG
|
S_INT_HEX = 93, // "hexadecimal int"
|
||||||
S_ANIMREF = 94, // ANIMREF
|
S_ADD_ARRAY = 94, // ADD_ARRAY
|
||||||
S_PREINC = 95, // PREINC
|
S_THEN = 95, // THEN
|
||||||
S_PREDEC = 96, // PREDEC
|
S_TERN = 96, // TERN
|
||||||
S_POSTINC = 97, // POSTINC
|
S_NEG = 97, // NEG
|
||||||
S_POSTDEC = 98, // POSTDEC
|
S_ANIMREF = 98, // ANIMREF
|
||||||
S_YYACCEPT = 99, // $accept
|
S_PREINC = 99, // PREINC
|
||||||
S_root = 100, // root
|
S_PREDEC = 100, // PREDEC
|
||||||
S_program = 101, // program
|
S_POSTINC = 101, // POSTINC
|
||||||
S_include = 102, // include
|
S_POSTDEC = 102, // POSTDEC
|
||||||
S_define = 103, // define
|
S_YYACCEPT = 103, // $accept
|
||||||
S_usingtree = 104, // usingtree
|
S_root = 104, // root
|
||||||
S_constant = 105, // constant
|
S_program = 105, // program
|
||||||
S_thread = 106, // thread
|
S_include = 106, // include
|
||||||
S_parameters = 107, // parameters
|
S_define = 107, // define
|
||||||
S_stmt = 108, // stmt
|
S_usingtree = 108, // usingtree
|
||||||
S_stmt_block = 109, // stmt_block
|
S_constant = 109, // constant
|
||||||
S_stmt_list = 110, // stmt_list
|
S_thread = 110, // thread
|
||||||
S_stmt_call = 111, // stmt_call
|
S_parameters = 111, // parameters
|
||||||
S_stmt_assign = 112, // stmt_assign
|
S_stmt = 112, // stmt
|
||||||
S_stmt_endon = 113, // stmt_endon
|
S_stmt_block = 113, // stmt_block
|
||||||
S_stmt_notify = 114, // stmt_notify
|
S_stmt_list = 114, // stmt_list
|
||||||
S_stmt_wait = 115, // stmt_wait
|
S_stmt_call = 115, // stmt_call
|
||||||
S_stmt_waittill = 116, // stmt_waittill
|
S_stmt_assign = 116, // stmt_assign
|
||||||
S_stmt_waittillmatch = 117, // stmt_waittillmatch
|
S_stmt_endon = 117, // stmt_endon
|
||||||
S_stmt_waittillframeend = 118, // stmt_waittillframeend
|
S_stmt_notify = 118, // stmt_notify
|
||||||
S_stmt_if = 119, // stmt_if
|
S_stmt_wait = 119, // stmt_wait
|
||||||
S_stmt_ifelse = 120, // stmt_ifelse
|
S_stmt_waittill = 120, // stmt_waittill
|
||||||
S_stmt_while = 121, // stmt_while
|
S_stmt_waittillmatch = 121, // stmt_waittillmatch
|
||||||
S_stmt_for = 122, // stmt_for
|
S_stmt_waittillframeend = 122, // stmt_waittillframeend
|
||||||
S_stmt_foreach = 123, // stmt_foreach
|
S_stmt_if = 123, // stmt_if
|
||||||
S_stmt_switch = 124, // stmt_switch
|
S_stmt_ifelse = 124, // stmt_ifelse
|
||||||
S_stmt_case = 125, // stmt_case
|
S_stmt_while = 125, // stmt_while
|
||||||
S_stmt_default = 126, // stmt_default
|
S_stmt_for = 126, // stmt_for
|
||||||
S_stmt_break = 127, // stmt_break
|
S_stmt_foreach = 127, // stmt_foreach
|
||||||
S_stmt_continue = 128, // stmt_continue
|
S_stmt_switch = 128, // stmt_switch
|
||||||
S_stmt_return = 129, // stmt_return
|
S_stmt_case = 129, // stmt_case
|
||||||
S_stmt_breakpoint = 130, // stmt_breakpoint
|
S_stmt_default = 130, // stmt_default
|
||||||
S_stmt_prof_begin = 131, // stmt_prof_begin
|
S_stmt_break = 131, // stmt_break
|
||||||
S_stmt_prof_end = 132, // stmt_prof_end
|
S_stmt_continue = 132, // stmt_continue
|
||||||
S_for_stmt = 133, // for_stmt
|
S_stmt_return = 133, // stmt_return
|
||||||
S_for_expr = 134, // for_expr
|
S_stmt_breakpoint = 134, // stmt_breakpoint
|
||||||
S_expr = 135, // expr
|
S_stmt_prof_begin = 135, // stmt_prof_begin
|
||||||
S_expr_assign = 136, // expr_assign
|
S_stmt_prof_end = 136, // stmt_prof_end
|
||||||
S_expr_compare = 137, // expr_compare
|
S_for_stmt = 137, // for_stmt
|
||||||
S_expr_ternary = 138, // expr_ternary
|
S_for_expr = 138, // for_expr
|
||||||
S_expr_binary = 139, // expr_binary
|
S_expr = 139, // expr
|
||||||
S_expr_primitive = 140, // expr_primitive
|
S_expr_assign = 140, // expr_assign
|
||||||
S_expr_call = 141, // expr_call
|
S_expr_compare = 141, // expr_compare
|
||||||
S_expr_call_thread = 142, // expr_call_thread
|
S_expr_ternary = 142, // expr_ternary
|
||||||
S_expr_call_childthread = 143, // expr_call_childthread
|
S_expr_binary = 143, // expr_binary
|
||||||
S_expr_call_function = 144, // expr_call_function
|
S_expr_primitive = 144, // expr_primitive
|
||||||
S_expr_call_pointer = 145, // expr_call_pointer
|
S_expr_call = 145, // expr_call
|
||||||
S_expr_arguments = 146, // expr_arguments
|
S_expr_call_thread = 146, // expr_call_thread
|
||||||
S_expr_arguments_filled = 147, // expr_arguments_filled
|
S_expr_call_childthread = 147, // expr_call_childthread
|
||||||
S_expr_arguments_empty = 148, // expr_arguments_empty
|
S_expr_call_function = 148, // expr_call_function
|
||||||
S_expr_function = 149, // expr_function
|
S_expr_call_pointer = 149, // expr_call_pointer
|
||||||
S_expr_add_array = 150, // expr_add_array
|
S_expr_arguments = 150, // expr_arguments
|
||||||
S_expr_array = 151, // expr_array
|
S_expr_arguments_filled = 151, // expr_arguments_filled
|
||||||
S_expr_field = 152, // expr_field
|
S_expr_arguments_empty = 152, // expr_arguments_empty
|
||||||
S_expr_size = 153, // expr_size
|
S_expr_function = 153, // expr_function
|
||||||
S_object = 154, // object
|
S_expr_add_array = 154, // expr_add_array
|
||||||
S_thisthread = 155, // thisthread
|
S_expr_array = 155, // expr_array
|
||||||
S_empty_array = 156, // empty_array
|
S_expr_field = 156, // expr_field
|
||||||
S_undefined = 157, // undefined
|
S_expr_size = 157, // expr_size
|
||||||
S_game = 158, // game
|
S_object = 158, // object
|
||||||
S_self = 159, // self
|
S_float = 159, // float
|
||||||
S_anim = 160, // anim
|
S_integer = 160, // integer
|
||||||
S_level = 161, // level
|
S_thisthread = 161, // thisthread
|
||||||
S_animation = 162, // animation
|
S_empty_array = 162, // empty_array
|
||||||
S_animtree = 163, // animtree
|
S_undefined = 163, // undefined
|
||||||
S_name = 164, // name
|
S_game = 164, // game
|
||||||
S_file = 165, // file
|
S_self = 165, // self
|
||||||
S_istring = 166, // istring
|
S_anim = 166, // anim
|
||||||
S_string = 167, // string
|
S_level = 167, // level
|
||||||
S_vector = 168, // vector
|
S_animation = 168, // animation
|
||||||
S_neg_float = 169, // neg_float
|
S_animtree = 169, // animtree
|
||||||
S_neg_integer = 170, // neg_integer
|
S_name = 170, // name
|
||||||
S_float = 171, // float
|
S_file = 171, // file
|
||||||
S_integer = 172, // integer
|
S_istring = 172, // istring
|
||||||
S_false = 173, // false
|
S_string = 173, // string
|
||||||
S_true = 174 // true
|
S_color = 174, // color
|
||||||
|
S_vector = 175, // vector
|
||||||
|
S_false = 176, // false
|
||||||
|
S_true = 177 // true
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -987,6 +999,10 @@ namespace xsk { namespace gsc { namespace iw6 {
|
|||||||
value.move< animtree_ptr > (std::move (that.value));
|
value.move< animtree_ptr > (std::move (that.value));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case symbol_kind::S_color: // color
|
||||||
|
value.move< color_ptr > (std::move (that.value));
|
||||||
|
break;
|
||||||
|
|
||||||
case symbol_kind::S_constant: // constant
|
case symbol_kind::S_constant: // constant
|
||||||
value.move< constant_ptr > (std::move (that.value));
|
value.move< constant_ptr > (std::move (that.value));
|
||||||
break;
|
break;
|
||||||
@ -1037,7 +1053,6 @@ namespace xsk { namespace gsc { namespace iw6 {
|
|||||||
value.move< file_ptr > (std::move (that.value));
|
value.move< file_ptr > (std::move (that.value));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case symbol_kind::S_neg_float: // neg_float
|
|
||||||
case symbol_kind::S_float: // float
|
case symbol_kind::S_float: // float
|
||||||
value.move< float_ptr > (std::move (that.value));
|
value.move< float_ptr > (std::move (that.value));
|
||||||
break;
|
break;
|
||||||
@ -1050,7 +1065,6 @@ namespace xsk { namespace gsc { namespace iw6 {
|
|||||||
value.move< include_ptr > (std::move (that.value));
|
value.move< include_ptr > (std::move (that.value));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case symbol_kind::S_neg_integer: // neg_integer
|
|
||||||
case symbol_kind::S_integer: // integer
|
case symbol_kind::S_integer: // integer
|
||||||
value.move< integer_ptr > (std::move (that.value));
|
value.move< integer_ptr > (std::move (that.value));
|
||||||
break;
|
break;
|
||||||
@ -1092,8 +1106,12 @@ namespace xsk { namespace gsc { namespace iw6 {
|
|||||||
case symbol_kind::S_NAME: // "identifier"
|
case symbol_kind::S_NAME: // "identifier"
|
||||||
case symbol_kind::S_STRING: // "string literal"
|
case symbol_kind::S_STRING: // "string literal"
|
||||||
case symbol_kind::S_ISTRING: // "localized string"
|
case symbol_kind::S_ISTRING: // "localized string"
|
||||||
|
case symbol_kind::S_COLOR: // "color"
|
||||||
case symbol_kind::S_FLOAT: // "float"
|
case symbol_kind::S_FLOAT: // "float"
|
||||||
case symbol_kind::S_INTEGER: // "int"
|
case symbol_kind::S_INT_DEC: // "int"
|
||||||
|
case symbol_kind::S_INT_OCT: // "octal int"
|
||||||
|
case symbol_kind::S_INT_BIN: // "binary int"
|
||||||
|
case symbol_kind::S_INT_HEX: // "hexadecimal int"
|
||||||
value.move< std::string > (std::move (that.value));
|
value.move< std::string > (std::move (that.value));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -1288,6 +1306,20 @@ namespace xsk { namespace gsc { namespace iw6 {
|
|||||||
{}
|
{}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if 201103L <= YY_CPLUSPLUS
|
||||||
|
basic_symbol (typename Base::kind_type t, color_ptr&& v, location_type&& l)
|
||||||
|
: Base (t)
|
||||||
|
, value (std::move (v))
|
||||||
|
, location (std::move (l))
|
||||||
|
{}
|
||||||
|
#else
|
||||||
|
basic_symbol (typename Base::kind_type t, const color_ptr& v, const location_type& l)
|
||||||
|
: Base (t)
|
||||||
|
, value (v)
|
||||||
|
, location (l)
|
||||||
|
{}
|
||||||
|
#endif
|
||||||
|
|
||||||
#if 201103L <= YY_CPLUSPLUS
|
#if 201103L <= YY_CPLUSPLUS
|
||||||
basic_symbol (typename Base::kind_type t, constant_ptr&& v, location_type&& l)
|
basic_symbol (typename Base::kind_type t, constant_ptr&& v, location_type&& l)
|
||||||
: Base (t)
|
: Base (t)
|
||||||
@ -2064,6 +2096,10 @@ switch (yykind)
|
|||||||
value.template destroy< animtree_ptr > ();
|
value.template destroy< animtree_ptr > ();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case symbol_kind::S_color: // color
|
||||||
|
value.template destroy< color_ptr > ();
|
||||||
|
break;
|
||||||
|
|
||||||
case symbol_kind::S_constant: // constant
|
case symbol_kind::S_constant: // constant
|
||||||
value.template destroy< constant_ptr > ();
|
value.template destroy< constant_ptr > ();
|
||||||
break;
|
break;
|
||||||
@ -2114,7 +2150,6 @@ switch (yykind)
|
|||||||
value.template destroy< file_ptr > ();
|
value.template destroy< file_ptr > ();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case symbol_kind::S_neg_float: // neg_float
|
|
||||||
case symbol_kind::S_float: // float
|
case symbol_kind::S_float: // float
|
||||||
value.template destroy< float_ptr > ();
|
value.template destroy< float_ptr > ();
|
||||||
break;
|
break;
|
||||||
@ -2127,7 +2162,6 @@ switch (yykind)
|
|||||||
value.template destroy< include_ptr > ();
|
value.template destroy< include_ptr > ();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case symbol_kind::S_neg_integer: // neg_integer
|
|
||||||
case symbol_kind::S_integer: // integer
|
case symbol_kind::S_integer: // integer
|
||||||
value.template destroy< integer_ptr > ();
|
value.template destroy< integer_ptr > ();
|
||||||
break;
|
break;
|
||||||
@ -2169,8 +2203,12 @@ switch (yykind)
|
|||||||
case symbol_kind::S_NAME: // "identifier"
|
case symbol_kind::S_NAME: // "identifier"
|
||||||
case symbol_kind::S_STRING: // "string literal"
|
case symbol_kind::S_STRING: // "string literal"
|
||||||
case symbol_kind::S_ISTRING: // "localized string"
|
case symbol_kind::S_ISTRING: // "localized string"
|
||||||
|
case symbol_kind::S_COLOR: // "color"
|
||||||
case symbol_kind::S_FLOAT: // "float"
|
case symbol_kind::S_FLOAT: // "float"
|
||||||
case symbol_kind::S_INTEGER: // "int"
|
case symbol_kind::S_INT_DEC: // "int"
|
||||||
|
case symbol_kind::S_INT_OCT: // "octal int"
|
||||||
|
case symbol_kind::S_INT_BIN: // "binary int"
|
||||||
|
case symbol_kind::S_INT_HEX: // "hexadecimal int"
|
||||||
value.template destroy< std::string > ();
|
value.template destroy< std::string > ();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -2406,7 +2444,7 @@ switch (yykind)
|
|||||||
: super_type(token_type (tok), v, l)
|
: super_type(token_type (tok), v, l)
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
IW6_ASSERT ((token::FILE <= tok && tok <= token::INTEGER));
|
IW6_ASSERT ((token::FILE <= tok && tok <= token::INT_HEX));
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -3776,6 +3814,21 @@ switch (yykind)
|
|||||||
return symbol_type (token::ISTRING, v, l);
|
return symbol_type (token::ISTRING, v, l);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
#if 201103L <= YY_CPLUSPLUS
|
||||||
|
static
|
||||||
|
symbol_type
|
||||||
|
make_COLOR (std::string v, location_type l)
|
||||||
|
{
|
||||||
|
return symbol_type (token::COLOR, std::move (v), std::move (l));
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
static
|
||||||
|
symbol_type
|
||||||
|
make_COLOR (const std::string& v, const location_type& l)
|
||||||
|
{
|
||||||
|
return symbol_type (token::COLOR, v, l);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
#if 201103L <= YY_CPLUSPLUS
|
#if 201103L <= YY_CPLUSPLUS
|
||||||
static
|
static
|
||||||
symbol_type
|
symbol_type
|
||||||
@ -3794,16 +3847,61 @@ switch (yykind)
|
|||||||
#if 201103L <= YY_CPLUSPLUS
|
#if 201103L <= YY_CPLUSPLUS
|
||||||
static
|
static
|
||||||
symbol_type
|
symbol_type
|
||||||
make_INTEGER (std::string v, location_type l)
|
make_INT_DEC (std::string v, location_type l)
|
||||||
{
|
{
|
||||||
return symbol_type (token::INTEGER, std::move (v), std::move (l));
|
return symbol_type (token::INT_DEC, std::move (v), std::move (l));
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
static
|
static
|
||||||
symbol_type
|
symbol_type
|
||||||
make_INTEGER (const std::string& v, const location_type& l)
|
make_INT_DEC (const std::string& v, const location_type& l)
|
||||||
{
|
{
|
||||||
return symbol_type (token::INTEGER, v, l);
|
return symbol_type (token::INT_DEC, v, l);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#if 201103L <= YY_CPLUSPLUS
|
||||||
|
static
|
||||||
|
symbol_type
|
||||||
|
make_INT_OCT (std::string v, location_type l)
|
||||||
|
{
|
||||||
|
return symbol_type (token::INT_OCT, std::move (v), std::move (l));
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
static
|
||||||
|
symbol_type
|
||||||
|
make_INT_OCT (const std::string& v, const location_type& l)
|
||||||
|
{
|
||||||
|
return symbol_type (token::INT_OCT, v, l);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#if 201103L <= YY_CPLUSPLUS
|
||||||
|
static
|
||||||
|
symbol_type
|
||||||
|
make_INT_BIN (std::string v, location_type l)
|
||||||
|
{
|
||||||
|
return symbol_type (token::INT_BIN, std::move (v), std::move (l));
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
static
|
||||||
|
symbol_type
|
||||||
|
make_INT_BIN (const std::string& v, const location_type& l)
|
||||||
|
{
|
||||||
|
return symbol_type (token::INT_BIN, v, l);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#if 201103L <= YY_CPLUSPLUS
|
||||||
|
static
|
||||||
|
symbol_type
|
||||||
|
make_INT_HEX (std::string v, location_type l)
|
||||||
|
{
|
||||||
|
return symbol_type (token::INT_HEX, std::move (v), std::move (l));
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
static
|
||||||
|
symbol_type
|
||||||
|
make_INT_HEX (const std::string& v, const location_type& l)
|
||||||
|
{
|
||||||
|
return symbol_type (token::INT_HEX, v, l);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#if 201103L <= YY_CPLUSPLUS
|
#if 201103L <= YY_CPLUSPLUS
|
||||||
@ -4285,8 +4383,8 @@ switch (yykind)
|
|||||||
/// Constants.
|
/// Constants.
|
||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
yylast_ = 1836, ///< Last index in yytable_.
|
yylast_ = 1811, ///< Last index in yytable_.
|
||||||
yynnts_ = 76, ///< Number of nonterminal symbols.
|
yynnts_ = 75, ///< Number of nonterminal symbols.
|
||||||
yyfinal_ = 15 ///< Termination state number.
|
yyfinal_ = 15 ///< Termination state number.
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -4326,6 +4424,10 @@ switch (yykind)
|
|||||||
value.copy< animtree_ptr > (YY_MOVE (that.value));
|
value.copy< animtree_ptr > (YY_MOVE (that.value));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case symbol_kind::S_color: // color
|
||||||
|
value.copy< color_ptr > (YY_MOVE (that.value));
|
||||||
|
break;
|
||||||
|
|
||||||
case symbol_kind::S_constant: // constant
|
case symbol_kind::S_constant: // constant
|
||||||
value.copy< constant_ptr > (YY_MOVE (that.value));
|
value.copy< constant_ptr > (YY_MOVE (that.value));
|
||||||
break;
|
break;
|
||||||
@ -4376,7 +4478,6 @@ switch (yykind)
|
|||||||
value.copy< file_ptr > (YY_MOVE (that.value));
|
value.copy< file_ptr > (YY_MOVE (that.value));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case symbol_kind::S_neg_float: // neg_float
|
|
||||||
case symbol_kind::S_float: // float
|
case symbol_kind::S_float: // float
|
||||||
value.copy< float_ptr > (YY_MOVE (that.value));
|
value.copy< float_ptr > (YY_MOVE (that.value));
|
||||||
break;
|
break;
|
||||||
@ -4389,7 +4490,6 @@ switch (yykind)
|
|||||||
value.copy< include_ptr > (YY_MOVE (that.value));
|
value.copy< include_ptr > (YY_MOVE (that.value));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case symbol_kind::S_neg_integer: // neg_integer
|
|
||||||
case symbol_kind::S_integer: // integer
|
case symbol_kind::S_integer: // integer
|
||||||
value.copy< integer_ptr > (YY_MOVE (that.value));
|
value.copy< integer_ptr > (YY_MOVE (that.value));
|
||||||
break;
|
break;
|
||||||
@ -4431,8 +4531,12 @@ switch (yykind)
|
|||||||
case symbol_kind::S_NAME: // "identifier"
|
case symbol_kind::S_NAME: // "identifier"
|
||||||
case symbol_kind::S_STRING: // "string literal"
|
case symbol_kind::S_STRING: // "string literal"
|
||||||
case symbol_kind::S_ISTRING: // "localized string"
|
case symbol_kind::S_ISTRING: // "localized string"
|
||||||
|
case symbol_kind::S_COLOR: // "color"
|
||||||
case symbol_kind::S_FLOAT: // "float"
|
case symbol_kind::S_FLOAT: // "float"
|
||||||
case symbol_kind::S_INTEGER: // "int"
|
case symbol_kind::S_INT_DEC: // "int"
|
||||||
|
case symbol_kind::S_INT_OCT: // "octal int"
|
||||||
|
case symbol_kind::S_INT_BIN: // "binary int"
|
||||||
|
case symbol_kind::S_INT_HEX: // "hexadecimal int"
|
||||||
value.copy< std::string > (YY_MOVE (that.value));
|
value.copy< std::string > (YY_MOVE (that.value));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -4603,6 +4707,10 @@ switch (yykind)
|
|||||||
value.move< animtree_ptr > (YY_MOVE (s.value));
|
value.move< animtree_ptr > (YY_MOVE (s.value));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case symbol_kind::S_color: // color
|
||||||
|
value.move< color_ptr > (YY_MOVE (s.value));
|
||||||
|
break;
|
||||||
|
|
||||||
case symbol_kind::S_constant: // constant
|
case symbol_kind::S_constant: // constant
|
||||||
value.move< constant_ptr > (YY_MOVE (s.value));
|
value.move< constant_ptr > (YY_MOVE (s.value));
|
||||||
break;
|
break;
|
||||||
@ -4653,7 +4761,6 @@ switch (yykind)
|
|||||||
value.move< file_ptr > (YY_MOVE (s.value));
|
value.move< file_ptr > (YY_MOVE (s.value));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case symbol_kind::S_neg_float: // neg_float
|
|
||||||
case symbol_kind::S_float: // float
|
case symbol_kind::S_float: // float
|
||||||
value.move< float_ptr > (YY_MOVE (s.value));
|
value.move< float_ptr > (YY_MOVE (s.value));
|
||||||
break;
|
break;
|
||||||
@ -4666,7 +4773,6 @@ switch (yykind)
|
|||||||
value.move< include_ptr > (YY_MOVE (s.value));
|
value.move< include_ptr > (YY_MOVE (s.value));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case symbol_kind::S_neg_integer: // neg_integer
|
|
||||||
case symbol_kind::S_integer: // integer
|
case symbol_kind::S_integer: // integer
|
||||||
value.move< integer_ptr > (YY_MOVE (s.value));
|
value.move< integer_ptr > (YY_MOVE (s.value));
|
||||||
break;
|
break;
|
||||||
@ -4708,8 +4814,12 @@ switch (yykind)
|
|||||||
case symbol_kind::S_NAME: // "identifier"
|
case symbol_kind::S_NAME: // "identifier"
|
||||||
case symbol_kind::S_STRING: // "string literal"
|
case symbol_kind::S_STRING: // "string literal"
|
||||||
case symbol_kind::S_ISTRING: // "localized string"
|
case symbol_kind::S_ISTRING: // "localized string"
|
||||||
|
case symbol_kind::S_COLOR: // "color"
|
||||||
case symbol_kind::S_FLOAT: // "float"
|
case symbol_kind::S_FLOAT: // "float"
|
||||||
case symbol_kind::S_INTEGER: // "int"
|
case symbol_kind::S_INT_DEC: // "int"
|
||||||
|
case symbol_kind::S_INT_OCT: // "octal int"
|
||||||
|
case symbol_kind::S_INT_BIN: // "binary int"
|
||||||
|
case symbol_kind::S_INT_HEX: // "hexadecimal int"
|
||||||
value.move< std::string > (YY_MOVE (s.value));
|
value.move< std::string > (YY_MOVE (s.value));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -4902,7 +5012,7 @@ switch (yykind)
|
|||||||
|
|
||||||
#line 13 "parser.ypp"
|
#line 13 "parser.ypp"
|
||||||
} } } // xsk::gsc::iw6
|
} } } // xsk::gsc::iw6
|
||||||
#line 4906 "parser.hpp"
|
#line 5016 "parser.hpp"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -785,6 +785,7 @@ void compiler::emit_expr(const gsc::context_ptr& ctx, const gsc::expr_ptr& expr)
|
|||||||
case gsc::node_t::data_name: emit_local_variable(ctx, expr.as_name); break;
|
case gsc::node_t::data_name: emit_local_variable(ctx, expr.as_name); break;
|
||||||
case gsc::node_t::data_istring: emit_istring(ctx, expr.as_istring); break;
|
case gsc::node_t::data_istring: emit_istring(ctx, expr.as_istring); break;
|
||||||
case gsc::node_t::data_string: emit_string(ctx, expr.as_string); break;
|
case gsc::node_t::data_string: emit_string(ctx, expr.as_string); break;
|
||||||
|
case gsc::node_t::data_color: emit_color(ctx, expr.as_color); break;
|
||||||
case gsc::node_t::data_vector: emit_vector(ctx, expr.as_vector); break;
|
case gsc::node_t::data_vector: emit_vector(ctx, expr.as_vector); break;
|
||||||
case gsc::node_t::data_float: emit_float(ctx, expr.as_float); break;
|
case gsc::node_t::data_float: emit_float(ctx, expr.as_float); break;
|
||||||
case gsc::node_t::data_integer: emit_integer(ctx, expr.as_integer); break;
|
case gsc::node_t::data_integer: emit_integer(ctx, expr.as_integer); break;
|
||||||
@ -1606,6 +1607,30 @@ void compiler::emit_string(const gsc::context_ptr& ctx, const gsc::string_ptr& s
|
|||||||
emit_opcode(ctx, opcode::OP_GetString, str->value);
|
emit_opcode(ctx, opcode::OP_GetString, str->value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void compiler::emit_color(const gsc::context_ptr& ctx, const gsc::color_ptr& color)
|
||||||
|
{
|
||||||
|
std::vector<std::string> data;
|
||||||
|
std::string x, y, z;
|
||||||
|
|
||||||
|
if(color->value.size() == 3)
|
||||||
|
{
|
||||||
|
x = "0x" + color->value.substr(0, 1) + color->value.substr(0, 1);
|
||||||
|
y = "0x" + color->value.substr(1, 1) + color->value.substr(1, 1);
|
||||||
|
z = "0x" + color->value.substr(2, 1) + color->value.substr(2, 1);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
x = "0x" + color->value.substr(0, 2);
|
||||||
|
y = "0x" + color->value.substr(2, 2);
|
||||||
|
z = "0x" + color->value.substr(4, 2);
|
||||||
|
}
|
||||||
|
|
||||||
|
data.push_back(gsc::utils::string::hex_to_dec(x.data()));
|
||||||
|
data.push_back(gsc::utils::string::hex_to_dec(y.data()));
|
||||||
|
data.push_back(gsc::utils::string::hex_to_dec(z.data()));
|
||||||
|
emit_opcode(ctx, opcode::OP_GetVector, data);
|
||||||
|
}
|
||||||
|
|
||||||
void compiler::emit_vector(const gsc::context_ptr& ctx, const gsc::vector_ptr& vec)
|
void compiler::emit_vector(const gsc::context_ptr& ctx, const gsc::vector_ptr& vec)
|
||||||
{
|
{
|
||||||
std::vector<std::string> data;
|
std::vector<std::string> data;
|
||||||
|
@ -101,6 +101,7 @@ private:
|
|||||||
void emit_animation(const gsc::context_ptr& ctx, const gsc::animation_ptr& animation);
|
void emit_animation(const gsc::context_ptr& ctx, const gsc::animation_ptr& animation);
|
||||||
void emit_istring(const gsc::context_ptr& ctx, const gsc::istring_ptr& str);
|
void emit_istring(const gsc::context_ptr& ctx, const gsc::istring_ptr& str);
|
||||||
void emit_string(const gsc::context_ptr& ctx, const gsc::string_ptr& str);
|
void emit_string(const gsc::context_ptr& ctx, const gsc::string_ptr& str);
|
||||||
|
void emit_color(const gsc::context_ptr& ctx, const gsc::color_ptr& color);
|
||||||
void emit_vector(const gsc::context_ptr& ctx, const gsc::vector_ptr& vec);
|
void emit_vector(const gsc::context_ptr& ctx, const gsc::vector_ptr& vec);
|
||||||
void emit_float(const gsc::context_ptr& ctx, const gsc::float_ptr& num);
|
void emit_float(const gsc::context_ptr& ctx, const gsc::float_ptr& num);
|
||||||
void emit_integer(const gsc::context_ptr& ctx, const gsc::integer_ptr& num);
|
void emit_integer(const gsc::context_ptr& ctx, const gsc::integer_ptr& num);
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -700,7 +700,7 @@ extern int yylex (yyscan_t yyscanner);
|
|||||||
#undef yyTABLES_NAME
|
#undef yyTABLES_NAME
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#line 149 "lexer.lpp"
|
#line 157 "lexer.lpp"
|
||||||
|
|
||||||
|
|
||||||
#line 706 "lexer.hpp"
|
#line 706 "lexer.hpp"
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -417,31 +417,34 @@ namespace xsk { namespace gsc { namespace iw7 {
|
|||||||
// animtree
|
// animtree
|
||||||
char dummy3[sizeof (animtree_ptr)];
|
char dummy3[sizeof (animtree_ptr)];
|
||||||
|
|
||||||
|
// color
|
||||||
|
char dummy4[sizeof (color_ptr)];
|
||||||
|
|
||||||
// constant
|
// constant
|
||||||
char dummy4[sizeof (constant_ptr)];
|
char dummy5[sizeof (constant_ptr)];
|
||||||
|
|
||||||
// define
|
// define
|
||||||
char dummy5[sizeof (define_ptr)];
|
char dummy6[sizeof (define_ptr)];
|
||||||
|
|
||||||
// empty_array
|
// empty_array
|
||||||
char dummy6[sizeof (empty_array_ptr)];
|
char dummy7[sizeof (empty_array_ptr)];
|
||||||
|
|
||||||
// expr_arguments
|
// expr_arguments
|
||||||
// expr_arguments_filled
|
// expr_arguments_filled
|
||||||
// expr_arguments_empty
|
// expr_arguments_empty
|
||||||
char dummy7[sizeof (expr_arguments_ptr)];
|
char dummy8[sizeof (expr_arguments_ptr)];
|
||||||
|
|
||||||
// expr_assign
|
// expr_assign
|
||||||
char dummy8[sizeof (expr_assign_ptr)];
|
char dummy9[sizeof (expr_assign_ptr)];
|
||||||
|
|
||||||
// expr_call
|
// expr_call
|
||||||
// expr_call_thread
|
// expr_call_thread
|
||||||
// expr_call_childthread
|
// expr_call_childthread
|
||||||
char dummy9[sizeof (expr_call_ptr)];
|
char dummy10[sizeof (expr_call_ptr)];
|
||||||
|
|
||||||
// expr_call_function
|
// expr_call_function
|
||||||
// expr_call_pointer
|
// expr_call_pointer
|
||||||
char dummy10[sizeof (expr_call_type_ptr)];
|
char dummy11[sizeof (expr_call_type_ptr)];
|
||||||
|
|
||||||
// for_expr
|
// for_expr
|
||||||
// expr
|
// expr
|
||||||
@ -449,36 +452,34 @@ namespace xsk { namespace gsc { namespace iw7 {
|
|||||||
// expr_ternary
|
// expr_ternary
|
||||||
// expr_binary
|
// expr_binary
|
||||||
// expr_primitive
|
// expr_primitive
|
||||||
char dummy11[sizeof (expr_ptr)];
|
char dummy12[sizeof (expr_ptr)];
|
||||||
|
|
||||||
// false
|
// false
|
||||||
char dummy12[sizeof (false_ptr)];
|
char dummy13[sizeof (false_ptr)];
|
||||||
|
|
||||||
// file
|
// file
|
||||||
char dummy13[sizeof (file_ptr)];
|
char dummy14[sizeof (file_ptr)];
|
||||||
|
|
||||||
// neg_float
|
|
||||||
// float
|
// float
|
||||||
char dummy14[sizeof (float_ptr)];
|
char dummy15[sizeof (float_ptr)];
|
||||||
|
|
||||||
// game
|
// game
|
||||||
char dummy15[sizeof (game_ptr)];
|
char dummy16[sizeof (game_ptr)];
|
||||||
|
|
||||||
// include
|
// include
|
||||||
char dummy16[sizeof (include_ptr)];
|
char dummy17[sizeof (include_ptr)];
|
||||||
|
|
||||||
// neg_integer
|
|
||||||
// integer
|
// integer
|
||||||
char dummy17[sizeof (integer_ptr)];
|
char dummy18[sizeof (integer_ptr)];
|
||||||
|
|
||||||
// istring
|
// istring
|
||||||
char dummy18[sizeof (istring_ptr)];
|
char dummy19[sizeof (istring_ptr)];
|
||||||
|
|
||||||
// level
|
// level
|
||||||
char dummy19[sizeof (level_ptr)];
|
char dummy20[sizeof (level_ptr)];
|
||||||
|
|
||||||
// name
|
// name
|
||||||
char dummy20[sizeof (name_ptr)];
|
char dummy21[sizeof (name_ptr)];
|
||||||
|
|
||||||
// expr_function
|
// expr_function
|
||||||
// expr_add_array
|
// expr_add_array
|
||||||
@ -486,119 +487,123 @@ namespace xsk { namespace gsc { namespace iw7 {
|
|||||||
// expr_field
|
// expr_field
|
||||||
// expr_size
|
// expr_size
|
||||||
// object
|
// object
|
||||||
char dummy21[sizeof (node_ptr)];
|
char dummy22[sizeof (node_ptr)];
|
||||||
|
|
||||||
// parameters
|
// parameters
|
||||||
char dummy22[sizeof (parameters_ptr)];
|
char dummy23[sizeof (parameters_ptr)];
|
||||||
|
|
||||||
// program
|
// program
|
||||||
char dummy23[sizeof (program_ptr)];
|
char dummy24[sizeof (program_ptr)];
|
||||||
|
|
||||||
// self
|
// self
|
||||||
char dummy24[sizeof (self_ptr)];
|
char dummy25[sizeof (self_ptr)];
|
||||||
|
|
||||||
// "file path"
|
// "file path"
|
||||||
// "identifier"
|
// "identifier"
|
||||||
// "string literal"
|
// "string literal"
|
||||||
// "localized string"
|
// "localized string"
|
||||||
|
// "color"
|
||||||
// "float"
|
// "float"
|
||||||
// "int"
|
// "int"
|
||||||
char dummy25[sizeof (std::string)];
|
// "octal int"
|
||||||
|
// "binary int"
|
||||||
|
// "hexadecimal int"
|
||||||
|
char dummy26[sizeof (std::string)];
|
||||||
|
|
||||||
// stmt_assign
|
// stmt_assign
|
||||||
char dummy26[sizeof (stmt_assign_ptr)];
|
char dummy27[sizeof (stmt_assign_ptr)];
|
||||||
|
|
||||||
// stmt_break
|
// stmt_break
|
||||||
char dummy27[sizeof (stmt_break_ptr)];
|
char dummy28[sizeof (stmt_break_ptr)];
|
||||||
|
|
||||||
// stmt_breakpoint
|
// stmt_breakpoint
|
||||||
char dummy28[sizeof (stmt_breakpoint_ptr)];
|
char dummy29[sizeof (stmt_breakpoint_ptr)];
|
||||||
|
|
||||||
// stmt_call
|
// stmt_call
|
||||||
char dummy29[sizeof (stmt_call_ptr)];
|
char dummy30[sizeof (stmt_call_ptr)];
|
||||||
|
|
||||||
// stmt_case
|
// stmt_case
|
||||||
char dummy30[sizeof (stmt_case_ptr)];
|
char dummy31[sizeof (stmt_case_ptr)];
|
||||||
|
|
||||||
// stmt_continue
|
// stmt_continue
|
||||||
char dummy31[sizeof (stmt_continue_ptr)];
|
char dummy32[sizeof (stmt_continue_ptr)];
|
||||||
|
|
||||||
// stmt_default
|
// stmt_default
|
||||||
char dummy32[sizeof (stmt_default_ptr)];
|
char dummy33[sizeof (stmt_default_ptr)];
|
||||||
|
|
||||||
// stmt_endon
|
// stmt_endon
|
||||||
char dummy33[sizeof (stmt_endon_ptr)];
|
char dummy34[sizeof (stmt_endon_ptr)];
|
||||||
|
|
||||||
// stmt_for
|
// stmt_for
|
||||||
char dummy34[sizeof (stmt_for_ptr)];
|
char dummy35[sizeof (stmt_for_ptr)];
|
||||||
|
|
||||||
// stmt_foreach
|
// stmt_foreach
|
||||||
char dummy35[sizeof (stmt_foreach_ptr)];
|
char dummy36[sizeof (stmt_foreach_ptr)];
|
||||||
|
|
||||||
// stmt_if
|
// stmt_if
|
||||||
char dummy36[sizeof (stmt_if_ptr)];
|
char dummy37[sizeof (stmt_if_ptr)];
|
||||||
|
|
||||||
// stmt_ifelse
|
// stmt_ifelse
|
||||||
char dummy37[sizeof (stmt_ifelse_ptr)];
|
char dummy38[sizeof (stmt_ifelse_ptr)];
|
||||||
|
|
||||||
// stmt_block
|
// stmt_block
|
||||||
// stmt_list
|
// stmt_list
|
||||||
char dummy38[sizeof (stmt_list_ptr)];
|
char dummy39[sizeof (stmt_list_ptr)];
|
||||||
|
|
||||||
// stmt_notify
|
// stmt_notify
|
||||||
char dummy39[sizeof (stmt_notify_ptr)];
|
char dummy40[sizeof (stmt_notify_ptr)];
|
||||||
|
|
||||||
// stmt_prof_begin
|
// stmt_prof_begin
|
||||||
char dummy40[sizeof (stmt_prof_begin_ptr)];
|
char dummy41[sizeof (stmt_prof_begin_ptr)];
|
||||||
|
|
||||||
// stmt_prof_end
|
// stmt_prof_end
|
||||||
char dummy41[sizeof (stmt_prof_end_ptr)];
|
char dummy42[sizeof (stmt_prof_end_ptr)];
|
||||||
|
|
||||||
// stmt
|
// stmt
|
||||||
// for_stmt
|
// for_stmt
|
||||||
char dummy42[sizeof (stmt_ptr)];
|
char dummy43[sizeof (stmt_ptr)];
|
||||||
|
|
||||||
// stmt_return
|
// stmt_return
|
||||||
char dummy43[sizeof (stmt_return_ptr)];
|
char dummy44[sizeof (stmt_return_ptr)];
|
||||||
|
|
||||||
// stmt_switch
|
// stmt_switch
|
||||||
char dummy44[sizeof (stmt_switch_ptr)];
|
char dummy45[sizeof (stmt_switch_ptr)];
|
||||||
|
|
||||||
// stmt_wait
|
// stmt_wait
|
||||||
char dummy45[sizeof (stmt_wait_ptr)];
|
char dummy46[sizeof (stmt_wait_ptr)];
|
||||||
|
|
||||||
// stmt_waittill
|
// stmt_waittill
|
||||||
char dummy46[sizeof (stmt_waittill_ptr)];
|
char dummy47[sizeof (stmt_waittill_ptr)];
|
||||||
|
|
||||||
// stmt_waittillframeend
|
// stmt_waittillframeend
|
||||||
char dummy47[sizeof (stmt_waittillframeend_ptr)];
|
char dummy48[sizeof (stmt_waittillframeend_ptr)];
|
||||||
|
|
||||||
// stmt_waittillmatch
|
// stmt_waittillmatch
|
||||||
char dummy48[sizeof (stmt_waittillmatch_ptr)];
|
char dummy49[sizeof (stmt_waittillmatch_ptr)];
|
||||||
|
|
||||||
// stmt_while
|
// stmt_while
|
||||||
char dummy49[sizeof (stmt_while_ptr)];
|
char dummy50[sizeof (stmt_while_ptr)];
|
||||||
|
|
||||||
// string
|
// string
|
||||||
char dummy50[sizeof (string_ptr)];
|
char dummy51[sizeof (string_ptr)];
|
||||||
|
|
||||||
// thisthread
|
// thisthread
|
||||||
char dummy51[sizeof (thisthread_ptr)];
|
char dummy52[sizeof (thisthread_ptr)];
|
||||||
|
|
||||||
// thread
|
// thread
|
||||||
char dummy52[sizeof (thread_ptr)];
|
char dummy53[sizeof (thread_ptr)];
|
||||||
|
|
||||||
// true
|
// true
|
||||||
char dummy53[sizeof (true_ptr)];
|
char dummy54[sizeof (true_ptr)];
|
||||||
|
|
||||||
// undefined
|
// undefined
|
||||||
char dummy54[sizeof (undefined_ptr)];
|
char dummy55[sizeof (undefined_ptr)];
|
||||||
|
|
||||||
// usingtree
|
// usingtree
|
||||||
char dummy55[sizeof (usingtree_ptr)];
|
char dummy56[sizeof (usingtree_ptr)];
|
||||||
|
|
||||||
// vector
|
// vector
|
||||||
char dummy56[sizeof (vector_ptr)];
|
char dummy57[sizeof (vector_ptr)];
|
||||||
};
|
};
|
||||||
|
|
||||||
/// The size of the largest semantic type.
|
/// The size of the largest semantic type.
|
||||||
@ -735,17 +740,21 @@ namespace xsk { namespace gsc { namespace iw7 {
|
|||||||
NAME = 85, // "identifier"
|
NAME = 85, // "identifier"
|
||||||
STRING = 86, // "string literal"
|
STRING = 86, // "string literal"
|
||||||
ISTRING = 87, // "localized string"
|
ISTRING = 87, // "localized string"
|
||||||
FLOAT = 88, // "float"
|
COLOR = 88, // "color"
|
||||||
INTEGER = 89, // "int"
|
FLOAT = 89, // "float"
|
||||||
ADD_ARRAY = 90, // ADD_ARRAY
|
INT_DEC = 90, // "int"
|
||||||
THEN = 91, // THEN
|
INT_OCT = 91, // "octal int"
|
||||||
TERN = 92, // TERN
|
INT_BIN = 92, // "binary int"
|
||||||
NEG = 93, // NEG
|
INT_HEX = 93, // "hexadecimal int"
|
||||||
ANIMREF = 94, // ANIMREF
|
ADD_ARRAY = 94, // ADD_ARRAY
|
||||||
PREINC = 95, // PREINC
|
THEN = 95, // THEN
|
||||||
PREDEC = 96, // PREDEC
|
TERN = 96, // TERN
|
||||||
POSTINC = 97, // POSTINC
|
NEG = 97, // NEG
|
||||||
POSTDEC = 98 // POSTDEC
|
ANIMREF = 98, // ANIMREF
|
||||||
|
PREINC = 99, // PREINC
|
||||||
|
PREDEC = 100, // PREDEC
|
||||||
|
POSTINC = 101, // POSTINC
|
||||||
|
POSTDEC = 102 // POSTDEC
|
||||||
};
|
};
|
||||||
/// Backward compatibility alias (Bison 3.6).
|
/// Backward compatibility alias (Bison 3.6).
|
||||||
typedef token_kind_type yytokentype;
|
typedef token_kind_type yytokentype;
|
||||||
@ -762,7 +771,7 @@ namespace xsk { namespace gsc { namespace iw7 {
|
|||||||
{
|
{
|
||||||
enum symbol_kind_type
|
enum symbol_kind_type
|
||||||
{
|
{
|
||||||
YYNTOKENS = 99, ///< Number of tokens.
|
YYNTOKENS = 103, ///< Number of tokens.
|
||||||
S_YYEMPTY = -2,
|
S_YYEMPTY = -2,
|
||||||
S_YYEOF = 0, // "end of file"
|
S_YYEOF = 0, // "end of file"
|
||||||
S_YYerror = 1, // error
|
S_YYerror = 1, // error
|
||||||
@ -852,93 +861,96 @@ namespace xsk { namespace gsc { namespace iw7 {
|
|||||||
S_NAME = 85, // "identifier"
|
S_NAME = 85, // "identifier"
|
||||||
S_STRING = 86, // "string literal"
|
S_STRING = 86, // "string literal"
|
||||||
S_ISTRING = 87, // "localized string"
|
S_ISTRING = 87, // "localized string"
|
||||||
S_FLOAT = 88, // "float"
|
S_COLOR = 88, // "color"
|
||||||
S_INTEGER = 89, // "int"
|
S_FLOAT = 89, // "float"
|
||||||
S_ADD_ARRAY = 90, // ADD_ARRAY
|
S_INT_DEC = 90, // "int"
|
||||||
S_THEN = 91, // THEN
|
S_INT_OCT = 91, // "octal int"
|
||||||
S_TERN = 92, // TERN
|
S_INT_BIN = 92, // "binary int"
|
||||||
S_NEG = 93, // NEG
|
S_INT_HEX = 93, // "hexadecimal int"
|
||||||
S_ANIMREF = 94, // ANIMREF
|
S_ADD_ARRAY = 94, // ADD_ARRAY
|
||||||
S_PREINC = 95, // PREINC
|
S_THEN = 95, // THEN
|
||||||
S_PREDEC = 96, // PREDEC
|
S_TERN = 96, // TERN
|
||||||
S_POSTINC = 97, // POSTINC
|
S_NEG = 97, // NEG
|
||||||
S_POSTDEC = 98, // POSTDEC
|
S_ANIMREF = 98, // ANIMREF
|
||||||
S_YYACCEPT = 99, // $accept
|
S_PREINC = 99, // PREINC
|
||||||
S_root = 100, // root
|
S_PREDEC = 100, // PREDEC
|
||||||
S_program = 101, // program
|
S_POSTINC = 101, // POSTINC
|
||||||
S_include = 102, // include
|
S_POSTDEC = 102, // POSTDEC
|
||||||
S_define = 103, // define
|
S_YYACCEPT = 103, // $accept
|
||||||
S_usingtree = 104, // usingtree
|
S_root = 104, // root
|
||||||
S_constant = 105, // constant
|
S_program = 105, // program
|
||||||
S_thread = 106, // thread
|
S_include = 106, // include
|
||||||
S_parameters = 107, // parameters
|
S_define = 107, // define
|
||||||
S_stmt = 108, // stmt
|
S_usingtree = 108, // usingtree
|
||||||
S_stmt_block = 109, // stmt_block
|
S_constant = 109, // constant
|
||||||
S_stmt_list = 110, // stmt_list
|
S_thread = 110, // thread
|
||||||
S_stmt_call = 111, // stmt_call
|
S_parameters = 111, // parameters
|
||||||
S_stmt_assign = 112, // stmt_assign
|
S_stmt = 112, // stmt
|
||||||
S_stmt_endon = 113, // stmt_endon
|
S_stmt_block = 113, // stmt_block
|
||||||
S_stmt_notify = 114, // stmt_notify
|
S_stmt_list = 114, // stmt_list
|
||||||
S_stmt_wait = 115, // stmt_wait
|
S_stmt_call = 115, // stmt_call
|
||||||
S_stmt_waittill = 116, // stmt_waittill
|
S_stmt_assign = 116, // stmt_assign
|
||||||
S_stmt_waittillmatch = 117, // stmt_waittillmatch
|
S_stmt_endon = 117, // stmt_endon
|
||||||
S_stmt_waittillframeend = 118, // stmt_waittillframeend
|
S_stmt_notify = 118, // stmt_notify
|
||||||
S_stmt_if = 119, // stmt_if
|
S_stmt_wait = 119, // stmt_wait
|
||||||
S_stmt_ifelse = 120, // stmt_ifelse
|
S_stmt_waittill = 120, // stmt_waittill
|
||||||
S_stmt_while = 121, // stmt_while
|
S_stmt_waittillmatch = 121, // stmt_waittillmatch
|
||||||
S_stmt_for = 122, // stmt_for
|
S_stmt_waittillframeend = 122, // stmt_waittillframeend
|
||||||
S_stmt_foreach = 123, // stmt_foreach
|
S_stmt_if = 123, // stmt_if
|
||||||
S_stmt_switch = 124, // stmt_switch
|
S_stmt_ifelse = 124, // stmt_ifelse
|
||||||
S_stmt_case = 125, // stmt_case
|
S_stmt_while = 125, // stmt_while
|
||||||
S_stmt_default = 126, // stmt_default
|
S_stmt_for = 126, // stmt_for
|
||||||
S_stmt_break = 127, // stmt_break
|
S_stmt_foreach = 127, // stmt_foreach
|
||||||
S_stmt_continue = 128, // stmt_continue
|
S_stmt_switch = 128, // stmt_switch
|
||||||
S_stmt_return = 129, // stmt_return
|
S_stmt_case = 129, // stmt_case
|
||||||
S_stmt_breakpoint = 130, // stmt_breakpoint
|
S_stmt_default = 130, // stmt_default
|
||||||
S_stmt_prof_begin = 131, // stmt_prof_begin
|
S_stmt_break = 131, // stmt_break
|
||||||
S_stmt_prof_end = 132, // stmt_prof_end
|
S_stmt_continue = 132, // stmt_continue
|
||||||
S_for_stmt = 133, // for_stmt
|
S_stmt_return = 133, // stmt_return
|
||||||
S_for_expr = 134, // for_expr
|
S_stmt_breakpoint = 134, // stmt_breakpoint
|
||||||
S_expr = 135, // expr
|
S_stmt_prof_begin = 135, // stmt_prof_begin
|
||||||
S_expr_assign = 136, // expr_assign
|
S_stmt_prof_end = 136, // stmt_prof_end
|
||||||
S_expr_compare = 137, // expr_compare
|
S_for_stmt = 137, // for_stmt
|
||||||
S_expr_ternary = 138, // expr_ternary
|
S_for_expr = 138, // for_expr
|
||||||
S_expr_binary = 139, // expr_binary
|
S_expr = 139, // expr
|
||||||
S_expr_primitive = 140, // expr_primitive
|
S_expr_assign = 140, // expr_assign
|
||||||
S_expr_call = 141, // expr_call
|
S_expr_compare = 141, // expr_compare
|
||||||
S_expr_call_thread = 142, // expr_call_thread
|
S_expr_ternary = 142, // expr_ternary
|
||||||
S_expr_call_childthread = 143, // expr_call_childthread
|
S_expr_binary = 143, // expr_binary
|
||||||
S_expr_call_function = 144, // expr_call_function
|
S_expr_primitive = 144, // expr_primitive
|
||||||
S_expr_call_pointer = 145, // expr_call_pointer
|
S_expr_call = 145, // expr_call
|
||||||
S_expr_arguments = 146, // expr_arguments
|
S_expr_call_thread = 146, // expr_call_thread
|
||||||
S_expr_arguments_filled = 147, // expr_arguments_filled
|
S_expr_call_childthread = 147, // expr_call_childthread
|
||||||
S_expr_arguments_empty = 148, // expr_arguments_empty
|
S_expr_call_function = 148, // expr_call_function
|
||||||
S_expr_function = 149, // expr_function
|
S_expr_call_pointer = 149, // expr_call_pointer
|
||||||
S_expr_add_array = 150, // expr_add_array
|
S_expr_arguments = 150, // expr_arguments
|
||||||
S_expr_array = 151, // expr_array
|
S_expr_arguments_filled = 151, // expr_arguments_filled
|
||||||
S_expr_field = 152, // expr_field
|
S_expr_arguments_empty = 152, // expr_arguments_empty
|
||||||
S_expr_size = 153, // expr_size
|
S_expr_function = 153, // expr_function
|
||||||
S_object = 154, // object
|
S_expr_add_array = 154, // expr_add_array
|
||||||
S_thisthread = 155, // thisthread
|
S_expr_array = 155, // expr_array
|
||||||
S_empty_array = 156, // empty_array
|
S_expr_field = 156, // expr_field
|
||||||
S_undefined = 157, // undefined
|
S_expr_size = 157, // expr_size
|
||||||
S_game = 158, // game
|
S_object = 158, // object
|
||||||
S_self = 159, // self
|
S_float = 159, // float
|
||||||
S_anim = 160, // anim
|
S_integer = 160, // integer
|
||||||
S_level = 161, // level
|
S_thisthread = 161, // thisthread
|
||||||
S_animation = 162, // animation
|
S_empty_array = 162, // empty_array
|
||||||
S_animtree = 163, // animtree
|
S_undefined = 163, // undefined
|
||||||
S_name = 164, // name
|
S_game = 164, // game
|
||||||
S_file = 165, // file
|
S_self = 165, // self
|
||||||
S_istring = 166, // istring
|
S_anim = 166, // anim
|
||||||
S_string = 167, // string
|
S_level = 167, // level
|
||||||
S_vector = 168, // vector
|
S_animation = 168, // animation
|
||||||
S_neg_float = 169, // neg_float
|
S_animtree = 169, // animtree
|
||||||
S_neg_integer = 170, // neg_integer
|
S_name = 170, // name
|
||||||
S_float = 171, // float
|
S_file = 171, // file
|
||||||
S_integer = 172, // integer
|
S_istring = 172, // istring
|
||||||
S_false = 173, // false
|
S_string = 173, // string
|
||||||
S_true = 174 // true
|
S_color = 174, // color
|
||||||
|
S_vector = 175, // vector
|
||||||
|
S_false = 176, // false
|
||||||
|
S_true = 177 // true
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -987,6 +999,10 @@ namespace xsk { namespace gsc { namespace iw7 {
|
|||||||
value.move< animtree_ptr > (std::move (that.value));
|
value.move< animtree_ptr > (std::move (that.value));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case symbol_kind::S_color: // color
|
||||||
|
value.move< color_ptr > (std::move (that.value));
|
||||||
|
break;
|
||||||
|
|
||||||
case symbol_kind::S_constant: // constant
|
case symbol_kind::S_constant: // constant
|
||||||
value.move< constant_ptr > (std::move (that.value));
|
value.move< constant_ptr > (std::move (that.value));
|
||||||
break;
|
break;
|
||||||
@ -1037,7 +1053,6 @@ namespace xsk { namespace gsc { namespace iw7 {
|
|||||||
value.move< file_ptr > (std::move (that.value));
|
value.move< file_ptr > (std::move (that.value));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case symbol_kind::S_neg_float: // neg_float
|
|
||||||
case symbol_kind::S_float: // float
|
case symbol_kind::S_float: // float
|
||||||
value.move< float_ptr > (std::move (that.value));
|
value.move< float_ptr > (std::move (that.value));
|
||||||
break;
|
break;
|
||||||
@ -1050,7 +1065,6 @@ namespace xsk { namespace gsc { namespace iw7 {
|
|||||||
value.move< include_ptr > (std::move (that.value));
|
value.move< include_ptr > (std::move (that.value));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case symbol_kind::S_neg_integer: // neg_integer
|
|
||||||
case symbol_kind::S_integer: // integer
|
case symbol_kind::S_integer: // integer
|
||||||
value.move< integer_ptr > (std::move (that.value));
|
value.move< integer_ptr > (std::move (that.value));
|
||||||
break;
|
break;
|
||||||
@ -1092,8 +1106,12 @@ namespace xsk { namespace gsc { namespace iw7 {
|
|||||||
case symbol_kind::S_NAME: // "identifier"
|
case symbol_kind::S_NAME: // "identifier"
|
||||||
case symbol_kind::S_STRING: // "string literal"
|
case symbol_kind::S_STRING: // "string literal"
|
||||||
case symbol_kind::S_ISTRING: // "localized string"
|
case symbol_kind::S_ISTRING: // "localized string"
|
||||||
|
case symbol_kind::S_COLOR: // "color"
|
||||||
case symbol_kind::S_FLOAT: // "float"
|
case symbol_kind::S_FLOAT: // "float"
|
||||||
case symbol_kind::S_INTEGER: // "int"
|
case symbol_kind::S_INT_DEC: // "int"
|
||||||
|
case symbol_kind::S_INT_OCT: // "octal int"
|
||||||
|
case symbol_kind::S_INT_BIN: // "binary int"
|
||||||
|
case symbol_kind::S_INT_HEX: // "hexadecimal int"
|
||||||
value.move< std::string > (std::move (that.value));
|
value.move< std::string > (std::move (that.value));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -1288,6 +1306,20 @@ namespace xsk { namespace gsc { namespace iw7 {
|
|||||||
{}
|
{}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if 201103L <= YY_CPLUSPLUS
|
||||||
|
basic_symbol (typename Base::kind_type t, color_ptr&& v, location_type&& l)
|
||||||
|
: Base (t)
|
||||||
|
, value (std::move (v))
|
||||||
|
, location (std::move (l))
|
||||||
|
{}
|
||||||
|
#else
|
||||||
|
basic_symbol (typename Base::kind_type t, const color_ptr& v, const location_type& l)
|
||||||
|
: Base (t)
|
||||||
|
, value (v)
|
||||||
|
, location (l)
|
||||||
|
{}
|
||||||
|
#endif
|
||||||
|
|
||||||
#if 201103L <= YY_CPLUSPLUS
|
#if 201103L <= YY_CPLUSPLUS
|
||||||
basic_symbol (typename Base::kind_type t, constant_ptr&& v, location_type&& l)
|
basic_symbol (typename Base::kind_type t, constant_ptr&& v, location_type&& l)
|
||||||
: Base (t)
|
: Base (t)
|
||||||
@ -2064,6 +2096,10 @@ switch (yykind)
|
|||||||
value.template destroy< animtree_ptr > ();
|
value.template destroy< animtree_ptr > ();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case symbol_kind::S_color: // color
|
||||||
|
value.template destroy< color_ptr > ();
|
||||||
|
break;
|
||||||
|
|
||||||
case symbol_kind::S_constant: // constant
|
case symbol_kind::S_constant: // constant
|
||||||
value.template destroy< constant_ptr > ();
|
value.template destroy< constant_ptr > ();
|
||||||
break;
|
break;
|
||||||
@ -2114,7 +2150,6 @@ switch (yykind)
|
|||||||
value.template destroy< file_ptr > ();
|
value.template destroy< file_ptr > ();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case symbol_kind::S_neg_float: // neg_float
|
|
||||||
case symbol_kind::S_float: // float
|
case symbol_kind::S_float: // float
|
||||||
value.template destroy< float_ptr > ();
|
value.template destroy< float_ptr > ();
|
||||||
break;
|
break;
|
||||||
@ -2127,7 +2162,6 @@ switch (yykind)
|
|||||||
value.template destroy< include_ptr > ();
|
value.template destroy< include_ptr > ();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case symbol_kind::S_neg_integer: // neg_integer
|
|
||||||
case symbol_kind::S_integer: // integer
|
case symbol_kind::S_integer: // integer
|
||||||
value.template destroy< integer_ptr > ();
|
value.template destroy< integer_ptr > ();
|
||||||
break;
|
break;
|
||||||
@ -2169,8 +2203,12 @@ switch (yykind)
|
|||||||
case symbol_kind::S_NAME: // "identifier"
|
case symbol_kind::S_NAME: // "identifier"
|
||||||
case symbol_kind::S_STRING: // "string literal"
|
case symbol_kind::S_STRING: // "string literal"
|
||||||
case symbol_kind::S_ISTRING: // "localized string"
|
case symbol_kind::S_ISTRING: // "localized string"
|
||||||
|
case symbol_kind::S_COLOR: // "color"
|
||||||
case symbol_kind::S_FLOAT: // "float"
|
case symbol_kind::S_FLOAT: // "float"
|
||||||
case symbol_kind::S_INTEGER: // "int"
|
case symbol_kind::S_INT_DEC: // "int"
|
||||||
|
case symbol_kind::S_INT_OCT: // "octal int"
|
||||||
|
case symbol_kind::S_INT_BIN: // "binary int"
|
||||||
|
case symbol_kind::S_INT_HEX: // "hexadecimal int"
|
||||||
value.template destroy< std::string > ();
|
value.template destroy< std::string > ();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -2406,7 +2444,7 @@ switch (yykind)
|
|||||||
: super_type(token_type (tok), v, l)
|
: super_type(token_type (tok), v, l)
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
IW7_ASSERT ((token::FILE <= tok && tok <= token::INTEGER));
|
IW7_ASSERT ((token::FILE <= tok && tok <= token::INT_HEX));
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -3776,6 +3814,21 @@ switch (yykind)
|
|||||||
return symbol_type (token::ISTRING, v, l);
|
return symbol_type (token::ISTRING, v, l);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
#if 201103L <= YY_CPLUSPLUS
|
||||||
|
static
|
||||||
|
symbol_type
|
||||||
|
make_COLOR (std::string v, location_type l)
|
||||||
|
{
|
||||||
|
return symbol_type (token::COLOR, std::move (v), std::move (l));
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
static
|
||||||
|
symbol_type
|
||||||
|
make_COLOR (const std::string& v, const location_type& l)
|
||||||
|
{
|
||||||
|
return symbol_type (token::COLOR, v, l);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
#if 201103L <= YY_CPLUSPLUS
|
#if 201103L <= YY_CPLUSPLUS
|
||||||
static
|
static
|
||||||
symbol_type
|
symbol_type
|
||||||
@ -3794,16 +3847,61 @@ switch (yykind)
|
|||||||
#if 201103L <= YY_CPLUSPLUS
|
#if 201103L <= YY_CPLUSPLUS
|
||||||
static
|
static
|
||||||
symbol_type
|
symbol_type
|
||||||
make_INTEGER (std::string v, location_type l)
|
make_INT_DEC (std::string v, location_type l)
|
||||||
{
|
{
|
||||||
return symbol_type (token::INTEGER, std::move (v), std::move (l));
|
return symbol_type (token::INT_DEC, std::move (v), std::move (l));
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
static
|
static
|
||||||
symbol_type
|
symbol_type
|
||||||
make_INTEGER (const std::string& v, const location_type& l)
|
make_INT_DEC (const std::string& v, const location_type& l)
|
||||||
{
|
{
|
||||||
return symbol_type (token::INTEGER, v, l);
|
return symbol_type (token::INT_DEC, v, l);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#if 201103L <= YY_CPLUSPLUS
|
||||||
|
static
|
||||||
|
symbol_type
|
||||||
|
make_INT_OCT (std::string v, location_type l)
|
||||||
|
{
|
||||||
|
return symbol_type (token::INT_OCT, std::move (v), std::move (l));
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
static
|
||||||
|
symbol_type
|
||||||
|
make_INT_OCT (const std::string& v, const location_type& l)
|
||||||
|
{
|
||||||
|
return symbol_type (token::INT_OCT, v, l);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#if 201103L <= YY_CPLUSPLUS
|
||||||
|
static
|
||||||
|
symbol_type
|
||||||
|
make_INT_BIN (std::string v, location_type l)
|
||||||
|
{
|
||||||
|
return symbol_type (token::INT_BIN, std::move (v), std::move (l));
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
static
|
||||||
|
symbol_type
|
||||||
|
make_INT_BIN (const std::string& v, const location_type& l)
|
||||||
|
{
|
||||||
|
return symbol_type (token::INT_BIN, v, l);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#if 201103L <= YY_CPLUSPLUS
|
||||||
|
static
|
||||||
|
symbol_type
|
||||||
|
make_INT_HEX (std::string v, location_type l)
|
||||||
|
{
|
||||||
|
return symbol_type (token::INT_HEX, std::move (v), std::move (l));
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
static
|
||||||
|
symbol_type
|
||||||
|
make_INT_HEX (const std::string& v, const location_type& l)
|
||||||
|
{
|
||||||
|
return symbol_type (token::INT_HEX, v, l);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#if 201103L <= YY_CPLUSPLUS
|
#if 201103L <= YY_CPLUSPLUS
|
||||||
@ -4285,8 +4383,8 @@ switch (yykind)
|
|||||||
/// Constants.
|
/// Constants.
|
||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
yylast_ = 1836, ///< Last index in yytable_.
|
yylast_ = 1811, ///< Last index in yytable_.
|
||||||
yynnts_ = 76, ///< Number of nonterminal symbols.
|
yynnts_ = 75, ///< Number of nonterminal symbols.
|
||||||
yyfinal_ = 15 ///< Termination state number.
|
yyfinal_ = 15 ///< Termination state number.
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -4326,6 +4424,10 @@ switch (yykind)
|
|||||||
value.copy< animtree_ptr > (YY_MOVE (that.value));
|
value.copy< animtree_ptr > (YY_MOVE (that.value));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case symbol_kind::S_color: // color
|
||||||
|
value.copy< color_ptr > (YY_MOVE (that.value));
|
||||||
|
break;
|
||||||
|
|
||||||
case symbol_kind::S_constant: // constant
|
case symbol_kind::S_constant: // constant
|
||||||
value.copy< constant_ptr > (YY_MOVE (that.value));
|
value.copy< constant_ptr > (YY_MOVE (that.value));
|
||||||
break;
|
break;
|
||||||
@ -4376,7 +4478,6 @@ switch (yykind)
|
|||||||
value.copy< file_ptr > (YY_MOVE (that.value));
|
value.copy< file_ptr > (YY_MOVE (that.value));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case symbol_kind::S_neg_float: // neg_float
|
|
||||||
case symbol_kind::S_float: // float
|
case symbol_kind::S_float: // float
|
||||||
value.copy< float_ptr > (YY_MOVE (that.value));
|
value.copy< float_ptr > (YY_MOVE (that.value));
|
||||||
break;
|
break;
|
||||||
@ -4389,7 +4490,6 @@ switch (yykind)
|
|||||||
value.copy< include_ptr > (YY_MOVE (that.value));
|
value.copy< include_ptr > (YY_MOVE (that.value));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case symbol_kind::S_neg_integer: // neg_integer
|
|
||||||
case symbol_kind::S_integer: // integer
|
case symbol_kind::S_integer: // integer
|
||||||
value.copy< integer_ptr > (YY_MOVE (that.value));
|
value.copy< integer_ptr > (YY_MOVE (that.value));
|
||||||
break;
|
break;
|
||||||
@ -4431,8 +4531,12 @@ switch (yykind)
|
|||||||
case symbol_kind::S_NAME: // "identifier"
|
case symbol_kind::S_NAME: // "identifier"
|
||||||
case symbol_kind::S_STRING: // "string literal"
|
case symbol_kind::S_STRING: // "string literal"
|
||||||
case symbol_kind::S_ISTRING: // "localized string"
|
case symbol_kind::S_ISTRING: // "localized string"
|
||||||
|
case symbol_kind::S_COLOR: // "color"
|
||||||
case symbol_kind::S_FLOAT: // "float"
|
case symbol_kind::S_FLOAT: // "float"
|
||||||
case symbol_kind::S_INTEGER: // "int"
|
case symbol_kind::S_INT_DEC: // "int"
|
||||||
|
case symbol_kind::S_INT_OCT: // "octal int"
|
||||||
|
case symbol_kind::S_INT_BIN: // "binary int"
|
||||||
|
case symbol_kind::S_INT_HEX: // "hexadecimal int"
|
||||||
value.copy< std::string > (YY_MOVE (that.value));
|
value.copy< std::string > (YY_MOVE (that.value));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -4603,6 +4707,10 @@ switch (yykind)
|
|||||||
value.move< animtree_ptr > (YY_MOVE (s.value));
|
value.move< animtree_ptr > (YY_MOVE (s.value));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case symbol_kind::S_color: // color
|
||||||
|
value.move< color_ptr > (YY_MOVE (s.value));
|
||||||
|
break;
|
||||||
|
|
||||||
case symbol_kind::S_constant: // constant
|
case symbol_kind::S_constant: // constant
|
||||||
value.move< constant_ptr > (YY_MOVE (s.value));
|
value.move< constant_ptr > (YY_MOVE (s.value));
|
||||||
break;
|
break;
|
||||||
@ -4653,7 +4761,6 @@ switch (yykind)
|
|||||||
value.move< file_ptr > (YY_MOVE (s.value));
|
value.move< file_ptr > (YY_MOVE (s.value));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case symbol_kind::S_neg_float: // neg_float
|
|
||||||
case symbol_kind::S_float: // float
|
case symbol_kind::S_float: // float
|
||||||
value.move< float_ptr > (YY_MOVE (s.value));
|
value.move< float_ptr > (YY_MOVE (s.value));
|
||||||
break;
|
break;
|
||||||
@ -4666,7 +4773,6 @@ switch (yykind)
|
|||||||
value.move< include_ptr > (YY_MOVE (s.value));
|
value.move< include_ptr > (YY_MOVE (s.value));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case symbol_kind::S_neg_integer: // neg_integer
|
|
||||||
case symbol_kind::S_integer: // integer
|
case symbol_kind::S_integer: // integer
|
||||||
value.move< integer_ptr > (YY_MOVE (s.value));
|
value.move< integer_ptr > (YY_MOVE (s.value));
|
||||||
break;
|
break;
|
||||||
@ -4708,8 +4814,12 @@ switch (yykind)
|
|||||||
case symbol_kind::S_NAME: // "identifier"
|
case symbol_kind::S_NAME: // "identifier"
|
||||||
case symbol_kind::S_STRING: // "string literal"
|
case symbol_kind::S_STRING: // "string literal"
|
||||||
case symbol_kind::S_ISTRING: // "localized string"
|
case symbol_kind::S_ISTRING: // "localized string"
|
||||||
|
case symbol_kind::S_COLOR: // "color"
|
||||||
case symbol_kind::S_FLOAT: // "float"
|
case symbol_kind::S_FLOAT: // "float"
|
||||||
case symbol_kind::S_INTEGER: // "int"
|
case symbol_kind::S_INT_DEC: // "int"
|
||||||
|
case symbol_kind::S_INT_OCT: // "octal int"
|
||||||
|
case symbol_kind::S_INT_BIN: // "binary int"
|
||||||
|
case symbol_kind::S_INT_HEX: // "hexadecimal int"
|
||||||
value.move< std::string > (YY_MOVE (s.value));
|
value.move< std::string > (YY_MOVE (s.value));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -4902,7 +5012,7 @@ switch (yykind)
|
|||||||
|
|
||||||
#line 13 "parser.ypp"
|
#line 13 "parser.ypp"
|
||||||
} } } // xsk::gsc::iw7
|
} } } // xsk::gsc::iw7
|
||||||
#line 4906 "parser.hpp"
|
#line 5016 "parser.hpp"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -791,6 +791,7 @@ void compiler::emit_expr(const gsc::context_ptr& ctx, const gsc::expr_ptr& expr)
|
|||||||
case gsc::node_t::data_name: emit_local_variable(ctx, expr.as_name); break;
|
case gsc::node_t::data_name: emit_local_variable(ctx, expr.as_name); break;
|
||||||
case gsc::node_t::data_istring: emit_istring(ctx, expr.as_istring); break;
|
case gsc::node_t::data_istring: emit_istring(ctx, expr.as_istring); break;
|
||||||
case gsc::node_t::data_string: emit_string(ctx, expr.as_string); break;
|
case gsc::node_t::data_string: emit_string(ctx, expr.as_string); break;
|
||||||
|
case gsc::node_t::data_color: emit_color(ctx, expr.as_color); break;
|
||||||
case gsc::node_t::data_vector: emit_vector(ctx, expr.as_vector); break;
|
case gsc::node_t::data_vector: emit_vector(ctx, expr.as_vector); break;
|
||||||
case gsc::node_t::data_float: emit_float(ctx, expr.as_float); break;
|
case gsc::node_t::data_float: emit_float(ctx, expr.as_float); break;
|
||||||
case gsc::node_t::data_integer: emit_integer(ctx, expr.as_integer); break;
|
case gsc::node_t::data_integer: emit_integer(ctx, expr.as_integer); break;
|
||||||
@ -1612,6 +1613,30 @@ void compiler::emit_string(const gsc::context_ptr& ctx, const gsc::string_ptr& s
|
|||||||
emit_opcode(ctx, opcode::OP_GetString, str->value);
|
emit_opcode(ctx, opcode::OP_GetString, str->value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void compiler::emit_color(const gsc::context_ptr& ctx, const gsc::color_ptr& color)
|
||||||
|
{
|
||||||
|
std::vector<std::string> data;
|
||||||
|
std::string x, y, z;
|
||||||
|
|
||||||
|
if(color->value.size() == 3)
|
||||||
|
{
|
||||||
|
x = "0x" + color->value.substr(0, 1) + color->value.substr(0, 1);
|
||||||
|
y = "0x" + color->value.substr(1, 1) + color->value.substr(1, 1);
|
||||||
|
z = "0x" + color->value.substr(2, 1) + color->value.substr(2, 1);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
x = "0x" + color->value.substr(0, 2);
|
||||||
|
y = "0x" + color->value.substr(2, 2);
|
||||||
|
z = "0x" + color->value.substr(4, 2);
|
||||||
|
}
|
||||||
|
|
||||||
|
data.push_back(gsc::utils::string::hex_to_dec(x.data()));
|
||||||
|
data.push_back(gsc::utils::string::hex_to_dec(y.data()));
|
||||||
|
data.push_back(gsc::utils::string::hex_to_dec(z.data()));
|
||||||
|
emit_opcode(ctx, opcode::OP_GetVector, data);
|
||||||
|
}
|
||||||
|
|
||||||
void compiler::emit_vector(const gsc::context_ptr& ctx, const gsc::vector_ptr& vec)
|
void compiler::emit_vector(const gsc::context_ptr& ctx, const gsc::vector_ptr& vec)
|
||||||
{
|
{
|
||||||
std::vector<std::string> data;
|
std::vector<std::string> data;
|
||||||
|
@ -102,6 +102,7 @@ private:
|
|||||||
void emit_animation(const gsc::context_ptr& ctx, const gsc::animation_ptr& animation);
|
void emit_animation(const gsc::context_ptr& ctx, const gsc::animation_ptr& animation);
|
||||||
void emit_istring(const gsc::context_ptr& ctx, const gsc::istring_ptr& str);
|
void emit_istring(const gsc::context_ptr& ctx, const gsc::istring_ptr& str);
|
||||||
void emit_string(const gsc::context_ptr& ctx, const gsc::string_ptr& str);
|
void emit_string(const gsc::context_ptr& ctx, const gsc::string_ptr& str);
|
||||||
|
void emit_color(const gsc::context_ptr& ctx, const gsc::color_ptr& color);
|
||||||
void emit_vector(const gsc::context_ptr& ctx, const gsc::vector_ptr& vec);
|
void emit_vector(const gsc::context_ptr& ctx, const gsc::vector_ptr& vec);
|
||||||
void emit_float(const gsc::context_ptr& ctx, const gsc::float_ptr& num);
|
void emit_float(const gsc::context_ptr& ctx, const gsc::float_ptr& num);
|
||||||
void emit_integer(const gsc::context_ptr& ctx, const gsc::integer_ptr& num);
|
void emit_integer(const gsc::context_ptr& ctx, const gsc::integer_ptr& num);
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -700,7 +700,7 @@ extern int yylex (yyscan_t yyscanner);
|
|||||||
#undef yyTABLES_NAME
|
#undef yyTABLES_NAME
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#line 150 "lexer.lpp"
|
#line 158 "lexer.lpp"
|
||||||
|
|
||||||
|
|
||||||
#line 706 "lexer.hpp"
|
#line 706 "lexer.hpp"
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -417,31 +417,34 @@ namespace xsk { namespace gsc { namespace s1 {
|
|||||||
// animtree
|
// animtree
|
||||||
char dummy3[sizeof (animtree_ptr)];
|
char dummy3[sizeof (animtree_ptr)];
|
||||||
|
|
||||||
|
// color
|
||||||
|
char dummy4[sizeof (color_ptr)];
|
||||||
|
|
||||||
// constant
|
// constant
|
||||||
char dummy4[sizeof (constant_ptr)];
|
char dummy5[sizeof (constant_ptr)];
|
||||||
|
|
||||||
// define
|
// define
|
||||||
char dummy5[sizeof (define_ptr)];
|
char dummy6[sizeof (define_ptr)];
|
||||||
|
|
||||||
// empty_array
|
// empty_array
|
||||||
char dummy6[sizeof (empty_array_ptr)];
|
char dummy7[sizeof (empty_array_ptr)];
|
||||||
|
|
||||||
// expr_arguments
|
// expr_arguments
|
||||||
// expr_arguments_filled
|
// expr_arguments_filled
|
||||||
// expr_arguments_empty
|
// expr_arguments_empty
|
||||||
char dummy7[sizeof (expr_arguments_ptr)];
|
char dummy8[sizeof (expr_arguments_ptr)];
|
||||||
|
|
||||||
// expr_assign
|
// expr_assign
|
||||||
char dummy8[sizeof (expr_assign_ptr)];
|
char dummy9[sizeof (expr_assign_ptr)];
|
||||||
|
|
||||||
// expr_call
|
// expr_call
|
||||||
// expr_call_thread
|
// expr_call_thread
|
||||||
// expr_call_childthread
|
// expr_call_childthread
|
||||||
char dummy9[sizeof (expr_call_ptr)];
|
char dummy10[sizeof (expr_call_ptr)];
|
||||||
|
|
||||||
// expr_call_function
|
// expr_call_function
|
||||||
// expr_call_pointer
|
// expr_call_pointer
|
||||||
char dummy10[sizeof (expr_call_type_ptr)];
|
char dummy11[sizeof (expr_call_type_ptr)];
|
||||||
|
|
||||||
// for_expr
|
// for_expr
|
||||||
// expr
|
// expr
|
||||||
@ -449,36 +452,34 @@ namespace xsk { namespace gsc { namespace s1 {
|
|||||||
// expr_ternary
|
// expr_ternary
|
||||||
// expr_binary
|
// expr_binary
|
||||||
// expr_primitive
|
// expr_primitive
|
||||||
char dummy11[sizeof (expr_ptr)];
|
char dummy12[sizeof (expr_ptr)];
|
||||||
|
|
||||||
// false
|
// false
|
||||||
char dummy12[sizeof (false_ptr)];
|
char dummy13[sizeof (false_ptr)];
|
||||||
|
|
||||||
// file
|
// file
|
||||||
char dummy13[sizeof (file_ptr)];
|
char dummy14[sizeof (file_ptr)];
|
||||||
|
|
||||||
// neg_float
|
|
||||||
// float
|
// float
|
||||||
char dummy14[sizeof (float_ptr)];
|
char dummy15[sizeof (float_ptr)];
|
||||||
|
|
||||||
// game
|
// game
|
||||||
char dummy15[sizeof (game_ptr)];
|
char dummy16[sizeof (game_ptr)];
|
||||||
|
|
||||||
// include
|
// include
|
||||||
char dummy16[sizeof (include_ptr)];
|
char dummy17[sizeof (include_ptr)];
|
||||||
|
|
||||||
// neg_integer
|
|
||||||
// integer
|
// integer
|
||||||
char dummy17[sizeof (integer_ptr)];
|
char dummy18[sizeof (integer_ptr)];
|
||||||
|
|
||||||
// istring
|
// istring
|
||||||
char dummy18[sizeof (istring_ptr)];
|
char dummy19[sizeof (istring_ptr)];
|
||||||
|
|
||||||
// level
|
// level
|
||||||
char dummy19[sizeof (level_ptr)];
|
char dummy20[sizeof (level_ptr)];
|
||||||
|
|
||||||
// name
|
// name
|
||||||
char dummy20[sizeof (name_ptr)];
|
char dummy21[sizeof (name_ptr)];
|
||||||
|
|
||||||
// expr_function
|
// expr_function
|
||||||
// expr_add_array
|
// expr_add_array
|
||||||
@ -486,122 +487,126 @@ namespace xsk { namespace gsc { namespace s1 {
|
|||||||
// expr_field
|
// expr_field
|
||||||
// expr_size
|
// expr_size
|
||||||
// object
|
// object
|
||||||
char dummy21[sizeof (node_ptr)];
|
char dummy22[sizeof (node_ptr)];
|
||||||
|
|
||||||
// parameters
|
// parameters
|
||||||
char dummy22[sizeof (parameters_ptr)];
|
char dummy23[sizeof (parameters_ptr)];
|
||||||
|
|
||||||
// program
|
// program
|
||||||
char dummy23[sizeof (program_ptr)];
|
char dummy24[sizeof (program_ptr)];
|
||||||
|
|
||||||
// self
|
// self
|
||||||
char dummy24[sizeof (self_ptr)];
|
char dummy25[sizeof (self_ptr)];
|
||||||
|
|
||||||
// "file path"
|
// "file path"
|
||||||
// "identifier"
|
// "identifier"
|
||||||
// "string literal"
|
// "string literal"
|
||||||
// "localized string"
|
// "localized string"
|
||||||
|
// "color"
|
||||||
// "float"
|
// "float"
|
||||||
// "int"
|
// "int"
|
||||||
char dummy25[sizeof (std::string)];
|
// "octal int"
|
||||||
|
// "binary int"
|
||||||
|
// "hexadecimal int"
|
||||||
|
char dummy26[sizeof (std::string)];
|
||||||
|
|
||||||
// stmt_assign
|
// stmt_assign
|
||||||
char dummy26[sizeof (stmt_assign_ptr)];
|
char dummy27[sizeof (stmt_assign_ptr)];
|
||||||
|
|
||||||
// stmt_break
|
// stmt_break
|
||||||
char dummy27[sizeof (stmt_break_ptr)];
|
char dummy28[sizeof (stmt_break_ptr)];
|
||||||
|
|
||||||
// stmt_breakpoint
|
// stmt_breakpoint
|
||||||
char dummy28[sizeof (stmt_breakpoint_ptr)];
|
char dummy29[sizeof (stmt_breakpoint_ptr)];
|
||||||
|
|
||||||
// stmt_call
|
// stmt_call
|
||||||
char dummy29[sizeof (stmt_call_ptr)];
|
char dummy30[sizeof (stmt_call_ptr)];
|
||||||
|
|
||||||
// stmt_case
|
// stmt_case
|
||||||
char dummy30[sizeof (stmt_case_ptr)];
|
char dummy31[sizeof (stmt_case_ptr)];
|
||||||
|
|
||||||
// stmt_continue
|
// stmt_continue
|
||||||
char dummy31[sizeof (stmt_continue_ptr)];
|
char dummy32[sizeof (stmt_continue_ptr)];
|
||||||
|
|
||||||
// stmt_default
|
// stmt_default
|
||||||
char dummy32[sizeof (stmt_default_ptr)];
|
char dummy33[sizeof (stmt_default_ptr)];
|
||||||
|
|
||||||
// stmt_endon
|
// stmt_endon
|
||||||
char dummy33[sizeof (stmt_endon_ptr)];
|
char dummy34[sizeof (stmt_endon_ptr)];
|
||||||
|
|
||||||
// stmt_for
|
// stmt_for
|
||||||
char dummy34[sizeof (stmt_for_ptr)];
|
char dummy35[sizeof (stmt_for_ptr)];
|
||||||
|
|
||||||
// stmt_foreach
|
// stmt_foreach
|
||||||
char dummy35[sizeof (stmt_foreach_ptr)];
|
char dummy36[sizeof (stmt_foreach_ptr)];
|
||||||
|
|
||||||
// stmt_if
|
// stmt_if
|
||||||
char dummy36[sizeof (stmt_if_ptr)];
|
char dummy37[sizeof (stmt_if_ptr)];
|
||||||
|
|
||||||
// stmt_ifelse
|
// stmt_ifelse
|
||||||
char dummy37[sizeof (stmt_ifelse_ptr)];
|
char dummy38[sizeof (stmt_ifelse_ptr)];
|
||||||
|
|
||||||
// stmt_block
|
// stmt_block
|
||||||
// stmt_list
|
// stmt_list
|
||||||
char dummy38[sizeof (stmt_list_ptr)];
|
char dummy39[sizeof (stmt_list_ptr)];
|
||||||
|
|
||||||
// stmt_notify
|
// stmt_notify
|
||||||
char dummy39[sizeof (stmt_notify_ptr)];
|
char dummy40[sizeof (stmt_notify_ptr)];
|
||||||
|
|
||||||
// stmt_prof_begin
|
// stmt_prof_begin
|
||||||
char dummy40[sizeof (stmt_prof_begin_ptr)];
|
char dummy41[sizeof (stmt_prof_begin_ptr)];
|
||||||
|
|
||||||
// stmt_prof_end
|
// stmt_prof_end
|
||||||
char dummy41[sizeof (stmt_prof_end_ptr)];
|
char dummy42[sizeof (stmt_prof_end_ptr)];
|
||||||
|
|
||||||
// stmt
|
// stmt
|
||||||
// for_stmt
|
// for_stmt
|
||||||
char dummy42[sizeof (stmt_ptr)];
|
char dummy43[sizeof (stmt_ptr)];
|
||||||
|
|
||||||
// stmt_return
|
// stmt_return
|
||||||
char dummy43[sizeof (stmt_return_ptr)];
|
char dummy44[sizeof (stmt_return_ptr)];
|
||||||
|
|
||||||
// stmt_switch
|
// stmt_switch
|
||||||
char dummy44[sizeof (stmt_switch_ptr)];
|
char dummy45[sizeof (stmt_switch_ptr)];
|
||||||
|
|
||||||
// stmt_wait
|
// stmt_wait
|
||||||
char dummy45[sizeof (stmt_wait_ptr)];
|
char dummy46[sizeof (stmt_wait_ptr)];
|
||||||
|
|
||||||
// stmt_waitframe
|
// stmt_waitframe
|
||||||
char dummy46[sizeof (stmt_waitframe_ptr)];
|
char dummy47[sizeof (stmt_waitframe_ptr)];
|
||||||
|
|
||||||
// stmt_waittill
|
// stmt_waittill
|
||||||
char dummy47[sizeof (stmt_waittill_ptr)];
|
char dummy48[sizeof (stmt_waittill_ptr)];
|
||||||
|
|
||||||
// stmt_waittillframeend
|
// stmt_waittillframeend
|
||||||
char dummy48[sizeof (stmt_waittillframeend_ptr)];
|
char dummy49[sizeof (stmt_waittillframeend_ptr)];
|
||||||
|
|
||||||
// stmt_waittillmatch
|
// stmt_waittillmatch
|
||||||
char dummy49[sizeof (stmt_waittillmatch_ptr)];
|
char dummy50[sizeof (stmt_waittillmatch_ptr)];
|
||||||
|
|
||||||
// stmt_while
|
// stmt_while
|
||||||
char dummy50[sizeof (stmt_while_ptr)];
|
char dummy51[sizeof (stmt_while_ptr)];
|
||||||
|
|
||||||
// string
|
// string
|
||||||
char dummy51[sizeof (string_ptr)];
|
char dummy52[sizeof (string_ptr)];
|
||||||
|
|
||||||
// thisthread
|
// thisthread
|
||||||
char dummy52[sizeof (thisthread_ptr)];
|
char dummy53[sizeof (thisthread_ptr)];
|
||||||
|
|
||||||
// thread
|
// thread
|
||||||
char dummy53[sizeof (thread_ptr)];
|
char dummy54[sizeof (thread_ptr)];
|
||||||
|
|
||||||
// true
|
// true
|
||||||
char dummy54[sizeof (true_ptr)];
|
char dummy55[sizeof (true_ptr)];
|
||||||
|
|
||||||
// undefined
|
// undefined
|
||||||
char dummy55[sizeof (undefined_ptr)];
|
char dummy56[sizeof (undefined_ptr)];
|
||||||
|
|
||||||
// usingtree
|
// usingtree
|
||||||
char dummy56[sizeof (usingtree_ptr)];
|
char dummy57[sizeof (usingtree_ptr)];
|
||||||
|
|
||||||
// vector
|
// vector
|
||||||
char dummy57[sizeof (vector_ptr)];
|
char dummy58[sizeof (vector_ptr)];
|
||||||
};
|
};
|
||||||
|
|
||||||
/// The size of the largest semantic type.
|
/// The size of the largest semantic type.
|
||||||
@ -739,17 +744,21 @@ namespace xsk { namespace gsc { namespace s1 {
|
|||||||
NAME = 86, // "identifier"
|
NAME = 86, // "identifier"
|
||||||
STRING = 87, // "string literal"
|
STRING = 87, // "string literal"
|
||||||
ISTRING = 88, // "localized string"
|
ISTRING = 88, // "localized string"
|
||||||
FLOAT = 89, // "float"
|
COLOR = 89, // "color"
|
||||||
INTEGER = 90, // "int"
|
FLOAT = 90, // "float"
|
||||||
ADD_ARRAY = 91, // ADD_ARRAY
|
INT_DEC = 91, // "int"
|
||||||
THEN = 92, // THEN
|
INT_OCT = 92, // "octal int"
|
||||||
TERN = 93, // TERN
|
INT_BIN = 93, // "binary int"
|
||||||
NEG = 94, // NEG
|
INT_HEX = 94, // "hexadecimal int"
|
||||||
ANIMREF = 95, // ANIMREF
|
ADD_ARRAY = 95, // ADD_ARRAY
|
||||||
PREINC = 96, // PREINC
|
THEN = 96, // THEN
|
||||||
PREDEC = 97, // PREDEC
|
TERN = 97, // TERN
|
||||||
POSTINC = 98, // POSTINC
|
NEG = 98, // NEG
|
||||||
POSTDEC = 99 // POSTDEC
|
ANIMREF = 99, // ANIMREF
|
||||||
|
PREINC = 100, // PREINC
|
||||||
|
PREDEC = 101, // PREDEC
|
||||||
|
POSTINC = 102, // POSTINC
|
||||||
|
POSTDEC = 103 // POSTDEC
|
||||||
};
|
};
|
||||||
/// Backward compatibility alias (Bison 3.6).
|
/// Backward compatibility alias (Bison 3.6).
|
||||||
typedef token_kind_type yytokentype;
|
typedef token_kind_type yytokentype;
|
||||||
@ -766,7 +775,7 @@ namespace xsk { namespace gsc { namespace s1 {
|
|||||||
{
|
{
|
||||||
enum symbol_kind_type
|
enum symbol_kind_type
|
||||||
{
|
{
|
||||||
YYNTOKENS = 100, ///< Number of tokens.
|
YYNTOKENS = 104, ///< Number of tokens.
|
||||||
S_YYEMPTY = -2,
|
S_YYEMPTY = -2,
|
||||||
S_YYEOF = 0, // "end of file"
|
S_YYEOF = 0, // "end of file"
|
||||||
S_YYerror = 1, // error
|
S_YYerror = 1, // error
|
||||||
@ -857,94 +866,97 @@ namespace xsk { namespace gsc { namespace s1 {
|
|||||||
S_NAME = 86, // "identifier"
|
S_NAME = 86, // "identifier"
|
||||||
S_STRING = 87, // "string literal"
|
S_STRING = 87, // "string literal"
|
||||||
S_ISTRING = 88, // "localized string"
|
S_ISTRING = 88, // "localized string"
|
||||||
S_FLOAT = 89, // "float"
|
S_COLOR = 89, // "color"
|
||||||
S_INTEGER = 90, // "int"
|
S_FLOAT = 90, // "float"
|
||||||
S_ADD_ARRAY = 91, // ADD_ARRAY
|
S_INT_DEC = 91, // "int"
|
||||||
S_THEN = 92, // THEN
|
S_INT_OCT = 92, // "octal int"
|
||||||
S_TERN = 93, // TERN
|
S_INT_BIN = 93, // "binary int"
|
||||||
S_NEG = 94, // NEG
|
S_INT_HEX = 94, // "hexadecimal int"
|
||||||
S_ANIMREF = 95, // ANIMREF
|
S_ADD_ARRAY = 95, // ADD_ARRAY
|
||||||
S_PREINC = 96, // PREINC
|
S_THEN = 96, // THEN
|
||||||
S_PREDEC = 97, // PREDEC
|
S_TERN = 97, // TERN
|
||||||
S_POSTINC = 98, // POSTINC
|
S_NEG = 98, // NEG
|
||||||
S_POSTDEC = 99, // POSTDEC
|
S_ANIMREF = 99, // ANIMREF
|
||||||
S_YYACCEPT = 100, // $accept
|
S_PREINC = 100, // PREINC
|
||||||
S_root = 101, // root
|
S_PREDEC = 101, // PREDEC
|
||||||
S_program = 102, // program
|
S_POSTINC = 102, // POSTINC
|
||||||
S_include = 103, // include
|
S_POSTDEC = 103, // POSTDEC
|
||||||
S_define = 104, // define
|
S_YYACCEPT = 104, // $accept
|
||||||
S_usingtree = 105, // usingtree
|
S_root = 105, // root
|
||||||
S_constant = 106, // constant
|
S_program = 106, // program
|
||||||
S_thread = 107, // thread
|
S_include = 107, // include
|
||||||
S_parameters = 108, // parameters
|
S_define = 108, // define
|
||||||
S_stmt = 109, // stmt
|
S_usingtree = 109, // usingtree
|
||||||
S_stmt_block = 110, // stmt_block
|
S_constant = 110, // constant
|
||||||
S_stmt_list = 111, // stmt_list
|
S_thread = 111, // thread
|
||||||
S_stmt_call = 112, // stmt_call
|
S_parameters = 112, // parameters
|
||||||
S_stmt_assign = 113, // stmt_assign
|
S_stmt = 113, // stmt
|
||||||
S_stmt_endon = 114, // stmt_endon
|
S_stmt_block = 114, // stmt_block
|
||||||
S_stmt_notify = 115, // stmt_notify
|
S_stmt_list = 115, // stmt_list
|
||||||
S_stmt_wait = 116, // stmt_wait
|
S_stmt_call = 116, // stmt_call
|
||||||
S_stmt_waittill = 117, // stmt_waittill
|
S_stmt_assign = 117, // stmt_assign
|
||||||
S_stmt_waittillmatch = 118, // stmt_waittillmatch
|
S_stmt_endon = 118, // stmt_endon
|
||||||
S_stmt_waittillframeend = 119, // stmt_waittillframeend
|
S_stmt_notify = 119, // stmt_notify
|
||||||
S_stmt_waitframe = 120, // stmt_waitframe
|
S_stmt_wait = 120, // stmt_wait
|
||||||
S_stmt_if = 121, // stmt_if
|
S_stmt_waittill = 121, // stmt_waittill
|
||||||
S_stmt_ifelse = 122, // stmt_ifelse
|
S_stmt_waittillmatch = 122, // stmt_waittillmatch
|
||||||
S_stmt_while = 123, // stmt_while
|
S_stmt_waittillframeend = 123, // stmt_waittillframeend
|
||||||
S_stmt_for = 124, // stmt_for
|
S_stmt_waitframe = 124, // stmt_waitframe
|
||||||
S_stmt_foreach = 125, // stmt_foreach
|
S_stmt_if = 125, // stmt_if
|
||||||
S_stmt_switch = 126, // stmt_switch
|
S_stmt_ifelse = 126, // stmt_ifelse
|
||||||
S_stmt_case = 127, // stmt_case
|
S_stmt_while = 127, // stmt_while
|
||||||
S_stmt_default = 128, // stmt_default
|
S_stmt_for = 128, // stmt_for
|
||||||
S_stmt_break = 129, // stmt_break
|
S_stmt_foreach = 129, // stmt_foreach
|
||||||
S_stmt_continue = 130, // stmt_continue
|
S_stmt_switch = 130, // stmt_switch
|
||||||
S_stmt_return = 131, // stmt_return
|
S_stmt_case = 131, // stmt_case
|
||||||
S_stmt_breakpoint = 132, // stmt_breakpoint
|
S_stmt_default = 132, // stmt_default
|
||||||
S_stmt_prof_begin = 133, // stmt_prof_begin
|
S_stmt_break = 133, // stmt_break
|
||||||
S_stmt_prof_end = 134, // stmt_prof_end
|
S_stmt_continue = 134, // stmt_continue
|
||||||
S_for_stmt = 135, // for_stmt
|
S_stmt_return = 135, // stmt_return
|
||||||
S_for_expr = 136, // for_expr
|
S_stmt_breakpoint = 136, // stmt_breakpoint
|
||||||
S_expr = 137, // expr
|
S_stmt_prof_begin = 137, // stmt_prof_begin
|
||||||
S_expr_assign = 138, // expr_assign
|
S_stmt_prof_end = 138, // stmt_prof_end
|
||||||
S_expr_compare = 139, // expr_compare
|
S_for_stmt = 139, // for_stmt
|
||||||
S_expr_ternary = 140, // expr_ternary
|
S_for_expr = 140, // for_expr
|
||||||
S_expr_binary = 141, // expr_binary
|
S_expr = 141, // expr
|
||||||
S_expr_primitive = 142, // expr_primitive
|
S_expr_assign = 142, // expr_assign
|
||||||
S_expr_call = 143, // expr_call
|
S_expr_compare = 143, // expr_compare
|
||||||
S_expr_call_thread = 144, // expr_call_thread
|
S_expr_ternary = 144, // expr_ternary
|
||||||
S_expr_call_childthread = 145, // expr_call_childthread
|
S_expr_binary = 145, // expr_binary
|
||||||
S_expr_call_function = 146, // expr_call_function
|
S_expr_primitive = 146, // expr_primitive
|
||||||
S_expr_call_pointer = 147, // expr_call_pointer
|
S_expr_call = 147, // expr_call
|
||||||
S_expr_arguments = 148, // expr_arguments
|
S_expr_call_thread = 148, // expr_call_thread
|
||||||
S_expr_arguments_filled = 149, // expr_arguments_filled
|
S_expr_call_childthread = 149, // expr_call_childthread
|
||||||
S_expr_arguments_empty = 150, // expr_arguments_empty
|
S_expr_call_function = 150, // expr_call_function
|
||||||
S_expr_function = 151, // expr_function
|
S_expr_call_pointer = 151, // expr_call_pointer
|
||||||
S_expr_add_array = 152, // expr_add_array
|
S_expr_arguments = 152, // expr_arguments
|
||||||
S_expr_array = 153, // expr_array
|
S_expr_arguments_filled = 153, // expr_arguments_filled
|
||||||
S_expr_field = 154, // expr_field
|
S_expr_arguments_empty = 154, // expr_arguments_empty
|
||||||
S_expr_size = 155, // expr_size
|
S_expr_function = 155, // expr_function
|
||||||
S_object = 156, // object
|
S_expr_add_array = 156, // expr_add_array
|
||||||
S_thisthread = 157, // thisthread
|
S_expr_array = 157, // expr_array
|
||||||
S_empty_array = 158, // empty_array
|
S_expr_field = 158, // expr_field
|
||||||
S_undefined = 159, // undefined
|
S_expr_size = 159, // expr_size
|
||||||
S_game = 160, // game
|
S_object = 160, // object
|
||||||
S_self = 161, // self
|
S_float = 161, // float
|
||||||
S_anim = 162, // anim
|
S_integer = 162, // integer
|
||||||
S_level = 163, // level
|
S_thisthread = 163, // thisthread
|
||||||
S_animation = 164, // animation
|
S_empty_array = 164, // empty_array
|
||||||
S_animtree = 165, // animtree
|
S_undefined = 165, // undefined
|
||||||
S_name = 166, // name
|
S_game = 166, // game
|
||||||
S_file = 167, // file
|
S_self = 167, // self
|
||||||
S_istring = 168, // istring
|
S_anim = 168, // anim
|
||||||
S_string = 169, // string
|
S_level = 169, // level
|
||||||
S_vector = 170, // vector
|
S_animation = 170, // animation
|
||||||
S_neg_float = 171, // neg_float
|
S_animtree = 171, // animtree
|
||||||
S_neg_integer = 172, // neg_integer
|
S_name = 172, // name
|
||||||
S_float = 173, // float
|
S_file = 173, // file
|
||||||
S_integer = 174, // integer
|
S_istring = 174, // istring
|
||||||
S_false = 175, // false
|
S_string = 175, // string
|
||||||
S_true = 176 // true
|
S_color = 176, // color
|
||||||
|
S_vector = 177, // vector
|
||||||
|
S_false = 178, // false
|
||||||
|
S_true = 179 // true
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -993,6 +1005,10 @@ namespace xsk { namespace gsc { namespace s1 {
|
|||||||
value.move< animtree_ptr > (std::move (that.value));
|
value.move< animtree_ptr > (std::move (that.value));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case symbol_kind::S_color: // color
|
||||||
|
value.move< color_ptr > (std::move (that.value));
|
||||||
|
break;
|
||||||
|
|
||||||
case symbol_kind::S_constant: // constant
|
case symbol_kind::S_constant: // constant
|
||||||
value.move< constant_ptr > (std::move (that.value));
|
value.move< constant_ptr > (std::move (that.value));
|
||||||
break;
|
break;
|
||||||
@ -1043,7 +1059,6 @@ namespace xsk { namespace gsc { namespace s1 {
|
|||||||
value.move< file_ptr > (std::move (that.value));
|
value.move< file_ptr > (std::move (that.value));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case symbol_kind::S_neg_float: // neg_float
|
|
||||||
case symbol_kind::S_float: // float
|
case symbol_kind::S_float: // float
|
||||||
value.move< float_ptr > (std::move (that.value));
|
value.move< float_ptr > (std::move (that.value));
|
||||||
break;
|
break;
|
||||||
@ -1056,7 +1071,6 @@ namespace xsk { namespace gsc { namespace s1 {
|
|||||||
value.move< include_ptr > (std::move (that.value));
|
value.move< include_ptr > (std::move (that.value));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case symbol_kind::S_neg_integer: // neg_integer
|
|
||||||
case symbol_kind::S_integer: // integer
|
case symbol_kind::S_integer: // integer
|
||||||
value.move< integer_ptr > (std::move (that.value));
|
value.move< integer_ptr > (std::move (that.value));
|
||||||
break;
|
break;
|
||||||
@ -1098,8 +1112,12 @@ namespace xsk { namespace gsc { namespace s1 {
|
|||||||
case symbol_kind::S_NAME: // "identifier"
|
case symbol_kind::S_NAME: // "identifier"
|
||||||
case symbol_kind::S_STRING: // "string literal"
|
case symbol_kind::S_STRING: // "string literal"
|
||||||
case symbol_kind::S_ISTRING: // "localized string"
|
case symbol_kind::S_ISTRING: // "localized string"
|
||||||
|
case symbol_kind::S_COLOR: // "color"
|
||||||
case symbol_kind::S_FLOAT: // "float"
|
case symbol_kind::S_FLOAT: // "float"
|
||||||
case symbol_kind::S_INTEGER: // "int"
|
case symbol_kind::S_INT_DEC: // "int"
|
||||||
|
case symbol_kind::S_INT_OCT: // "octal int"
|
||||||
|
case symbol_kind::S_INT_BIN: // "binary int"
|
||||||
|
case symbol_kind::S_INT_HEX: // "hexadecimal int"
|
||||||
value.move< std::string > (std::move (that.value));
|
value.move< std::string > (std::move (that.value));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -1298,6 +1316,20 @@ namespace xsk { namespace gsc { namespace s1 {
|
|||||||
{}
|
{}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if 201103L <= YY_CPLUSPLUS
|
||||||
|
basic_symbol (typename Base::kind_type t, color_ptr&& v, location_type&& l)
|
||||||
|
: Base (t)
|
||||||
|
, value (std::move (v))
|
||||||
|
, location (std::move (l))
|
||||||
|
{}
|
||||||
|
#else
|
||||||
|
basic_symbol (typename Base::kind_type t, const color_ptr& v, const location_type& l)
|
||||||
|
: Base (t)
|
||||||
|
, value (v)
|
||||||
|
, location (l)
|
||||||
|
{}
|
||||||
|
#endif
|
||||||
|
|
||||||
#if 201103L <= YY_CPLUSPLUS
|
#if 201103L <= YY_CPLUSPLUS
|
||||||
basic_symbol (typename Base::kind_type t, constant_ptr&& v, location_type&& l)
|
basic_symbol (typename Base::kind_type t, constant_ptr&& v, location_type&& l)
|
||||||
: Base (t)
|
: Base (t)
|
||||||
@ -2088,6 +2120,10 @@ switch (yykind)
|
|||||||
value.template destroy< animtree_ptr > ();
|
value.template destroy< animtree_ptr > ();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case symbol_kind::S_color: // color
|
||||||
|
value.template destroy< color_ptr > ();
|
||||||
|
break;
|
||||||
|
|
||||||
case symbol_kind::S_constant: // constant
|
case symbol_kind::S_constant: // constant
|
||||||
value.template destroy< constant_ptr > ();
|
value.template destroy< constant_ptr > ();
|
||||||
break;
|
break;
|
||||||
@ -2138,7 +2174,6 @@ switch (yykind)
|
|||||||
value.template destroy< file_ptr > ();
|
value.template destroy< file_ptr > ();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case symbol_kind::S_neg_float: // neg_float
|
|
||||||
case symbol_kind::S_float: // float
|
case symbol_kind::S_float: // float
|
||||||
value.template destroy< float_ptr > ();
|
value.template destroy< float_ptr > ();
|
||||||
break;
|
break;
|
||||||
@ -2151,7 +2186,6 @@ switch (yykind)
|
|||||||
value.template destroy< include_ptr > ();
|
value.template destroy< include_ptr > ();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case symbol_kind::S_neg_integer: // neg_integer
|
|
||||||
case symbol_kind::S_integer: // integer
|
case symbol_kind::S_integer: // integer
|
||||||
value.template destroy< integer_ptr > ();
|
value.template destroy< integer_ptr > ();
|
||||||
break;
|
break;
|
||||||
@ -2193,8 +2227,12 @@ switch (yykind)
|
|||||||
case symbol_kind::S_NAME: // "identifier"
|
case symbol_kind::S_NAME: // "identifier"
|
||||||
case symbol_kind::S_STRING: // "string literal"
|
case symbol_kind::S_STRING: // "string literal"
|
||||||
case symbol_kind::S_ISTRING: // "localized string"
|
case symbol_kind::S_ISTRING: // "localized string"
|
||||||
|
case symbol_kind::S_COLOR: // "color"
|
||||||
case symbol_kind::S_FLOAT: // "float"
|
case symbol_kind::S_FLOAT: // "float"
|
||||||
case symbol_kind::S_INTEGER: // "int"
|
case symbol_kind::S_INT_DEC: // "int"
|
||||||
|
case symbol_kind::S_INT_OCT: // "octal int"
|
||||||
|
case symbol_kind::S_INT_BIN: // "binary int"
|
||||||
|
case symbol_kind::S_INT_HEX: // "hexadecimal int"
|
||||||
value.template destroy< std::string > ();
|
value.template destroy< std::string > ();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -2434,7 +2472,7 @@ switch (yykind)
|
|||||||
: super_type(token_type (tok), v, l)
|
: super_type(token_type (tok), v, l)
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
S1_ASSERT ((token::FILE <= tok && tok <= token::INTEGER));
|
S1_ASSERT ((token::FILE <= tok && tok <= token::INT_HEX));
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -3819,6 +3857,21 @@ switch (yykind)
|
|||||||
return symbol_type (token::ISTRING, v, l);
|
return symbol_type (token::ISTRING, v, l);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
#if 201103L <= YY_CPLUSPLUS
|
||||||
|
static
|
||||||
|
symbol_type
|
||||||
|
make_COLOR (std::string v, location_type l)
|
||||||
|
{
|
||||||
|
return symbol_type (token::COLOR, std::move (v), std::move (l));
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
static
|
||||||
|
symbol_type
|
||||||
|
make_COLOR (const std::string& v, const location_type& l)
|
||||||
|
{
|
||||||
|
return symbol_type (token::COLOR, v, l);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
#if 201103L <= YY_CPLUSPLUS
|
#if 201103L <= YY_CPLUSPLUS
|
||||||
static
|
static
|
||||||
symbol_type
|
symbol_type
|
||||||
@ -3837,16 +3890,61 @@ switch (yykind)
|
|||||||
#if 201103L <= YY_CPLUSPLUS
|
#if 201103L <= YY_CPLUSPLUS
|
||||||
static
|
static
|
||||||
symbol_type
|
symbol_type
|
||||||
make_INTEGER (std::string v, location_type l)
|
make_INT_DEC (std::string v, location_type l)
|
||||||
{
|
{
|
||||||
return symbol_type (token::INTEGER, std::move (v), std::move (l));
|
return symbol_type (token::INT_DEC, std::move (v), std::move (l));
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
static
|
static
|
||||||
symbol_type
|
symbol_type
|
||||||
make_INTEGER (const std::string& v, const location_type& l)
|
make_INT_DEC (const std::string& v, const location_type& l)
|
||||||
{
|
{
|
||||||
return symbol_type (token::INTEGER, v, l);
|
return symbol_type (token::INT_DEC, v, l);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#if 201103L <= YY_CPLUSPLUS
|
||||||
|
static
|
||||||
|
symbol_type
|
||||||
|
make_INT_OCT (std::string v, location_type l)
|
||||||
|
{
|
||||||
|
return symbol_type (token::INT_OCT, std::move (v), std::move (l));
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
static
|
||||||
|
symbol_type
|
||||||
|
make_INT_OCT (const std::string& v, const location_type& l)
|
||||||
|
{
|
||||||
|
return symbol_type (token::INT_OCT, v, l);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#if 201103L <= YY_CPLUSPLUS
|
||||||
|
static
|
||||||
|
symbol_type
|
||||||
|
make_INT_BIN (std::string v, location_type l)
|
||||||
|
{
|
||||||
|
return symbol_type (token::INT_BIN, std::move (v), std::move (l));
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
static
|
||||||
|
symbol_type
|
||||||
|
make_INT_BIN (const std::string& v, const location_type& l)
|
||||||
|
{
|
||||||
|
return symbol_type (token::INT_BIN, v, l);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#if 201103L <= YY_CPLUSPLUS
|
||||||
|
static
|
||||||
|
symbol_type
|
||||||
|
make_INT_HEX (std::string v, location_type l)
|
||||||
|
{
|
||||||
|
return symbol_type (token::INT_HEX, std::move (v), std::move (l));
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
static
|
||||||
|
symbol_type
|
||||||
|
make_INT_HEX (const std::string& v, const location_type& l)
|
||||||
|
{
|
||||||
|
return symbol_type (token::INT_HEX, v, l);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#if 201103L <= YY_CPLUSPLUS
|
#if 201103L <= YY_CPLUSPLUS
|
||||||
@ -4328,8 +4426,8 @@ switch (yykind)
|
|||||||
/// Constants.
|
/// Constants.
|
||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
yylast_ = 1842, ///< Last index in yytable_.
|
yylast_ = 1883, ///< Last index in yytable_.
|
||||||
yynnts_ = 77, ///< Number of nonterminal symbols.
|
yynnts_ = 76, ///< Number of nonterminal symbols.
|
||||||
yyfinal_ = 15 ///< Termination state number.
|
yyfinal_ = 15 ///< Termination state number.
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -4369,6 +4467,10 @@ switch (yykind)
|
|||||||
value.copy< animtree_ptr > (YY_MOVE (that.value));
|
value.copy< animtree_ptr > (YY_MOVE (that.value));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case symbol_kind::S_color: // color
|
||||||
|
value.copy< color_ptr > (YY_MOVE (that.value));
|
||||||
|
break;
|
||||||
|
|
||||||
case symbol_kind::S_constant: // constant
|
case symbol_kind::S_constant: // constant
|
||||||
value.copy< constant_ptr > (YY_MOVE (that.value));
|
value.copy< constant_ptr > (YY_MOVE (that.value));
|
||||||
break;
|
break;
|
||||||
@ -4419,7 +4521,6 @@ switch (yykind)
|
|||||||
value.copy< file_ptr > (YY_MOVE (that.value));
|
value.copy< file_ptr > (YY_MOVE (that.value));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case symbol_kind::S_neg_float: // neg_float
|
|
||||||
case symbol_kind::S_float: // float
|
case symbol_kind::S_float: // float
|
||||||
value.copy< float_ptr > (YY_MOVE (that.value));
|
value.copy< float_ptr > (YY_MOVE (that.value));
|
||||||
break;
|
break;
|
||||||
@ -4432,7 +4533,6 @@ switch (yykind)
|
|||||||
value.copy< include_ptr > (YY_MOVE (that.value));
|
value.copy< include_ptr > (YY_MOVE (that.value));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case symbol_kind::S_neg_integer: // neg_integer
|
|
||||||
case symbol_kind::S_integer: // integer
|
case symbol_kind::S_integer: // integer
|
||||||
value.copy< integer_ptr > (YY_MOVE (that.value));
|
value.copy< integer_ptr > (YY_MOVE (that.value));
|
||||||
break;
|
break;
|
||||||
@ -4474,8 +4574,12 @@ switch (yykind)
|
|||||||
case symbol_kind::S_NAME: // "identifier"
|
case symbol_kind::S_NAME: // "identifier"
|
||||||
case symbol_kind::S_STRING: // "string literal"
|
case symbol_kind::S_STRING: // "string literal"
|
||||||
case symbol_kind::S_ISTRING: // "localized string"
|
case symbol_kind::S_ISTRING: // "localized string"
|
||||||
|
case symbol_kind::S_COLOR: // "color"
|
||||||
case symbol_kind::S_FLOAT: // "float"
|
case symbol_kind::S_FLOAT: // "float"
|
||||||
case symbol_kind::S_INTEGER: // "int"
|
case symbol_kind::S_INT_DEC: // "int"
|
||||||
|
case symbol_kind::S_INT_OCT: // "octal int"
|
||||||
|
case symbol_kind::S_INT_BIN: // "binary int"
|
||||||
|
case symbol_kind::S_INT_HEX: // "hexadecimal int"
|
||||||
value.copy< std::string > (YY_MOVE (that.value));
|
value.copy< std::string > (YY_MOVE (that.value));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -4650,6 +4754,10 @@ switch (yykind)
|
|||||||
value.move< animtree_ptr > (YY_MOVE (s.value));
|
value.move< animtree_ptr > (YY_MOVE (s.value));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case symbol_kind::S_color: // color
|
||||||
|
value.move< color_ptr > (YY_MOVE (s.value));
|
||||||
|
break;
|
||||||
|
|
||||||
case symbol_kind::S_constant: // constant
|
case symbol_kind::S_constant: // constant
|
||||||
value.move< constant_ptr > (YY_MOVE (s.value));
|
value.move< constant_ptr > (YY_MOVE (s.value));
|
||||||
break;
|
break;
|
||||||
@ -4700,7 +4808,6 @@ switch (yykind)
|
|||||||
value.move< file_ptr > (YY_MOVE (s.value));
|
value.move< file_ptr > (YY_MOVE (s.value));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case symbol_kind::S_neg_float: // neg_float
|
|
||||||
case symbol_kind::S_float: // float
|
case symbol_kind::S_float: // float
|
||||||
value.move< float_ptr > (YY_MOVE (s.value));
|
value.move< float_ptr > (YY_MOVE (s.value));
|
||||||
break;
|
break;
|
||||||
@ -4713,7 +4820,6 @@ switch (yykind)
|
|||||||
value.move< include_ptr > (YY_MOVE (s.value));
|
value.move< include_ptr > (YY_MOVE (s.value));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case symbol_kind::S_neg_integer: // neg_integer
|
|
||||||
case symbol_kind::S_integer: // integer
|
case symbol_kind::S_integer: // integer
|
||||||
value.move< integer_ptr > (YY_MOVE (s.value));
|
value.move< integer_ptr > (YY_MOVE (s.value));
|
||||||
break;
|
break;
|
||||||
@ -4755,8 +4861,12 @@ switch (yykind)
|
|||||||
case symbol_kind::S_NAME: // "identifier"
|
case symbol_kind::S_NAME: // "identifier"
|
||||||
case symbol_kind::S_STRING: // "string literal"
|
case symbol_kind::S_STRING: // "string literal"
|
||||||
case symbol_kind::S_ISTRING: // "localized string"
|
case symbol_kind::S_ISTRING: // "localized string"
|
||||||
|
case symbol_kind::S_COLOR: // "color"
|
||||||
case symbol_kind::S_FLOAT: // "float"
|
case symbol_kind::S_FLOAT: // "float"
|
||||||
case symbol_kind::S_INTEGER: // "int"
|
case symbol_kind::S_INT_DEC: // "int"
|
||||||
|
case symbol_kind::S_INT_OCT: // "octal int"
|
||||||
|
case symbol_kind::S_INT_BIN: // "binary int"
|
||||||
|
case symbol_kind::S_INT_HEX: // "hexadecimal int"
|
||||||
value.move< std::string > (YY_MOVE (s.value));
|
value.move< std::string > (YY_MOVE (s.value));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -4953,7 +5063,7 @@ switch (yykind)
|
|||||||
|
|
||||||
#line 13 "parser.ypp"
|
#line 13 "parser.ypp"
|
||||||
} } } // xsk::gsc::s1
|
} } } // xsk::gsc::s1
|
||||||
#line 4957 "parser.hpp"
|
#line 5067 "parser.hpp"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -791,6 +791,7 @@ void compiler::emit_expr(const gsc::context_ptr& ctx, const gsc::expr_ptr& expr)
|
|||||||
case gsc::node_t::data_name: emit_local_variable(ctx, expr.as_name); break;
|
case gsc::node_t::data_name: emit_local_variable(ctx, expr.as_name); break;
|
||||||
case gsc::node_t::data_istring: emit_istring(ctx, expr.as_istring); break;
|
case gsc::node_t::data_istring: emit_istring(ctx, expr.as_istring); break;
|
||||||
case gsc::node_t::data_string: emit_string(ctx, expr.as_string); break;
|
case gsc::node_t::data_string: emit_string(ctx, expr.as_string); break;
|
||||||
|
case gsc::node_t::data_color: emit_color(ctx, expr.as_color); break;
|
||||||
case gsc::node_t::data_vector: emit_vector(ctx, expr.as_vector); break;
|
case gsc::node_t::data_vector: emit_vector(ctx, expr.as_vector); break;
|
||||||
case gsc::node_t::data_float: emit_float(ctx, expr.as_float); break;
|
case gsc::node_t::data_float: emit_float(ctx, expr.as_float); break;
|
||||||
case gsc::node_t::data_integer: emit_integer(ctx, expr.as_integer); break;
|
case gsc::node_t::data_integer: emit_integer(ctx, expr.as_integer); break;
|
||||||
@ -1612,6 +1613,30 @@ void compiler::emit_string(const gsc::context_ptr& ctx, const gsc::string_ptr& s
|
|||||||
emit_opcode(ctx, opcode::OP_GetString, str->value);
|
emit_opcode(ctx, opcode::OP_GetString, str->value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void compiler::emit_color(const gsc::context_ptr& ctx, const gsc::color_ptr& color)
|
||||||
|
{
|
||||||
|
std::vector<std::string> data;
|
||||||
|
std::string x, y, z;
|
||||||
|
|
||||||
|
if(color->value.size() == 3)
|
||||||
|
{
|
||||||
|
x = "0x" + color->value.substr(0, 1) + color->value.substr(0, 1);
|
||||||
|
y = "0x" + color->value.substr(1, 1) + color->value.substr(1, 1);
|
||||||
|
z = "0x" + color->value.substr(2, 1) + color->value.substr(2, 1);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
x = "0x" + color->value.substr(0, 2);
|
||||||
|
y = "0x" + color->value.substr(2, 2);
|
||||||
|
z = "0x" + color->value.substr(4, 2);
|
||||||
|
}
|
||||||
|
|
||||||
|
data.push_back(gsc::utils::string::hex_to_dec(x.data()));
|
||||||
|
data.push_back(gsc::utils::string::hex_to_dec(y.data()));
|
||||||
|
data.push_back(gsc::utils::string::hex_to_dec(z.data()));
|
||||||
|
emit_opcode(ctx, opcode::OP_GetVector, data);
|
||||||
|
}
|
||||||
|
|
||||||
void compiler::emit_vector(const gsc::context_ptr& ctx, const gsc::vector_ptr& vec)
|
void compiler::emit_vector(const gsc::context_ptr& ctx, const gsc::vector_ptr& vec)
|
||||||
{
|
{
|
||||||
std::vector<std::string> data;
|
std::vector<std::string> data;
|
||||||
|
@ -102,6 +102,7 @@ private:
|
|||||||
void emit_animation(const gsc::context_ptr& ctx, const gsc::animation_ptr& animation);
|
void emit_animation(const gsc::context_ptr& ctx, const gsc::animation_ptr& animation);
|
||||||
void emit_istring(const gsc::context_ptr& ctx, const gsc::istring_ptr& str);
|
void emit_istring(const gsc::context_ptr& ctx, const gsc::istring_ptr& str);
|
||||||
void emit_string(const gsc::context_ptr& ctx, const gsc::string_ptr& str);
|
void emit_string(const gsc::context_ptr& ctx, const gsc::string_ptr& str);
|
||||||
|
void emit_color(const gsc::context_ptr& ctx, const gsc::color_ptr& color);
|
||||||
void emit_vector(const gsc::context_ptr& ctx, const gsc::vector_ptr& vec);
|
void emit_vector(const gsc::context_ptr& ctx, const gsc::vector_ptr& vec);
|
||||||
void emit_float(const gsc::context_ptr& ctx, const gsc::float_ptr& num);
|
void emit_float(const gsc::context_ptr& ctx, const gsc::float_ptr& num);
|
||||||
void emit_integer(const gsc::context_ptr& ctx, const gsc::integer_ptr& num);
|
void emit_integer(const gsc::context_ptr& ctx, const gsc::integer_ptr& num);
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -700,7 +700,7 @@ extern int yylex (yyscan_t yyscanner);
|
|||||||
#undef yyTABLES_NAME
|
#undef yyTABLES_NAME
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#line 150 "lexer.lpp"
|
#line 158 "lexer.lpp"
|
||||||
|
|
||||||
|
|
||||||
#line 706 "lexer.hpp"
|
#line 706 "lexer.hpp"
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -417,31 +417,34 @@ namespace xsk { namespace gsc { namespace s2 {
|
|||||||
// animtree
|
// animtree
|
||||||
char dummy3[sizeof (animtree_ptr)];
|
char dummy3[sizeof (animtree_ptr)];
|
||||||
|
|
||||||
|
// color
|
||||||
|
char dummy4[sizeof (color_ptr)];
|
||||||
|
|
||||||
// constant
|
// constant
|
||||||
char dummy4[sizeof (constant_ptr)];
|
char dummy5[sizeof (constant_ptr)];
|
||||||
|
|
||||||
// define
|
// define
|
||||||
char dummy5[sizeof (define_ptr)];
|
char dummy6[sizeof (define_ptr)];
|
||||||
|
|
||||||
// empty_array
|
// empty_array
|
||||||
char dummy6[sizeof (empty_array_ptr)];
|
char dummy7[sizeof (empty_array_ptr)];
|
||||||
|
|
||||||
// expr_arguments
|
// expr_arguments
|
||||||
// expr_arguments_filled
|
// expr_arguments_filled
|
||||||
// expr_arguments_empty
|
// expr_arguments_empty
|
||||||
char dummy7[sizeof (expr_arguments_ptr)];
|
char dummy8[sizeof (expr_arguments_ptr)];
|
||||||
|
|
||||||
// expr_assign
|
// expr_assign
|
||||||
char dummy8[sizeof (expr_assign_ptr)];
|
char dummy9[sizeof (expr_assign_ptr)];
|
||||||
|
|
||||||
// expr_call
|
// expr_call
|
||||||
// expr_call_thread
|
// expr_call_thread
|
||||||
// expr_call_childthread
|
// expr_call_childthread
|
||||||
char dummy9[sizeof (expr_call_ptr)];
|
char dummy10[sizeof (expr_call_ptr)];
|
||||||
|
|
||||||
// expr_call_function
|
// expr_call_function
|
||||||
// expr_call_pointer
|
// expr_call_pointer
|
||||||
char dummy10[sizeof (expr_call_type_ptr)];
|
char dummy11[sizeof (expr_call_type_ptr)];
|
||||||
|
|
||||||
// for_expr
|
// for_expr
|
||||||
// expr
|
// expr
|
||||||
@ -449,36 +452,34 @@ namespace xsk { namespace gsc { namespace s2 {
|
|||||||
// expr_ternary
|
// expr_ternary
|
||||||
// expr_binary
|
// expr_binary
|
||||||
// expr_primitive
|
// expr_primitive
|
||||||
char dummy11[sizeof (expr_ptr)];
|
char dummy12[sizeof (expr_ptr)];
|
||||||
|
|
||||||
// false
|
// false
|
||||||
char dummy12[sizeof (false_ptr)];
|
char dummy13[sizeof (false_ptr)];
|
||||||
|
|
||||||
// file
|
// file
|
||||||
char dummy13[sizeof (file_ptr)];
|
char dummy14[sizeof (file_ptr)];
|
||||||
|
|
||||||
// neg_float
|
|
||||||
// float
|
// float
|
||||||
char dummy14[sizeof (float_ptr)];
|
char dummy15[sizeof (float_ptr)];
|
||||||
|
|
||||||
// game
|
// game
|
||||||
char dummy15[sizeof (game_ptr)];
|
char dummy16[sizeof (game_ptr)];
|
||||||
|
|
||||||
// include
|
// include
|
||||||
char dummy16[sizeof (include_ptr)];
|
char dummy17[sizeof (include_ptr)];
|
||||||
|
|
||||||
// neg_integer
|
|
||||||
// integer
|
// integer
|
||||||
char dummy17[sizeof (integer_ptr)];
|
char dummy18[sizeof (integer_ptr)];
|
||||||
|
|
||||||
// istring
|
// istring
|
||||||
char dummy18[sizeof (istring_ptr)];
|
char dummy19[sizeof (istring_ptr)];
|
||||||
|
|
||||||
// level
|
// level
|
||||||
char dummy19[sizeof (level_ptr)];
|
char dummy20[sizeof (level_ptr)];
|
||||||
|
|
||||||
// name
|
// name
|
||||||
char dummy20[sizeof (name_ptr)];
|
char dummy21[sizeof (name_ptr)];
|
||||||
|
|
||||||
// expr_function
|
// expr_function
|
||||||
// expr_add_array
|
// expr_add_array
|
||||||
@ -486,122 +487,126 @@ namespace xsk { namespace gsc { namespace s2 {
|
|||||||
// expr_field
|
// expr_field
|
||||||
// expr_size
|
// expr_size
|
||||||
// object
|
// object
|
||||||
char dummy21[sizeof (node_ptr)];
|
char dummy22[sizeof (node_ptr)];
|
||||||
|
|
||||||
// parameters
|
// parameters
|
||||||
char dummy22[sizeof (parameters_ptr)];
|
char dummy23[sizeof (parameters_ptr)];
|
||||||
|
|
||||||
// program
|
// program
|
||||||
char dummy23[sizeof (program_ptr)];
|
char dummy24[sizeof (program_ptr)];
|
||||||
|
|
||||||
// self
|
// self
|
||||||
char dummy24[sizeof (self_ptr)];
|
char dummy25[sizeof (self_ptr)];
|
||||||
|
|
||||||
// "file path"
|
// "file path"
|
||||||
// "identifier"
|
// "identifier"
|
||||||
// "string literal"
|
// "string literal"
|
||||||
// "localized string"
|
// "localized string"
|
||||||
|
// "color"
|
||||||
// "float"
|
// "float"
|
||||||
// "int"
|
// "int"
|
||||||
char dummy25[sizeof (std::string)];
|
// "octal int"
|
||||||
|
// "binary int"
|
||||||
|
// "hexadecimal int"
|
||||||
|
char dummy26[sizeof (std::string)];
|
||||||
|
|
||||||
// stmt_assign
|
// stmt_assign
|
||||||
char dummy26[sizeof (stmt_assign_ptr)];
|
char dummy27[sizeof (stmt_assign_ptr)];
|
||||||
|
|
||||||
// stmt_break
|
// stmt_break
|
||||||
char dummy27[sizeof (stmt_break_ptr)];
|
char dummy28[sizeof (stmt_break_ptr)];
|
||||||
|
|
||||||
// stmt_breakpoint
|
// stmt_breakpoint
|
||||||
char dummy28[sizeof (stmt_breakpoint_ptr)];
|
char dummy29[sizeof (stmt_breakpoint_ptr)];
|
||||||
|
|
||||||
// stmt_call
|
// stmt_call
|
||||||
char dummy29[sizeof (stmt_call_ptr)];
|
char dummy30[sizeof (stmt_call_ptr)];
|
||||||
|
|
||||||
// stmt_case
|
// stmt_case
|
||||||
char dummy30[sizeof (stmt_case_ptr)];
|
char dummy31[sizeof (stmt_case_ptr)];
|
||||||
|
|
||||||
// stmt_continue
|
// stmt_continue
|
||||||
char dummy31[sizeof (stmt_continue_ptr)];
|
char dummy32[sizeof (stmt_continue_ptr)];
|
||||||
|
|
||||||
// stmt_default
|
// stmt_default
|
||||||
char dummy32[sizeof (stmt_default_ptr)];
|
char dummy33[sizeof (stmt_default_ptr)];
|
||||||
|
|
||||||
// stmt_endon
|
// stmt_endon
|
||||||
char dummy33[sizeof (stmt_endon_ptr)];
|
char dummy34[sizeof (stmt_endon_ptr)];
|
||||||
|
|
||||||
// stmt_for
|
// stmt_for
|
||||||
char dummy34[sizeof (stmt_for_ptr)];
|
char dummy35[sizeof (stmt_for_ptr)];
|
||||||
|
|
||||||
// stmt_foreach
|
// stmt_foreach
|
||||||
char dummy35[sizeof (stmt_foreach_ptr)];
|
char dummy36[sizeof (stmt_foreach_ptr)];
|
||||||
|
|
||||||
// stmt_if
|
// stmt_if
|
||||||
char dummy36[sizeof (stmt_if_ptr)];
|
char dummy37[sizeof (stmt_if_ptr)];
|
||||||
|
|
||||||
// stmt_ifelse
|
// stmt_ifelse
|
||||||
char dummy37[sizeof (stmt_ifelse_ptr)];
|
char dummy38[sizeof (stmt_ifelse_ptr)];
|
||||||
|
|
||||||
// stmt_block
|
// stmt_block
|
||||||
// stmt_list
|
// stmt_list
|
||||||
char dummy38[sizeof (stmt_list_ptr)];
|
char dummy39[sizeof (stmt_list_ptr)];
|
||||||
|
|
||||||
// stmt_notify
|
// stmt_notify
|
||||||
char dummy39[sizeof (stmt_notify_ptr)];
|
char dummy40[sizeof (stmt_notify_ptr)];
|
||||||
|
|
||||||
// stmt_prof_begin
|
// stmt_prof_begin
|
||||||
char dummy40[sizeof (stmt_prof_begin_ptr)];
|
char dummy41[sizeof (stmt_prof_begin_ptr)];
|
||||||
|
|
||||||
// stmt_prof_end
|
// stmt_prof_end
|
||||||
char dummy41[sizeof (stmt_prof_end_ptr)];
|
char dummy42[sizeof (stmt_prof_end_ptr)];
|
||||||
|
|
||||||
// stmt
|
// stmt
|
||||||
// for_stmt
|
// for_stmt
|
||||||
char dummy42[sizeof (stmt_ptr)];
|
char dummy43[sizeof (stmt_ptr)];
|
||||||
|
|
||||||
// stmt_return
|
// stmt_return
|
||||||
char dummy43[sizeof (stmt_return_ptr)];
|
char dummy44[sizeof (stmt_return_ptr)];
|
||||||
|
|
||||||
// stmt_switch
|
// stmt_switch
|
||||||
char dummy44[sizeof (stmt_switch_ptr)];
|
char dummy45[sizeof (stmt_switch_ptr)];
|
||||||
|
|
||||||
// stmt_wait
|
// stmt_wait
|
||||||
char dummy45[sizeof (stmt_wait_ptr)];
|
char dummy46[sizeof (stmt_wait_ptr)];
|
||||||
|
|
||||||
// stmt_waitframe
|
// stmt_waitframe
|
||||||
char dummy46[sizeof (stmt_waitframe_ptr)];
|
char dummy47[sizeof (stmt_waitframe_ptr)];
|
||||||
|
|
||||||
// stmt_waittill
|
// stmt_waittill
|
||||||
char dummy47[sizeof (stmt_waittill_ptr)];
|
char dummy48[sizeof (stmt_waittill_ptr)];
|
||||||
|
|
||||||
// stmt_waittillframeend
|
// stmt_waittillframeend
|
||||||
char dummy48[sizeof (stmt_waittillframeend_ptr)];
|
char dummy49[sizeof (stmt_waittillframeend_ptr)];
|
||||||
|
|
||||||
// stmt_waittillmatch
|
// stmt_waittillmatch
|
||||||
char dummy49[sizeof (stmt_waittillmatch_ptr)];
|
char dummy50[sizeof (stmt_waittillmatch_ptr)];
|
||||||
|
|
||||||
// stmt_while
|
// stmt_while
|
||||||
char dummy50[sizeof (stmt_while_ptr)];
|
char dummy51[sizeof (stmt_while_ptr)];
|
||||||
|
|
||||||
// string
|
// string
|
||||||
char dummy51[sizeof (string_ptr)];
|
char dummy52[sizeof (string_ptr)];
|
||||||
|
|
||||||
// thisthread
|
// thisthread
|
||||||
char dummy52[sizeof (thisthread_ptr)];
|
char dummy53[sizeof (thisthread_ptr)];
|
||||||
|
|
||||||
// thread
|
// thread
|
||||||
char dummy53[sizeof (thread_ptr)];
|
char dummy54[sizeof (thread_ptr)];
|
||||||
|
|
||||||
// true
|
// true
|
||||||
char dummy54[sizeof (true_ptr)];
|
char dummy55[sizeof (true_ptr)];
|
||||||
|
|
||||||
// undefined
|
// undefined
|
||||||
char dummy55[sizeof (undefined_ptr)];
|
char dummy56[sizeof (undefined_ptr)];
|
||||||
|
|
||||||
// usingtree
|
// usingtree
|
||||||
char dummy56[sizeof (usingtree_ptr)];
|
char dummy57[sizeof (usingtree_ptr)];
|
||||||
|
|
||||||
// vector
|
// vector
|
||||||
char dummy57[sizeof (vector_ptr)];
|
char dummy58[sizeof (vector_ptr)];
|
||||||
};
|
};
|
||||||
|
|
||||||
/// The size of the largest semantic type.
|
/// The size of the largest semantic type.
|
||||||
@ -739,17 +744,21 @@ namespace xsk { namespace gsc { namespace s2 {
|
|||||||
NAME = 86, // "identifier"
|
NAME = 86, // "identifier"
|
||||||
STRING = 87, // "string literal"
|
STRING = 87, // "string literal"
|
||||||
ISTRING = 88, // "localized string"
|
ISTRING = 88, // "localized string"
|
||||||
FLOAT = 89, // "float"
|
COLOR = 89, // "color"
|
||||||
INTEGER = 90, // "int"
|
FLOAT = 90, // "float"
|
||||||
ADD_ARRAY = 91, // ADD_ARRAY
|
INT_DEC = 91, // "int"
|
||||||
THEN = 92, // THEN
|
INT_OCT = 92, // "octal int"
|
||||||
TERN = 93, // TERN
|
INT_BIN = 93, // "binary int"
|
||||||
NEG = 94, // NEG
|
INT_HEX = 94, // "hexadecimal int"
|
||||||
ANIMREF = 95, // ANIMREF
|
ADD_ARRAY = 95, // ADD_ARRAY
|
||||||
PREINC = 96, // PREINC
|
THEN = 96, // THEN
|
||||||
PREDEC = 97, // PREDEC
|
TERN = 97, // TERN
|
||||||
POSTINC = 98, // POSTINC
|
NEG = 98, // NEG
|
||||||
POSTDEC = 99 // POSTDEC
|
ANIMREF = 99, // ANIMREF
|
||||||
|
PREINC = 100, // PREINC
|
||||||
|
PREDEC = 101, // PREDEC
|
||||||
|
POSTINC = 102, // POSTINC
|
||||||
|
POSTDEC = 103 // POSTDEC
|
||||||
};
|
};
|
||||||
/// Backward compatibility alias (Bison 3.6).
|
/// Backward compatibility alias (Bison 3.6).
|
||||||
typedef token_kind_type yytokentype;
|
typedef token_kind_type yytokentype;
|
||||||
@ -766,7 +775,7 @@ namespace xsk { namespace gsc { namespace s2 {
|
|||||||
{
|
{
|
||||||
enum symbol_kind_type
|
enum symbol_kind_type
|
||||||
{
|
{
|
||||||
YYNTOKENS = 100, ///< Number of tokens.
|
YYNTOKENS = 104, ///< Number of tokens.
|
||||||
S_YYEMPTY = -2,
|
S_YYEMPTY = -2,
|
||||||
S_YYEOF = 0, // "end of file"
|
S_YYEOF = 0, // "end of file"
|
||||||
S_YYerror = 1, // error
|
S_YYerror = 1, // error
|
||||||
@ -857,94 +866,97 @@ namespace xsk { namespace gsc { namespace s2 {
|
|||||||
S_NAME = 86, // "identifier"
|
S_NAME = 86, // "identifier"
|
||||||
S_STRING = 87, // "string literal"
|
S_STRING = 87, // "string literal"
|
||||||
S_ISTRING = 88, // "localized string"
|
S_ISTRING = 88, // "localized string"
|
||||||
S_FLOAT = 89, // "float"
|
S_COLOR = 89, // "color"
|
||||||
S_INTEGER = 90, // "int"
|
S_FLOAT = 90, // "float"
|
||||||
S_ADD_ARRAY = 91, // ADD_ARRAY
|
S_INT_DEC = 91, // "int"
|
||||||
S_THEN = 92, // THEN
|
S_INT_OCT = 92, // "octal int"
|
||||||
S_TERN = 93, // TERN
|
S_INT_BIN = 93, // "binary int"
|
||||||
S_NEG = 94, // NEG
|
S_INT_HEX = 94, // "hexadecimal int"
|
||||||
S_ANIMREF = 95, // ANIMREF
|
S_ADD_ARRAY = 95, // ADD_ARRAY
|
||||||
S_PREINC = 96, // PREINC
|
S_THEN = 96, // THEN
|
||||||
S_PREDEC = 97, // PREDEC
|
S_TERN = 97, // TERN
|
||||||
S_POSTINC = 98, // POSTINC
|
S_NEG = 98, // NEG
|
||||||
S_POSTDEC = 99, // POSTDEC
|
S_ANIMREF = 99, // ANIMREF
|
||||||
S_YYACCEPT = 100, // $accept
|
S_PREINC = 100, // PREINC
|
||||||
S_root = 101, // root
|
S_PREDEC = 101, // PREDEC
|
||||||
S_program = 102, // program
|
S_POSTINC = 102, // POSTINC
|
||||||
S_include = 103, // include
|
S_POSTDEC = 103, // POSTDEC
|
||||||
S_define = 104, // define
|
S_YYACCEPT = 104, // $accept
|
||||||
S_usingtree = 105, // usingtree
|
S_root = 105, // root
|
||||||
S_constant = 106, // constant
|
S_program = 106, // program
|
||||||
S_thread = 107, // thread
|
S_include = 107, // include
|
||||||
S_parameters = 108, // parameters
|
S_define = 108, // define
|
||||||
S_stmt = 109, // stmt
|
S_usingtree = 109, // usingtree
|
||||||
S_stmt_block = 110, // stmt_block
|
S_constant = 110, // constant
|
||||||
S_stmt_list = 111, // stmt_list
|
S_thread = 111, // thread
|
||||||
S_stmt_call = 112, // stmt_call
|
S_parameters = 112, // parameters
|
||||||
S_stmt_assign = 113, // stmt_assign
|
S_stmt = 113, // stmt
|
||||||
S_stmt_endon = 114, // stmt_endon
|
S_stmt_block = 114, // stmt_block
|
||||||
S_stmt_notify = 115, // stmt_notify
|
S_stmt_list = 115, // stmt_list
|
||||||
S_stmt_wait = 116, // stmt_wait
|
S_stmt_call = 116, // stmt_call
|
||||||
S_stmt_waittill = 117, // stmt_waittill
|
S_stmt_assign = 117, // stmt_assign
|
||||||
S_stmt_waittillmatch = 118, // stmt_waittillmatch
|
S_stmt_endon = 118, // stmt_endon
|
||||||
S_stmt_waittillframeend = 119, // stmt_waittillframeend
|
S_stmt_notify = 119, // stmt_notify
|
||||||
S_stmt_waitframe = 120, // stmt_waitframe
|
S_stmt_wait = 120, // stmt_wait
|
||||||
S_stmt_if = 121, // stmt_if
|
S_stmt_waittill = 121, // stmt_waittill
|
||||||
S_stmt_ifelse = 122, // stmt_ifelse
|
S_stmt_waittillmatch = 122, // stmt_waittillmatch
|
||||||
S_stmt_while = 123, // stmt_while
|
S_stmt_waittillframeend = 123, // stmt_waittillframeend
|
||||||
S_stmt_for = 124, // stmt_for
|
S_stmt_waitframe = 124, // stmt_waitframe
|
||||||
S_stmt_foreach = 125, // stmt_foreach
|
S_stmt_if = 125, // stmt_if
|
||||||
S_stmt_switch = 126, // stmt_switch
|
S_stmt_ifelse = 126, // stmt_ifelse
|
||||||
S_stmt_case = 127, // stmt_case
|
S_stmt_while = 127, // stmt_while
|
||||||
S_stmt_default = 128, // stmt_default
|
S_stmt_for = 128, // stmt_for
|
||||||
S_stmt_break = 129, // stmt_break
|
S_stmt_foreach = 129, // stmt_foreach
|
||||||
S_stmt_continue = 130, // stmt_continue
|
S_stmt_switch = 130, // stmt_switch
|
||||||
S_stmt_return = 131, // stmt_return
|
S_stmt_case = 131, // stmt_case
|
||||||
S_stmt_breakpoint = 132, // stmt_breakpoint
|
S_stmt_default = 132, // stmt_default
|
||||||
S_stmt_prof_begin = 133, // stmt_prof_begin
|
S_stmt_break = 133, // stmt_break
|
||||||
S_stmt_prof_end = 134, // stmt_prof_end
|
S_stmt_continue = 134, // stmt_continue
|
||||||
S_for_stmt = 135, // for_stmt
|
S_stmt_return = 135, // stmt_return
|
||||||
S_for_expr = 136, // for_expr
|
S_stmt_breakpoint = 136, // stmt_breakpoint
|
||||||
S_expr = 137, // expr
|
S_stmt_prof_begin = 137, // stmt_prof_begin
|
||||||
S_expr_assign = 138, // expr_assign
|
S_stmt_prof_end = 138, // stmt_prof_end
|
||||||
S_expr_compare = 139, // expr_compare
|
S_for_stmt = 139, // for_stmt
|
||||||
S_expr_ternary = 140, // expr_ternary
|
S_for_expr = 140, // for_expr
|
||||||
S_expr_binary = 141, // expr_binary
|
S_expr = 141, // expr
|
||||||
S_expr_primitive = 142, // expr_primitive
|
S_expr_assign = 142, // expr_assign
|
||||||
S_expr_call = 143, // expr_call
|
S_expr_compare = 143, // expr_compare
|
||||||
S_expr_call_thread = 144, // expr_call_thread
|
S_expr_ternary = 144, // expr_ternary
|
||||||
S_expr_call_childthread = 145, // expr_call_childthread
|
S_expr_binary = 145, // expr_binary
|
||||||
S_expr_call_function = 146, // expr_call_function
|
S_expr_primitive = 146, // expr_primitive
|
||||||
S_expr_call_pointer = 147, // expr_call_pointer
|
S_expr_call = 147, // expr_call
|
||||||
S_expr_arguments = 148, // expr_arguments
|
S_expr_call_thread = 148, // expr_call_thread
|
||||||
S_expr_arguments_filled = 149, // expr_arguments_filled
|
S_expr_call_childthread = 149, // expr_call_childthread
|
||||||
S_expr_arguments_empty = 150, // expr_arguments_empty
|
S_expr_call_function = 150, // expr_call_function
|
||||||
S_expr_function = 151, // expr_function
|
S_expr_call_pointer = 151, // expr_call_pointer
|
||||||
S_expr_add_array = 152, // expr_add_array
|
S_expr_arguments = 152, // expr_arguments
|
||||||
S_expr_array = 153, // expr_array
|
S_expr_arguments_filled = 153, // expr_arguments_filled
|
||||||
S_expr_field = 154, // expr_field
|
S_expr_arguments_empty = 154, // expr_arguments_empty
|
||||||
S_expr_size = 155, // expr_size
|
S_expr_function = 155, // expr_function
|
||||||
S_object = 156, // object
|
S_expr_add_array = 156, // expr_add_array
|
||||||
S_thisthread = 157, // thisthread
|
S_expr_array = 157, // expr_array
|
||||||
S_empty_array = 158, // empty_array
|
S_expr_field = 158, // expr_field
|
||||||
S_undefined = 159, // undefined
|
S_expr_size = 159, // expr_size
|
||||||
S_game = 160, // game
|
S_object = 160, // object
|
||||||
S_self = 161, // self
|
S_float = 161, // float
|
||||||
S_anim = 162, // anim
|
S_integer = 162, // integer
|
||||||
S_level = 163, // level
|
S_thisthread = 163, // thisthread
|
||||||
S_animation = 164, // animation
|
S_empty_array = 164, // empty_array
|
||||||
S_animtree = 165, // animtree
|
S_undefined = 165, // undefined
|
||||||
S_name = 166, // name
|
S_game = 166, // game
|
||||||
S_file = 167, // file
|
S_self = 167, // self
|
||||||
S_istring = 168, // istring
|
S_anim = 168, // anim
|
||||||
S_string = 169, // string
|
S_level = 169, // level
|
||||||
S_vector = 170, // vector
|
S_animation = 170, // animation
|
||||||
S_neg_float = 171, // neg_float
|
S_animtree = 171, // animtree
|
||||||
S_neg_integer = 172, // neg_integer
|
S_name = 172, // name
|
||||||
S_float = 173, // float
|
S_file = 173, // file
|
||||||
S_integer = 174, // integer
|
S_istring = 174, // istring
|
||||||
S_false = 175, // false
|
S_string = 175, // string
|
||||||
S_true = 176 // true
|
S_color = 176, // color
|
||||||
|
S_vector = 177, // vector
|
||||||
|
S_false = 178, // false
|
||||||
|
S_true = 179 // true
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -993,6 +1005,10 @@ namespace xsk { namespace gsc { namespace s2 {
|
|||||||
value.move< animtree_ptr > (std::move (that.value));
|
value.move< animtree_ptr > (std::move (that.value));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case symbol_kind::S_color: // color
|
||||||
|
value.move< color_ptr > (std::move (that.value));
|
||||||
|
break;
|
||||||
|
|
||||||
case symbol_kind::S_constant: // constant
|
case symbol_kind::S_constant: // constant
|
||||||
value.move< constant_ptr > (std::move (that.value));
|
value.move< constant_ptr > (std::move (that.value));
|
||||||
break;
|
break;
|
||||||
@ -1043,7 +1059,6 @@ namespace xsk { namespace gsc { namespace s2 {
|
|||||||
value.move< file_ptr > (std::move (that.value));
|
value.move< file_ptr > (std::move (that.value));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case symbol_kind::S_neg_float: // neg_float
|
|
||||||
case symbol_kind::S_float: // float
|
case symbol_kind::S_float: // float
|
||||||
value.move< float_ptr > (std::move (that.value));
|
value.move< float_ptr > (std::move (that.value));
|
||||||
break;
|
break;
|
||||||
@ -1056,7 +1071,6 @@ namespace xsk { namespace gsc { namespace s2 {
|
|||||||
value.move< include_ptr > (std::move (that.value));
|
value.move< include_ptr > (std::move (that.value));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case symbol_kind::S_neg_integer: // neg_integer
|
|
||||||
case symbol_kind::S_integer: // integer
|
case symbol_kind::S_integer: // integer
|
||||||
value.move< integer_ptr > (std::move (that.value));
|
value.move< integer_ptr > (std::move (that.value));
|
||||||
break;
|
break;
|
||||||
@ -1098,8 +1112,12 @@ namespace xsk { namespace gsc { namespace s2 {
|
|||||||
case symbol_kind::S_NAME: // "identifier"
|
case symbol_kind::S_NAME: // "identifier"
|
||||||
case symbol_kind::S_STRING: // "string literal"
|
case symbol_kind::S_STRING: // "string literal"
|
||||||
case symbol_kind::S_ISTRING: // "localized string"
|
case symbol_kind::S_ISTRING: // "localized string"
|
||||||
|
case symbol_kind::S_COLOR: // "color"
|
||||||
case symbol_kind::S_FLOAT: // "float"
|
case symbol_kind::S_FLOAT: // "float"
|
||||||
case symbol_kind::S_INTEGER: // "int"
|
case symbol_kind::S_INT_DEC: // "int"
|
||||||
|
case symbol_kind::S_INT_OCT: // "octal int"
|
||||||
|
case symbol_kind::S_INT_BIN: // "binary int"
|
||||||
|
case symbol_kind::S_INT_HEX: // "hexadecimal int"
|
||||||
value.move< std::string > (std::move (that.value));
|
value.move< std::string > (std::move (that.value));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -1298,6 +1316,20 @@ namespace xsk { namespace gsc { namespace s2 {
|
|||||||
{}
|
{}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if 201103L <= YY_CPLUSPLUS
|
||||||
|
basic_symbol (typename Base::kind_type t, color_ptr&& v, location_type&& l)
|
||||||
|
: Base (t)
|
||||||
|
, value (std::move (v))
|
||||||
|
, location (std::move (l))
|
||||||
|
{}
|
||||||
|
#else
|
||||||
|
basic_symbol (typename Base::kind_type t, const color_ptr& v, const location_type& l)
|
||||||
|
: Base (t)
|
||||||
|
, value (v)
|
||||||
|
, location (l)
|
||||||
|
{}
|
||||||
|
#endif
|
||||||
|
|
||||||
#if 201103L <= YY_CPLUSPLUS
|
#if 201103L <= YY_CPLUSPLUS
|
||||||
basic_symbol (typename Base::kind_type t, constant_ptr&& v, location_type&& l)
|
basic_symbol (typename Base::kind_type t, constant_ptr&& v, location_type&& l)
|
||||||
: Base (t)
|
: Base (t)
|
||||||
@ -2088,6 +2120,10 @@ switch (yykind)
|
|||||||
value.template destroy< animtree_ptr > ();
|
value.template destroy< animtree_ptr > ();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case symbol_kind::S_color: // color
|
||||||
|
value.template destroy< color_ptr > ();
|
||||||
|
break;
|
||||||
|
|
||||||
case symbol_kind::S_constant: // constant
|
case symbol_kind::S_constant: // constant
|
||||||
value.template destroy< constant_ptr > ();
|
value.template destroy< constant_ptr > ();
|
||||||
break;
|
break;
|
||||||
@ -2138,7 +2174,6 @@ switch (yykind)
|
|||||||
value.template destroy< file_ptr > ();
|
value.template destroy< file_ptr > ();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case symbol_kind::S_neg_float: // neg_float
|
|
||||||
case symbol_kind::S_float: // float
|
case symbol_kind::S_float: // float
|
||||||
value.template destroy< float_ptr > ();
|
value.template destroy< float_ptr > ();
|
||||||
break;
|
break;
|
||||||
@ -2151,7 +2186,6 @@ switch (yykind)
|
|||||||
value.template destroy< include_ptr > ();
|
value.template destroy< include_ptr > ();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case symbol_kind::S_neg_integer: // neg_integer
|
|
||||||
case symbol_kind::S_integer: // integer
|
case symbol_kind::S_integer: // integer
|
||||||
value.template destroy< integer_ptr > ();
|
value.template destroy< integer_ptr > ();
|
||||||
break;
|
break;
|
||||||
@ -2193,8 +2227,12 @@ switch (yykind)
|
|||||||
case symbol_kind::S_NAME: // "identifier"
|
case symbol_kind::S_NAME: // "identifier"
|
||||||
case symbol_kind::S_STRING: // "string literal"
|
case symbol_kind::S_STRING: // "string literal"
|
||||||
case symbol_kind::S_ISTRING: // "localized string"
|
case symbol_kind::S_ISTRING: // "localized string"
|
||||||
|
case symbol_kind::S_COLOR: // "color"
|
||||||
case symbol_kind::S_FLOAT: // "float"
|
case symbol_kind::S_FLOAT: // "float"
|
||||||
case symbol_kind::S_INTEGER: // "int"
|
case symbol_kind::S_INT_DEC: // "int"
|
||||||
|
case symbol_kind::S_INT_OCT: // "octal int"
|
||||||
|
case symbol_kind::S_INT_BIN: // "binary int"
|
||||||
|
case symbol_kind::S_INT_HEX: // "hexadecimal int"
|
||||||
value.template destroy< std::string > ();
|
value.template destroy< std::string > ();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -2434,7 +2472,7 @@ switch (yykind)
|
|||||||
: super_type(token_type (tok), v, l)
|
: super_type(token_type (tok), v, l)
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
S2_ASSERT ((token::FILE <= tok && tok <= token::INTEGER));
|
S2_ASSERT ((token::FILE <= tok && tok <= token::INT_HEX));
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -3819,6 +3857,21 @@ switch (yykind)
|
|||||||
return symbol_type (token::ISTRING, v, l);
|
return symbol_type (token::ISTRING, v, l);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
#if 201103L <= YY_CPLUSPLUS
|
||||||
|
static
|
||||||
|
symbol_type
|
||||||
|
make_COLOR (std::string v, location_type l)
|
||||||
|
{
|
||||||
|
return symbol_type (token::COLOR, std::move (v), std::move (l));
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
static
|
||||||
|
symbol_type
|
||||||
|
make_COLOR (const std::string& v, const location_type& l)
|
||||||
|
{
|
||||||
|
return symbol_type (token::COLOR, v, l);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
#if 201103L <= YY_CPLUSPLUS
|
#if 201103L <= YY_CPLUSPLUS
|
||||||
static
|
static
|
||||||
symbol_type
|
symbol_type
|
||||||
@ -3837,16 +3890,61 @@ switch (yykind)
|
|||||||
#if 201103L <= YY_CPLUSPLUS
|
#if 201103L <= YY_CPLUSPLUS
|
||||||
static
|
static
|
||||||
symbol_type
|
symbol_type
|
||||||
make_INTEGER (std::string v, location_type l)
|
make_INT_DEC (std::string v, location_type l)
|
||||||
{
|
{
|
||||||
return symbol_type (token::INTEGER, std::move (v), std::move (l));
|
return symbol_type (token::INT_DEC, std::move (v), std::move (l));
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
static
|
static
|
||||||
symbol_type
|
symbol_type
|
||||||
make_INTEGER (const std::string& v, const location_type& l)
|
make_INT_DEC (const std::string& v, const location_type& l)
|
||||||
{
|
{
|
||||||
return symbol_type (token::INTEGER, v, l);
|
return symbol_type (token::INT_DEC, v, l);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#if 201103L <= YY_CPLUSPLUS
|
||||||
|
static
|
||||||
|
symbol_type
|
||||||
|
make_INT_OCT (std::string v, location_type l)
|
||||||
|
{
|
||||||
|
return symbol_type (token::INT_OCT, std::move (v), std::move (l));
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
static
|
||||||
|
symbol_type
|
||||||
|
make_INT_OCT (const std::string& v, const location_type& l)
|
||||||
|
{
|
||||||
|
return symbol_type (token::INT_OCT, v, l);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#if 201103L <= YY_CPLUSPLUS
|
||||||
|
static
|
||||||
|
symbol_type
|
||||||
|
make_INT_BIN (std::string v, location_type l)
|
||||||
|
{
|
||||||
|
return symbol_type (token::INT_BIN, std::move (v), std::move (l));
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
static
|
||||||
|
symbol_type
|
||||||
|
make_INT_BIN (const std::string& v, const location_type& l)
|
||||||
|
{
|
||||||
|
return symbol_type (token::INT_BIN, v, l);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#if 201103L <= YY_CPLUSPLUS
|
||||||
|
static
|
||||||
|
symbol_type
|
||||||
|
make_INT_HEX (std::string v, location_type l)
|
||||||
|
{
|
||||||
|
return symbol_type (token::INT_HEX, std::move (v), std::move (l));
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
static
|
||||||
|
symbol_type
|
||||||
|
make_INT_HEX (const std::string& v, const location_type& l)
|
||||||
|
{
|
||||||
|
return symbol_type (token::INT_HEX, v, l);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#if 201103L <= YY_CPLUSPLUS
|
#if 201103L <= YY_CPLUSPLUS
|
||||||
@ -4328,8 +4426,8 @@ switch (yykind)
|
|||||||
/// Constants.
|
/// Constants.
|
||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
yylast_ = 1842, ///< Last index in yytable_.
|
yylast_ = 1883, ///< Last index in yytable_.
|
||||||
yynnts_ = 77, ///< Number of nonterminal symbols.
|
yynnts_ = 76, ///< Number of nonterminal symbols.
|
||||||
yyfinal_ = 15 ///< Termination state number.
|
yyfinal_ = 15 ///< Termination state number.
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -4369,6 +4467,10 @@ switch (yykind)
|
|||||||
value.copy< animtree_ptr > (YY_MOVE (that.value));
|
value.copy< animtree_ptr > (YY_MOVE (that.value));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case symbol_kind::S_color: // color
|
||||||
|
value.copy< color_ptr > (YY_MOVE (that.value));
|
||||||
|
break;
|
||||||
|
|
||||||
case symbol_kind::S_constant: // constant
|
case symbol_kind::S_constant: // constant
|
||||||
value.copy< constant_ptr > (YY_MOVE (that.value));
|
value.copy< constant_ptr > (YY_MOVE (that.value));
|
||||||
break;
|
break;
|
||||||
@ -4419,7 +4521,6 @@ switch (yykind)
|
|||||||
value.copy< file_ptr > (YY_MOVE (that.value));
|
value.copy< file_ptr > (YY_MOVE (that.value));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case symbol_kind::S_neg_float: // neg_float
|
|
||||||
case symbol_kind::S_float: // float
|
case symbol_kind::S_float: // float
|
||||||
value.copy< float_ptr > (YY_MOVE (that.value));
|
value.copy< float_ptr > (YY_MOVE (that.value));
|
||||||
break;
|
break;
|
||||||
@ -4432,7 +4533,6 @@ switch (yykind)
|
|||||||
value.copy< include_ptr > (YY_MOVE (that.value));
|
value.copy< include_ptr > (YY_MOVE (that.value));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case symbol_kind::S_neg_integer: // neg_integer
|
|
||||||
case symbol_kind::S_integer: // integer
|
case symbol_kind::S_integer: // integer
|
||||||
value.copy< integer_ptr > (YY_MOVE (that.value));
|
value.copy< integer_ptr > (YY_MOVE (that.value));
|
||||||
break;
|
break;
|
||||||
@ -4474,8 +4574,12 @@ switch (yykind)
|
|||||||
case symbol_kind::S_NAME: // "identifier"
|
case symbol_kind::S_NAME: // "identifier"
|
||||||
case symbol_kind::S_STRING: // "string literal"
|
case symbol_kind::S_STRING: // "string literal"
|
||||||
case symbol_kind::S_ISTRING: // "localized string"
|
case symbol_kind::S_ISTRING: // "localized string"
|
||||||
|
case symbol_kind::S_COLOR: // "color"
|
||||||
case symbol_kind::S_FLOAT: // "float"
|
case symbol_kind::S_FLOAT: // "float"
|
||||||
case symbol_kind::S_INTEGER: // "int"
|
case symbol_kind::S_INT_DEC: // "int"
|
||||||
|
case symbol_kind::S_INT_OCT: // "octal int"
|
||||||
|
case symbol_kind::S_INT_BIN: // "binary int"
|
||||||
|
case symbol_kind::S_INT_HEX: // "hexadecimal int"
|
||||||
value.copy< std::string > (YY_MOVE (that.value));
|
value.copy< std::string > (YY_MOVE (that.value));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -4650,6 +4754,10 @@ switch (yykind)
|
|||||||
value.move< animtree_ptr > (YY_MOVE (s.value));
|
value.move< animtree_ptr > (YY_MOVE (s.value));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case symbol_kind::S_color: // color
|
||||||
|
value.move< color_ptr > (YY_MOVE (s.value));
|
||||||
|
break;
|
||||||
|
|
||||||
case symbol_kind::S_constant: // constant
|
case symbol_kind::S_constant: // constant
|
||||||
value.move< constant_ptr > (YY_MOVE (s.value));
|
value.move< constant_ptr > (YY_MOVE (s.value));
|
||||||
break;
|
break;
|
||||||
@ -4700,7 +4808,6 @@ switch (yykind)
|
|||||||
value.move< file_ptr > (YY_MOVE (s.value));
|
value.move< file_ptr > (YY_MOVE (s.value));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case symbol_kind::S_neg_float: // neg_float
|
|
||||||
case symbol_kind::S_float: // float
|
case symbol_kind::S_float: // float
|
||||||
value.move< float_ptr > (YY_MOVE (s.value));
|
value.move< float_ptr > (YY_MOVE (s.value));
|
||||||
break;
|
break;
|
||||||
@ -4713,7 +4820,6 @@ switch (yykind)
|
|||||||
value.move< include_ptr > (YY_MOVE (s.value));
|
value.move< include_ptr > (YY_MOVE (s.value));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case symbol_kind::S_neg_integer: // neg_integer
|
|
||||||
case symbol_kind::S_integer: // integer
|
case symbol_kind::S_integer: // integer
|
||||||
value.move< integer_ptr > (YY_MOVE (s.value));
|
value.move< integer_ptr > (YY_MOVE (s.value));
|
||||||
break;
|
break;
|
||||||
@ -4755,8 +4861,12 @@ switch (yykind)
|
|||||||
case symbol_kind::S_NAME: // "identifier"
|
case symbol_kind::S_NAME: // "identifier"
|
||||||
case symbol_kind::S_STRING: // "string literal"
|
case symbol_kind::S_STRING: // "string literal"
|
||||||
case symbol_kind::S_ISTRING: // "localized string"
|
case symbol_kind::S_ISTRING: // "localized string"
|
||||||
|
case symbol_kind::S_COLOR: // "color"
|
||||||
case symbol_kind::S_FLOAT: // "float"
|
case symbol_kind::S_FLOAT: // "float"
|
||||||
case symbol_kind::S_INTEGER: // "int"
|
case symbol_kind::S_INT_DEC: // "int"
|
||||||
|
case symbol_kind::S_INT_OCT: // "octal int"
|
||||||
|
case symbol_kind::S_INT_BIN: // "binary int"
|
||||||
|
case symbol_kind::S_INT_HEX: // "hexadecimal int"
|
||||||
value.move< std::string > (YY_MOVE (s.value));
|
value.move< std::string > (YY_MOVE (s.value));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -4953,7 +5063,7 @@ switch (yykind)
|
|||||||
|
|
||||||
#line 13 "parser.ypp"
|
#line 13 "parser.ypp"
|
||||||
} } } // xsk::gsc::s2
|
} } } // xsk::gsc::s2
|
||||||
#line 4957 "parser.hpp"
|
#line 5067 "parser.hpp"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -16,6 +16,7 @@ enum class node_t
|
|||||||
data_integer,
|
data_integer,
|
||||||
data_float,
|
data_float,
|
||||||
data_vector,
|
data_vector,
|
||||||
|
data_color,
|
||||||
data_string,
|
data_string,
|
||||||
data_istring,
|
data_istring,
|
||||||
data_file,
|
data_file,
|
||||||
@ -126,6 +127,7 @@ struct node_false;
|
|||||||
struct node_integer;
|
struct node_integer;
|
||||||
struct node_float;
|
struct node_float;
|
||||||
struct node_vector;
|
struct node_vector;
|
||||||
|
struct node_color;
|
||||||
struct node_string;
|
struct node_string;
|
||||||
struct node_istring;
|
struct node_istring;
|
||||||
struct node_file;
|
struct node_file;
|
||||||
@ -234,6 +236,7 @@ using false_ptr = std::unique_ptr<node_false>;
|
|||||||
using integer_ptr = std::unique_ptr<node_integer>;
|
using integer_ptr = std::unique_ptr<node_integer>;
|
||||||
using float_ptr = std::unique_ptr<node_float>;
|
using float_ptr = std::unique_ptr<node_float>;
|
||||||
using vector_ptr = std::unique_ptr<node_vector>;
|
using vector_ptr = std::unique_ptr<node_vector>;
|
||||||
|
using color_ptr = std::unique_ptr<node_color>;
|
||||||
using string_ptr = std::unique_ptr<node_string>;
|
using string_ptr = std::unique_ptr<node_string>;
|
||||||
using istring_ptr = std::unique_ptr<node_istring>;
|
using istring_ptr = std::unique_ptr<node_istring>;
|
||||||
using file_ptr = std::unique_ptr<node_file>;
|
using file_ptr = std::unique_ptr<node_file>;
|
||||||
@ -358,6 +361,7 @@ union expr_ptr
|
|||||||
integer_ptr as_integer;
|
integer_ptr as_integer;
|
||||||
float_ptr as_float;
|
float_ptr as_float;
|
||||||
vector_ptr as_vector;
|
vector_ptr as_vector;
|
||||||
|
color_ptr as_color;
|
||||||
string_ptr as_string;
|
string_ptr as_string;
|
||||||
istring_ptr as_istring;
|
istring_ptr as_istring;
|
||||||
file_ptr as_file;
|
file_ptr as_file;
|
||||||
@ -699,6 +703,27 @@ struct node_vector : public node
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct node_color : public node
|
||||||
|
{
|
||||||
|
std::string value;
|
||||||
|
|
||||||
|
node_color(const std::string& value)
|
||||||
|
: node(node_t::data_color), value(value) {}
|
||||||
|
|
||||||
|
node_color(const location& loc, const std::string& value)
|
||||||
|
: node(node_t::data_color, loc), value(value) {}
|
||||||
|
|
||||||
|
auto print() -> std::string override
|
||||||
|
{
|
||||||
|
return "#"s += value;
|
||||||
|
}
|
||||||
|
|
||||||
|
friend bool operator==(const node_color& lhs, const node_color& rhs)
|
||||||
|
{
|
||||||
|
return lhs.value == rhs.value;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
struct node_string : public node
|
struct node_string : public node
|
||||||
{
|
{
|
||||||
std::string value;
|
std::string value;
|
||||||
|
@ -8,6 +8,21 @@
|
|||||||
namespace xsk::gsc::utils
|
namespace xsk::gsc::utils
|
||||||
{
|
{
|
||||||
|
|
||||||
|
auto string::oct_to_dec(const char* str) -> std::string
|
||||||
|
{
|
||||||
|
return std::to_string(std::stoi(str, nullptr, 8));
|
||||||
|
}
|
||||||
|
|
||||||
|
auto string::bin_to_dec(const char* str) -> std::string
|
||||||
|
{
|
||||||
|
return std::to_string(std::stoi(&str[2], nullptr, 2)); // str must prefix 0[bB]
|
||||||
|
}
|
||||||
|
|
||||||
|
auto string::hex_to_dec(const char* str) -> std::string
|
||||||
|
{
|
||||||
|
return std::to_string(std::stoi(&str[2], nullptr, 16)); // str must prefix 0[xX]
|
||||||
|
}
|
||||||
|
|
||||||
auto string::iequals(const std::string& a, const std::string& b) -> bool
|
auto string::iequals(const std::string& a, const std::string& b) -> bool
|
||||||
{
|
{
|
||||||
return (a.size() == b.size()) && std::equal(a.begin(), a.end(), b.begin(), b.end(),
|
return (a.size() == b.size()) && std::equal(a.begin(), a.end(), b.begin(), b.end(),
|
||||||
|
@ -21,6 +21,9 @@ public:
|
|||||||
return std::string(buf.data(), buf.data() + size - 1);
|
return std::string(buf.data(), buf.data() + size - 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static auto oct_to_dec(const char* str) -> std::string;
|
||||||
|
static auto bin_to_dec(const char* str) -> std::string;
|
||||||
|
static auto hex_to_dec(const char* str) -> std::string;
|
||||||
static auto iequals(const std::string& a, const std::string& b) -> bool;
|
static auto iequals(const std::string& a, const std::string& b) -> bool;
|
||||||
static auto is_number(const std::string& s) -> bool;
|
static auto is_number(const std::string& s) -> bool;
|
||||||
static auto is_hex_number(const std::string& s) -> bool;
|
static auto is_hex_number(const std::string& s) -> bool;
|
||||||
|
@ -35,6 +35,7 @@ expr_ptr::~expr_ptr()
|
|||||||
case node_t::data_integer: as_integer.~integer_ptr(); break;
|
case node_t::data_integer: as_integer.~integer_ptr(); break;
|
||||||
case node_t::data_float: as_float.~float_ptr(); break;
|
case node_t::data_float: as_float.~float_ptr(); break;
|
||||||
case node_t::data_vector: as_vector.~vector_ptr(); break;
|
case node_t::data_vector: as_vector.~vector_ptr(); break;
|
||||||
|
case node_t::data_color: as_color.~color_ptr(); break;
|
||||||
case node_t::data_string: as_string.~string_ptr(); break;
|
case node_t::data_string: as_string.~string_ptr(); break;
|
||||||
case node_t::data_istring: as_istring.~istring_ptr(); break;
|
case node_t::data_istring: as_istring.~istring_ptr(); break;
|
||||||
case node_t::data_file: as_file.~file_ptr(); break;
|
case node_t::data_file: as_file.~file_ptr(); break;
|
||||||
@ -156,6 +157,7 @@ bool expr_ptr::operator==(const expr_ptr& rhs) const
|
|||||||
case node_t::data_integer: return *as_integer == *rhs.as_integer;
|
case node_t::data_integer: return *as_integer == *rhs.as_integer;
|
||||||
case node_t::data_float: return *as_float == *rhs.as_float;
|
case node_t::data_float: return *as_float == *rhs.as_float;
|
||||||
case node_t::data_vector: return *as_vector == *rhs.as_vector;
|
case node_t::data_vector: return *as_vector == *rhs.as_vector;
|
||||||
|
case node_t::data_color: return *as_color == *rhs.as_color;
|
||||||
case node_t::data_string: return *as_string == *rhs.as_string;
|
case node_t::data_string: return *as_string == *rhs.as_string;
|
||||||
case node_t::data_istring: return *as_istring == *rhs.as_istring;
|
case node_t::data_istring: return *as_istring == *rhs.as_istring;
|
||||||
case node_t::data_file: return *as_file == *rhs.as_file;
|
case node_t::data_file: return *as_file == *rhs.as_file;
|
||||||
|
Loading…
Reference in New Issue
Block a user