[IW] added negative variable expression

This commit is contained in:
xensik
2022-06-08 12:05:16 +02:00
parent 8b8fffd59e
commit 9910527d60
27 changed files with 10393 additions and 10081 deletions

View File

@ -214,6 +214,7 @@ xsk::gsc::s2::parser::symbol_type S2lex(xsk::gsc::s2::lexer& lexer);
%type <ast::expr_level::ptr> expr_level
%type <ast::expr_animation::ptr> expr_animation
%type <ast::expr_animtree::ptr> expr_animtree
%type <ast::expr> expr_identifier_neg
%type <ast::expr_identifier::ptr> expr_identifier_nosize
%type <ast::expr_identifier::ptr> expr_identifier
%type <ast::expr_path::ptr> expr_path
@ -629,6 +630,7 @@ expr_primitive
| expr_level { $$.as_node = std::move($1); }
| expr_animation { $$.as_node = std::move($1); }
| expr_animtree { $$.as_node = std::move($1); }
| expr_identifier_neg { $$ = std::move($1); }
| expr_identifier { $$.as_node = std::move($1); }
| expr_istring { $$.as_node = std::move($1); }
| expr_string { $$.as_node = std::move($1); }
@ -796,6 +798,11 @@ expr_animtree
{ $$ = std::make_unique<ast::expr_animtree>(@$); };
;
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
: IDENTIFIER
{ $$ = std::make_unique<ast::expr_identifier>(@$, $1); };