op= now accepted
authorBill Joy <wnj@ucbvax.Berkeley.EDU>
Sun, 1 Mar 1981 12:11:21 +0000 (04:11 -0800)
committerBill Joy <wnj@ucbvax.Berkeley.EDU>
Sun, 1 Mar 1981 12:11:21 +0000 (04:11 -0800)
SCCS-vsn: usr.bin/bc/bc.y 4.2

usr/src/usr.bin/bc/bc.y

index 89a90fa..1071125 100644 (file)
@@ -1,5 +1,5 @@
 %{
 %{
-static char *sccsid = "@(#)bc.y        4.1 (Berkeley) %G%";
+static char *sccsid = "@(#)bc.y        4.2 (Berkeley) 81/02/28";
        int *getout();
 %}
 %right '='
        int *getout();
 %}
 %right '='
@@ -406,8 +406,8 @@ restart:
                default:   return( '=' );
                          gotit:     peekc = -1; return(c);
                  }
                default:   return( '=' );
                          gotit:     peekc = -1; return(c);
                  }
-       case '+':       return( cpeek( '+', INCR, '+' ) );
-       case '-':       return( cpeek( '-', DECR, '-' ) );
+       case '+':       return( cpeek( '+', INCR, cpeek( '=', EQPL, '+') ) );
+       case '-':       return( cpeek( '-', DECR, cpeek( '=', EQMI, '-') ) );
        case '<':       return( cpeek( '=', LE, '<' ) );
        case '>':       return( cpeek( '=', GE, '>' ) );
        case '!':       return( cpeek( '=', NE, '!' ) );
        case '<':       return( cpeek( '=', LE, '<' ) );
        case '>':       return( cpeek( '=', GE, '>' ) );
        case '!':       return( cpeek( '=', NE, '!' ) );
@@ -418,7 +418,17 @@ restart:
                        peekc = -1;
                        goto restart;
                }
                        peekc = -1;
                        goto restart;
                }
+               else if (peekc == '=') {
+                       c=EQDIV;
+                       goto gotit;
+               }
                else return(c);
                else return(c);
+       case '*':
+               return( cpeek( '=', EQMUL, '*' ) );
+       case '%':
+               return( cpeek( '=', EQREM, '%' ) );
+       case '^':
+               return( cpeek( '=', EQEXP, '^' ) );
        case '"':       
                 yylval = str;
                 while((c=getch()) != '"'){*str++ = c;
        case '"':       
                 yylval = str;
                 while((c=getch()) != '"'){*str++ = c;