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);