Mercurial > octave
comparison libinterp/parse-tree/lex.ll @ 31464:344e1152ed88
remove operators deprecated in version 7
* lex.h, lex.ll (base_lexer::warn_deprecated_operator): Delete.
(CMD_OR_DEPRECATED_OP): Delete.
(".+", ".+=", ".-", ".-=", "**", "**=", ".**", ".**="):
Delete patterns for obsolete operators.
* pt-eval.cc: Update test.
(get_operator_function_name): Remove support for obsolete operators.
* NEWS.9.md: Note change.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Thu, 17 Nov 2022 11:50:20 -0500 |
parents | 1779a64b2510 |
children | 2ad979f8c265 |
comparison
equal
deleted
inserted
replaced
31463:6ea81caebab0 | 31464:344e1152ed88 |
---|---|
178 yyless (0); \ | 178 yyless (0); \ |
179 curr_lexer->push_start_state (COMMAND_START); \ | 179 curr_lexer->push_start_state (COMMAND_START); \ |
180 } \ | 180 } \ |
181 else \ | 181 else \ |
182 return curr_lexer->handle_op (TOK, false, COMPAT); \ | 182 return curr_lexer->handle_op (TOK, false, COMPAT); \ |
183 } \ | |
184 while (0) | |
185 | |
186 #define CMD_OR_DEPRECATED_OP(PATTERN, REPLACEMENT, VERSION, TOK) \ | |
187 do \ | |
188 { \ | |
189 curr_lexer->lexer_debug (PATTERN); \ | |
190 \ | |
191 if (curr_lexer->looks_like_command_arg ()) \ | |
192 { \ | |
193 yyless (0); \ | |
194 curr_lexer->push_start_state (COMMAND_START); \ | |
195 } \ | |
196 else \ | |
197 { \ | |
198 curr_lexer->warn_deprecated_operator (PATTERN, REPLACEMENT, \ | |
199 #VERSION); \ | |
200 /* set COMPAT to true here to avoid warning about \ | |
201 compatibility since we've already warned about the \ | |
202 operator being deprecated. */ \ | |
203 return curr_lexer->handle_op (TOK, false, true); \ | |
204 } \ | |
205 } \ | 183 } \ |
206 while (0) | 184 while (0) |
207 | 185 |
208 #define CMD_OR_UNARY_OP(PATTERN, TOK, COMPAT) \ | 186 #define CMD_OR_UNARY_OP(PATTERN, TOK, COMPAT) \ |
209 do \ | 187 do \ |
1642 %{ | 1620 %{ |
1643 // Other operators. | 1621 // Other operators. |
1644 %} | 1622 %} |
1645 | 1623 |
1646 ":" { CMD_OR_OP (":", ':', true); } | 1624 ":" { CMD_OR_OP (":", ':', true); } |
1647 ".+" { CMD_OR_DEPRECATED_OP (".+", "+", 7, '+'); } | |
1648 ".-" { CMD_OR_DEPRECATED_OP (".-", "-", 7, '-'); } | |
1649 ".*" { CMD_OR_OP (".*", EMUL, true); } | 1625 ".*" { CMD_OR_OP (".*", EMUL, true); } |
1650 "./" { CMD_OR_OP ("./", EDIV, true); } | 1626 "./" { CMD_OR_OP ("./", EDIV, true); } |
1651 ".\\" { CMD_OR_OP (".\\", ELEFTDIV, true); } | 1627 ".\\" { CMD_OR_OP (".\\", ELEFTDIV, true); } |
1652 ".^" { CMD_OR_OP (".^", EPOW, true); } | 1628 ".^" { CMD_OR_OP (".^", EPOW, true); } |
1653 ".**" { CMD_OR_DEPRECATED_OP (".**", ".^", 7, EPOW); } | |
1654 "<=" { CMD_OR_OP ("<=", EXPR_LE, true); } | 1629 "<=" { CMD_OR_OP ("<=", EXPR_LE, true); } |
1655 "==" { CMD_OR_OP ("==", EXPR_EQ, true); } | 1630 "==" { CMD_OR_OP ("==", EXPR_EQ, true); } |
1656 "!=" { CMD_OR_OP ("!=", EXPR_NE, false); } | 1631 "!=" { CMD_OR_OP ("!=", EXPR_NE, false); } |
1657 "~=" { CMD_OR_OP ("~=", EXPR_NE, true); } | 1632 "~=" { CMD_OR_OP ("~=", EXPR_NE, true); } |
1658 ">=" { CMD_OR_OP (">=", EXPR_GE, true); } | 1633 ">=" { CMD_OR_OP (">=", EXPR_GE, true); } |
1678 | 1653 |
1679 return curr_lexer->handle_op (LEFTDIV); | 1654 return curr_lexer->handle_op (LEFTDIV); |
1680 } | 1655 } |
1681 | 1656 |
1682 "^" { CMD_OR_OP ("^", POW, true); } | 1657 "^" { CMD_OR_OP ("^", POW, true); } |
1683 "**" { CMD_OR_DEPRECATED_OP ("**", "^", 7, POW); } | |
1684 "&&" { CMD_OR_OP ("&&", EXPR_AND_AND, true); } | 1658 "&&" { CMD_OR_OP ("&&", EXPR_AND_AND, true); } |
1685 "||" { CMD_OR_OP ("||", EXPR_OR_OR, true); } | 1659 "||" { CMD_OR_OP ("||", EXPR_OR_OR, true); } |
1686 | 1660 |
1687 ";" { | 1661 ";" { |
1688 curr_lexer->lexer_debug (";"); | 1662 curr_lexer->lexer_debug (";"); |
1815 "+=" { CMD_OR_OP ("+=", ADD_EQ, false); } | 1789 "+=" { CMD_OR_OP ("+=", ADD_EQ, false); } |
1816 "-=" { CMD_OR_OP ("-=", SUB_EQ, false); } | 1790 "-=" { CMD_OR_OP ("-=", SUB_EQ, false); } |
1817 "*=" { CMD_OR_OP ("*=", MUL_EQ, false); } | 1791 "*=" { CMD_OR_OP ("*=", MUL_EQ, false); } |
1818 "/=" { CMD_OR_OP ("/=", DIV_EQ, false); } | 1792 "/=" { CMD_OR_OP ("/=", DIV_EQ, false); } |
1819 "\\=" { CMD_OR_OP ("\\=", LEFTDIV_EQ, false); } | 1793 "\\=" { CMD_OR_OP ("\\=", LEFTDIV_EQ, false); } |
1820 ".+=" { CMD_OR_DEPRECATED_OP (".+=", "+=", 7, ADD_EQ); } | |
1821 ".-=" { CMD_OR_DEPRECATED_OP (".-=", "-=", 7, SUB_EQ); } | |
1822 ".*=" { CMD_OR_OP (".*=", EMUL_EQ, false); } | 1794 ".*=" { CMD_OR_OP (".*=", EMUL_EQ, false); } |
1823 "./=" { CMD_OR_OP ("./=", EDIV_EQ, false); } | 1795 "./=" { CMD_OR_OP ("./=", EDIV_EQ, false); } |
1824 ".\\=" { CMD_OR_OP (".\\=", ELEFTDIV_EQ, false); } | 1796 ".\\=" { CMD_OR_OP (".\\=", ELEFTDIV_EQ, false); } |
1825 "^=" { CMD_OR_OP ("^=", POW_EQ, false); } | 1797 "^=" { CMD_OR_OP ("^=", POW_EQ, false); } |
1826 "**=" { CMD_OR_DEPRECATED_OP ("**=", "^=", 7, POW_EQ); } | |
1827 ".^=" { CMD_OR_OP (".^=", EPOW_EQ, false); } | 1798 ".^=" { CMD_OR_OP (".^=", EPOW_EQ, false); } |
1828 ".**=" { CMD_OR_DEPRECATED_OP (".**=", ".^=", 7, EPOW_EQ); } | |
1829 "&=" { CMD_OR_OP ("&=", AND_EQ, false); } | 1799 "&=" { CMD_OR_OP ("&=", AND_EQ, false); } |
1830 "|=" { CMD_OR_OP ("|=", OR_EQ, false); } | 1800 "|=" { CMD_OR_OP ("|=", OR_EQ, false); } |
1831 | 1801 |
1832 %{ | 1802 %{ |
1833 // In Matlab, '{' may also trigger command syntax. | 1803 // In Matlab, '{' may also trigger command syntax. |
3680 "%s; near line %d of file '%s'", msg.c_str (), | 3650 "%s; near line %d of file '%s'", msg.c_str (), |
3681 m_filepos.line (), m_fcn_file_full_name.c_str ()); | 3651 m_filepos.line (), m_fcn_file_full_name.c_str ()); |
3682 } | 3652 } |
3683 | 3653 |
3684 void | 3654 void |
3685 base_lexer::warn_deprecated_operator (const std::string& deprecated_op, | |
3686 const std::string& recommended_op, | |
3687 const std::string& version) | |
3688 { | |
3689 std::string msg = "the '" + deprecated_op + "' operator was deprecated in version " + version + " and will not be allowed in a future version of Octave; please use '" + recommended_op + "' instead"; | |
3690 | |
3691 warn_deprecated_syntax (msg); | |
3692 } | |
3693 | |
3694 void | |
3695 base_lexer::push_token (token *tok) | 3655 base_lexer::push_token (token *tok) |
3696 { | 3656 { |
3697 YYSTYPE *lval = yyget_lval (m_scanner); | 3657 YYSTYPE *lval = yyget_lval (m_scanner); |
3698 lval->tok_val = tok; | 3658 lval->tok_val = tok; |
3699 m_tokens.push (tok); | 3659 m_tokens.push (tok); |