changeset 21294:3d375b0905a0

eliminate unused << and >> operators from Octave scripting language * ov.h, ov.cc (binary_op): Remove op_lshift and op_rshift from the list of binary operators. Delete all uses. (assign_op): Remove op_lshift_eq and op_rshift_eq from the list of assignment operators. Delete all uses. * lex.ll, oct-parse.in.yy (LSHIFT, RSHIFT, LSHIFT_EQ, RSHIFT_EQ): Delete tokens.
author John W. Eaton <jwe@octave.org>
date Thu, 18 Feb 2016 11:19:47 -0500
parents 350caa6afadf
children 29a0e9e70879
files libinterp/octave-value/ov.cc libinterp/octave-value/ov.h libinterp/parse-tree/lex.ll libinterp/parse-tree/oct-parse.in.yy
diffstat 4 files changed, 3 insertions(+), 68 deletions(-) [+]
line wrap: on
line diff
--- a/libinterp/octave-value/ov.cc	Thu Feb 18 11:10:05 2016 -0500
+++ b/libinterp/octave-value/ov.cc	Thu Feb 18 11:19:47 2016 -0500
@@ -189,12 +189,6 @@
     case op_ldiv:
       return "\\";
 
-    case op_lshift:
-      return "<<";
-
-    case op_rshift:
-      return ">>";
-
     case op_lt:
       return "<";
 
@@ -369,12 +363,6 @@
     case op_pow_eq:
       return "^=";
 
-    case op_lshift_eq:
-      return "<<=";
-
-    case op_rshift_eq:
-      return ">>=";
-
     case op_el_mul_eq:
       return ".*=";
 
@@ -421,12 +409,6 @@
     case op_pow_eq:
       return op_pow;
 
-    case op_lshift_eq:
-      return op_lshift;
-
-    case op_rshift_eq:
-      return op_rshift;
-
     case op_el_mul_eq:
       return op_el_mul;
 
@@ -2612,12 +2594,6 @@
     case op_pow_eq:
       return op_pow;
 
-    case op_lshift_eq:
-      return op_lshift;
-
-    case op_rshift_eq:
-      return op_rshift;
-
     case op_el_mul_eq:
       return op_el_mul;
 
--- a/libinterp/octave-value/ov.h	Thu Feb 18 11:10:05 2016 -0500
+++ b/libinterp/octave-value/ov.h	Thu Feb 18 11:19:47 2016 -0500
@@ -94,8 +94,6 @@
     op_div,            // mrdivide
     op_pow,            // mpower
     op_ldiv,           // mldivide
-    op_lshift,
-    op_rshift,
     op_lt,             // lt
     op_le,             // le
     op_eq,             // eq
@@ -139,8 +137,6 @@
     op_div_eq,
     op_ldiv_eq,
     op_pow_eq,
-    op_lshift_eq,
-    op_rshift_eq,
     op_el_mul_eq,
     op_el_div_eq,
     op_el_ldiv_eq,
@@ -1507,8 +1503,6 @@
 
 OV_BINOP_FN (op_pow)
 OV_BINOP_FN (op_ldiv)
-OV_BINOP_FN (op_lshift)
-OV_BINOP_FN (op_rshift)
 
 OV_BINOP_FN_OP (op_lt, <)
 OV_BINOP_FN_OP (op_le, <=)
--- a/libinterp/parse-tree/lex.ll	Thu Feb 18 11:10:05 2016 -0500
+++ b/libinterp/parse-tree/lex.ll	Thu Feb 18 11:19:47 2016 -0500
@@ -1539,8 +1539,6 @@
 "**"  { CMD_OR_OP ("**", POW, false); }
 "&&"  { CMD_OR_OP ("&&", EXPR_AND_AND, true); }
 "||"  { CMD_OR_OP ("||", EXPR_OR_OR, true); }
-"<<"  { CMD_OR_OP ("<<", LSHIFT, false); }
-">>"  { CMD_OR_OP (">>", RSHIFT, false); }
 
 ";" {
     bool at_beginning_of_statement
@@ -1678,8 +1676,6 @@
 ".**=" { CMD_OR_COMPUTED_ASSIGN_OP (".^=", EPOW_EQ); }
 "&="   { CMD_OR_COMPUTED_ASSIGN_OP ("&=", AND_EQ); }
 "|="   { CMD_OR_COMPUTED_ASSIGN_OP ("|=", OR_EQ); }
-"<<="  { CMD_OR_COMPUTED_ASSIGN_OP ("<<=", LSHIFT_EQ); }
-">>="  { CMD_OR_COMPUTED_ASSIGN_OP (">>=", RSHIFT_EQ); }
 
 %{
 // In Matlab, '{' may also trigger command syntax.
@@ -2185,9 +2181,8 @@
           || tok == EXPR_GT || tok == EXPR_LE || tok == EXPR_LT
           || tok == EXPR_NE || tok == EXPR_NOT || tok == EXPR_OR
           || tok == EXPR_OR_OR || tok == LEFTDIV || tok == LEFTDIV_EQ
-          || tok == LSHIFT || tok == LSHIFT_EQ || tok == MUL_EQ
-          || tok == OR_EQ || tok == POW || tok == POW_EQ
-          || tok == RSHIFT || tok == RSHIFT_EQ || tok == SUB_EQ);
+          || tok == MUL_EQ || tok == OR_EQ || tok == POW
+          || tok == POW_EQ || tok == SUB_EQ);
 }
 
 bool
