Mercurial > octave
changeset 30328:a2397a85d7e5
deprecate .+ and .- operators
* lex.ll (".+", ".-", ".+=", ".-="): Deprecate unnecessary operators.
* oct-parse.yy (EPLUS, EMINUS): Eliminate tokens that are equivalent
to '+' and '-'.
* NEWS: Note change.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Tue, 23 Nov 2021 12:40:51 -0500 |
parents | 256fad4ac653 |
children | 81d26e8481a6 |
files | NEWS libinterp/parse-tree/lex.ll libinterp/parse-tree/oct-parse.yy |
diffstat | 3 files changed, 9 insertions(+), 13 deletions(-) [+] |
line wrap: on
line diff
--- a/NEWS Tue Nov 23 12:36:52 2021 -0500 +++ b/NEWS Tue Nov 23 12:40:51 2021 -0500 @@ -312,6 +312,8 @@ ---------|-------------|------------ ** | ^ | Matrix exponent .** | .^ | Element-by-element exponent + .+ | + | Element-by-element exponent + .- | - | Element-by-element exponent - Interpreter
--- a/libinterp/parse-tree/lex.ll Tue Nov 23 12:36:52 2021 -0500 +++ b/libinterp/parse-tree/lex.ll Tue Nov 23 12:40:51 2021 -0500 @@ -1644,8 +1644,8 @@ %} ":" { CMD_OR_OP (":", ':', true); } -".+" { CMD_OR_OP (".+", EPLUS, false); } -".-" { CMD_OR_OP (".-", EMINUS, false); } +".+" { CMD_OR_DEPRECATED_OP (".+", "+", 7, '+'); } +".-" { CMD_OR_DEPRECATED_OP (".-", "-", 7, '-'); } ".*" { CMD_OR_OP (".*", EMUL, true); } "./" { CMD_OR_OP ("./", EDIV, true); } ".\\" { CMD_OR_OP (".\\", ELEFTDIV, true); } @@ -1817,8 +1817,8 @@ "*=" { CMD_OR_OP ("*=", MUL_EQ, false); } "/=" { CMD_OR_OP ("/=", DIV_EQ, false); } "\\=" { CMD_OR_OP ("\\=", LEFTDIV_EQ, false); } -".+=" { CMD_OR_OP (".+=", ADD_EQ, false); } -".-=" { CMD_OR_OP (".-=", SUB_EQ, false); } +".+=" { CMD_OR_DEPRECATED_OP (".+=", "+=", 7, ADD_EQ); } +".-=" { CMD_OR_DEPRECATED_OP (".-=", "-=", 7, SUB_EQ); } ".*=" { CMD_OR_OP (".*=", EMUL_EQ, false); } "./=" { CMD_OR_OP ("./=", EDIV_EQ, false); } ".\\=" { CMD_OR_OP (".\\=", ELEFTDIV_EQ, false); } @@ -2323,7 +2323,7 @@ || tok == ':' || tok == '=' || tok == ADD_EQ || tok == AND_EQ || tok == DIV_EQ || tok == EDIV || tok == EDIV_EQ || tok == ELEFTDIV || tok == ELEFTDIV_EQ - || tok == EMINUS || tok == EMUL || tok == EMUL_EQ + || tok == EMUL || tok == EMUL_EQ || tok == EPOW || tok == EPOW_EQ || tok == EXPR_AND || tok == EXPR_AND_AND || tok == EXPR_EQ || tok == EXPR_GE || tok == EXPR_GT || tok == EXPR_LE || tok == EXPR_LT @@ -3747,8 +3747,6 @@ case EMUL: std::cerr << "EMUL\n"; break; case EDIV: std::cerr << "EDIV\n"; break; case ELEFTDIV: std::cerr << "ELEFTDIV\n"; break; - case EPLUS: std::cerr << "EPLUS\n"; break; - case EMINUS: std::cerr << "EMINUS\n"; break; case HERMITIAN: std::cerr << "HERMITIAN\n"; break; case TRANSPOSE: std::cerr << "TRANSPOSE\n"; break; case PLUS_PLUS: std::cerr << "PLUS_PLUS\n"; break;
--- a/libinterp/parse-tree/oct-parse.yy Tue Nov 23 12:36:52 2021 -0500 +++ b/libinterp/parse-tree/oct-parse.yy Tue Nov 23 12:40:51 2021 -0500 @@ -210,7 +210,7 @@ %token <tok_val> EXPR_AND_AND EXPR_OR_OR %token <tok_val> EXPR_AND EXPR_OR EXPR_NOT %token <tok_val> EXPR_LT EXPR_LE EXPR_EQ EXPR_NE EXPR_GE EXPR_GT -%token <tok_val> LEFTDIV EMUL EDIV ELEFTDIV EPLUS EMINUS +%token <tok_val> LEFTDIV EMUL EDIV ELEFTDIV %token <tok_val> HERMITIAN TRANSPOSE %token <tok_val> PLUS_PLUS MINUS_MINUS POW EPOW %token <tok_val> NUMBER @@ -323,7 +323,7 @@ %left EXPR_AND %left EXPR_LT EXPR_LE EXPR_EQ EXPR_NE EXPR_GE EXPR_GT %left ':' -%left '-' '+' EPLUS EMINUS +%left '-' '+' %left '*' '/' LEFTDIV EMUL EDIV ELEFTDIV %right UNARY EXPR_NOT %left POW EPOW HERMITIAN TRANSPOSE @@ -816,10 +816,6 @@ { $$ = parser.make_binary_op ('*', $1, $2, $3); } | oper_expr '/' oper_expr { $$ = parser.make_binary_op ('/', $1, $2, $3); } - | oper_expr EPLUS oper_expr - { $$ = parser.make_binary_op ('+', $1, $2, $3); } - | oper_expr EMINUS oper_expr - { $$ = parser.make_binary_op ('-', $1, $2, $3); } | oper_expr EMUL oper_expr { $$ = parser.make_binary_op (EMUL, $1, $2, $3); } | oper_expr EDIV oper_expr