[T6] added negative variable expression
This commit is contained in:
parent
48165edfad
commit
8b8fffd59e
@ -242,6 +242,7 @@ xsk::arc::t6::parser::symbol_type T6lex(xsk::arc::t6::lexer& lexer);
|
|||||||
%type <ast::expr_anim::ptr> expr_anim
|
%type <ast::expr_anim::ptr> expr_anim
|
||||||
%type <ast::expr_level::ptr> expr_level
|
%type <ast::expr_level::ptr> expr_level
|
||||||
%type <ast::expr_animation::ptr> expr_animation
|
%type <ast::expr_animation::ptr> expr_animation
|
||||||
|
%type <ast::expr> expr_identifier_neg
|
||||||
%type <ast::expr_identifier::ptr> expr_identifier_nosize
|
%type <ast::expr_identifier::ptr> expr_identifier_nosize
|
||||||
%type <ast::expr_identifier::ptr> expr_identifier
|
%type <ast::expr_identifier::ptr> expr_identifier
|
||||||
%type <ast::expr_path::ptr> expr_path
|
%type <ast::expr_path::ptr> expr_path
|
||||||
@ -659,6 +660,7 @@ expr_primitive
|
|||||||
| expr_anim { $$.as_node = std::move($1); }
|
| expr_anim { $$.as_node = std::move($1); }
|
||||||
| expr_level { $$.as_node = std::move($1); }
|
| expr_level { $$.as_node = std::move($1); }
|
||||||
| expr_animation { $$.as_node = std::move($1); }
|
| expr_animation { $$.as_node = std::move($1); }
|
||||||
|
| expr_identifier_neg { $$ = std::move($1); }
|
||||||
| expr_identifier { $$.as_node = std::move($1); }
|
| expr_identifier { $$.as_node = std::move($1); }
|
||||||
| expr_istring { $$.as_node = std::move($1); }
|
| expr_istring { $$.as_node = std::move($1); }
|
||||||
| expr_string { $$.as_node = std::move($1); }
|
| expr_string { $$.as_node = std::move($1); }
|
||||||
@ -913,6 +915,11 @@ expr_animation
|
|||||||
{ $$ = std::make_unique<ast::expr_animation>(@$, $2); };
|
{ $$ = std::make_unique<ast::expr_animation>(@$, $2); };
|
||||||
;
|
;
|
||||||
|
|
||||||
|
expr_identifier_neg
|
||||||
|
: SUB IDENTIFIER
|
||||||
|
{ $$.as_node = std::make_unique<ast::expr_sub>(@$, ast::expr(std::make_unique<ast::expr_integer>(@$, "0")), ast::expr(std::make_unique<ast::expr_identifier>(@$, $2))); }
|
||||||
|
;
|
||||||
|
|
||||||
expr_identifier_nosize
|
expr_identifier_nosize
|
||||||
: IDENTIFIER
|
: IDENTIFIER
|
||||||
{ $$ = std::make_unique<ast::expr_identifier>(@$, $1); };
|
{ $$ = std::make_unique<ast::expr_identifier>(@$, $1); };
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -447,6 +447,7 @@ namespace xsk { namespace arc { namespace t6 {
|
|||||||
// expr_binary
|
// expr_binary
|
||||||
// expr_primitive
|
// expr_primitive
|
||||||
// expr_object
|
// expr_object
|
||||||
|
// expr_identifier_neg
|
||||||
char dummy6[sizeof (ast::expr)];
|
char dummy6[sizeof (ast::expr)];
|
||||||
|
|
||||||
// expr_abs
|
// expr_abs
|
||||||
@ -1093,17 +1094,18 @@ namespace xsk { namespace arc { namespace t6 {
|
|||||||
S_expr_anim = 210, // expr_anim
|
S_expr_anim = 210, // expr_anim
|
||||||
S_expr_level = 211, // expr_level
|
S_expr_level = 211, // expr_level
|
||||||
S_expr_animation = 212, // expr_animation
|
S_expr_animation = 212, // expr_animation
|
||||||
S_expr_identifier_nosize = 213, // expr_identifier_nosize
|
S_expr_identifier_neg = 213, // expr_identifier_neg
|
||||||
S_expr_identifier = 214, // expr_identifier
|
S_expr_identifier_nosize = 214, // expr_identifier_nosize
|
||||||
S_expr_path = 215, // expr_path
|
S_expr_identifier = 215, // expr_identifier
|
||||||
S_expr_istring = 216, // expr_istring
|
S_expr_path = 216, // expr_path
|
||||||
S_expr_string = 217, // expr_string
|
S_expr_istring = 217, // expr_istring
|
||||||
S_expr_vector = 218, // expr_vector
|
S_expr_string = 218, // expr_string
|
||||||
S_expr_hash = 219, // expr_hash
|
S_expr_vector = 219, // expr_vector
|
||||||
S_expr_float = 220, // expr_float
|
S_expr_hash = 220, // expr_hash
|
||||||
S_expr_integer = 221, // expr_integer
|
S_expr_float = 221, // expr_float
|
||||||
S_expr_false = 222, // expr_false
|
S_expr_integer = 222, // expr_integer
|
||||||
S_expr_true = 223 // expr_true
|
S_expr_false = 223, // expr_false
|
||||||
|
S_expr_true = 224 // expr_true
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -1170,6 +1172,7 @@ namespace xsk { namespace arc { namespace t6 {
|
|||||||
case symbol_kind::S_expr_binary: // expr_binary
|
case symbol_kind::S_expr_binary: // expr_binary
|
||||||
case symbol_kind::S_expr_primitive: // expr_primitive
|
case symbol_kind::S_expr_primitive: // expr_primitive
|
||||||
case symbol_kind::S_expr_object: // expr_object
|
case symbol_kind::S_expr_object: // expr_object
|
||||||
|
case symbol_kind::S_expr_identifier_neg: // expr_identifier_neg
|
||||||
value.move< ast::expr > (std::move (that.value));
|
value.move< ast::expr > (std::move (that.value));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -2713,6 +2716,7 @@ switch (yykind)
|
|||||||
case symbol_kind::S_expr_binary: // expr_binary
|
case symbol_kind::S_expr_binary: // expr_binary
|
||||||
case symbol_kind::S_expr_primitive: // expr_primitive
|
case symbol_kind::S_expr_primitive: // expr_primitive
|
||||||
case symbol_kind::S_expr_object: // expr_object
|
case symbol_kind::S_expr_object: // expr_object
|
||||||
|
case symbol_kind::S_expr_identifier_neg: // expr_identifier_neg
|
||||||
value.template destroy< ast::expr > ();
|
value.template destroy< ast::expr > ();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -5427,8 +5431,8 @@ switch (yykind)
|
|||||||
/// Constants.
|
/// Constants.
|
||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
yylast_ = 3411, ///< Last index in yytable_.
|
yylast_ = 3494, ///< Last index in yytable_.
|
||||||
yynnts_ = 98, ///< Number of nonterminal symbols.
|
yynnts_ = 99, ///< Number of nonterminal symbols.
|
||||||
yyfinal_ = 22 ///< Termination state number.
|
yyfinal_ = 22 ///< Termination state number.
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -5485,6 +5489,7 @@ switch (yykind)
|
|||||||
case symbol_kind::S_expr_binary: // expr_binary
|
case symbol_kind::S_expr_binary: // expr_binary
|
||||||
case symbol_kind::S_expr_primitive: // expr_primitive
|
case symbol_kind::S_expr_primitive: // expr_primitive
|
||||||
case symbol_kind::S_expr_object: // expr_object
|
case symbol_kind::S_expr_object: // expr_object
|
||||||
|
case symbol_kind::S_expr_identifier_neg: // expr_identifier_neg
|
||||||
value.copy< ast::expr > (YY_MOVE (that.value));
|
value.copy< ast::expr > (YY_MOVE (that.value));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -5864,6 +5869,7 @@ switch (yykind)
|
|||||||
case symbol_kind::S_expr_binary: // expr_binary
|
case symbol_kind::S_expr_binary: // expr_binary
|
||||||
case symbol_kind::S_expr_primitive: // expr_primitive
|
case symbol_kind::S_expr_primitive: // expr_primitive
|
||||||
case symbol_kind::S_expr_object: // expr_object
|
case symbol_kind::S_expr_object: // expr_object
|
||||||
|
case symbol_kind::S_expr_identifier_neg: // expr_identifier_neg
|
||||||
value.move< ast::expr > (YY_MOVE (s.value));
|
value.move< ast::expr > (YY_MOVE (s.value));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -6249,7 +6255,7 @@ switch (yykind)
|
|||||||
|
|
||||||
#line 13 "parser.ypp"
|
#line 13 "parser.ypp"
|
||||||
} } } // xsk::arc::t6
|
} } } // xsk::arc::t6
|
||||||
#line 6253 "parser.hpp"
|
#line 6259 "parser.hpp"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user