@@ -3228,10 +3223,6 @@
     case EPOW_EQ: std::cerr << "EPOW_EQ\n"; break;
     case AND_EQ: std::cerr << "AND_EQ\n"; break;
     case OR_EQ: std::cerr << "OR_EQ\n"; break;
-    case LSHIFT_EQ: std::cerr << "LSHIFT_EQ\n"; break;
-    case RSHIFT_EQ: std::cerr << "RSHIFT_EQ\n"; break;
-    case LSHIFT: std::cerr << "LSHIFT\n"; break;
-    case RSHIFT: std::cerr << "RSHIFT\n"; break;
     case EXPR_AND_AND: std::cerr << "EXPR_AND_AND\n"; break;
     case EXPR_OR_OR: std::cerr << "EXPR_OR_OR\n"; break;
     case EXPR_AND: std::cerr << "EXPR_AND\n"; break;
--- a/libinterp/parse-tree/oct-parse.in.yy	Thu Feb 18 11:10:05 2016 -0500
+++ b/libinterp/parse-tree/oct-parse.in.yy	Thu Feb 18 11:19:47 2016 -0500
@@ -208,7 +208,6 @@
 %token <tok_val> '=' ':' '-' '+' '*' '/'
 %token <tok_val> ADD_EQ SUB_EQ MUL_EQ DIV_EQ LEFTDIV_EQ POW_EQ
 %token <tok_val> EMUL_EQ EDIV_EQ ELEFTDIV_EQ EPOW_EQ AND_EQ OR_EQ
-%token <tok_val> LSHIFT_EQ RSHIFT_EQ LSHIFT RSHIFT
 %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
@@ -305,13 +304,12 @@
 %type <octave_user_function_type> method_decl1
 
 // Precedence and associativity.
-%right '=' ADD_EQ SUB_EQ MUL_EQ DIV_EQ LEFTDIV_EQ POW_EQ EMUL_EQ EDIV_EQ ELEFTDIV_EQ EPOW_EQ OR_EQ AND_EQ LSHIFT_EQ RSHIFT_EQ
+%right '=' ADD_EQ SUB_EQ MUL_EQ DIV_EQ LEFTDIV_EQ POW_EQ EMUL_EQ EDIV_EQ ELEFTDIV_EQ EPOW_EQ OR_EQ AND_EQ
 %left EXPR_OR_OR
 %left EXPR_AND_AND
 %left EXPR_OR
 %left EXPR_AND
 %left EXPR_LT EXPR_LE EXPR_EQ EXPR_NE EXPR_GE EXPR_GT
-%left LSHIFT RSHIFT
 %left ':'
 %left '-' '+' EPLUS EMINUS
 %left '*' '/' LEFTDIV EMUL EDIV ELEFTDIV
@@ -832,10 +830,6 @@
 
 simple_expr     : colon_expr
                   { $$ = $1; }
-                | simple_expr LSHIFT simple_expr
-                  { $$ = parser.make_binary_op (LSHIFT, $1, $2, $3); }
-                | simple_expr RSHIFT simple_expr
-                  { $$ = parser.make_binary_op (RSHIFT, $1, $2, $3); }
                 | simple_expr EXPR_LT simple_expr
                   { $$ = parser.make_binary_op (EXPR_LT, $1, $2, $3); }
                 | simple_expr EXPR_LE simple_expr
@@ -886,10 +880,6 @@
                   { $$ = parser.make_assign_op (LEFTDIV_EQ, $1, $2, $3); }
                 | assign_lhs POW_EQ expression
                   { $$ = parser.make_assign_op (POW_EQ, $1, $2, $3); }
-                | assign_lhs LSHIFT_EQ expression
-                  { $$ = parser.make_assign_op (LSHIFT_EQ, $1, $2, $3); }
-                | assign_lhs RSHIFT_EQ expression
-                  { $$ = parser.make_assign_op (RSHIFT_EQ, $1, $2, $3); }
                 | assign_lhs EMUL_EQ expression
                   { $$ = parser.make_assign_op (EMUL_EQ, $1, $2, $3); }
                 | assign_lhs EDIV_EQ expression
@@ -2437,14 +2427,6 @@
       t = octave_value::op_el_ldiv;
       break;
 
-    case LSHIFT:
-      t = octave_value::op_lshift;
-      break;
-
-    case RSHIFT:
-      t = octave_value::op_rshift;
-      break;
-
     case EXPR_LT:
       t = octave_value::op_lt;
       break;
@@ -3003,14 +2985,6 @@
       t = octave_value::op_pow_eq;
       break;
 
-    case LSHIFT_EQ:
-      t = octave_value::op_lshift_eq;
-      break;
-
-    case RSHIFT_EQ:
-      t = octave_value::op_rshift_eq;
-      break;
-
     case EMUL_EQ:
       t = octave_value::op_el_mul_eq;
       break;