[BACK]Return to awkgram.y CVS log [TXT][DIR] Up to [local] / src / usr.bin / awk

Diff for /src/usr.bin/awk/awkgram.y between version 1.4 and 1.5

version 1.4, 1997/08/25 16:17:09 version 1.5, 1999/04/20 17:31:29
Line 241 
Line 241 
         | '(' plist ')' IN varname      { $$ = op2(INTEST, $2, makearr($5)); }          | '(' plist ')' IN varname      { $$ = op2(INTEST, $2, makearr($5)); }
         | pattern '|' GETLINE var       {          | pattern '|' GETLINE var       {
                         if (safe) ERROR "cmd | getline is unsafe" SYNTAX;                          if (safe) ERROR "cmd | getline is unsafe" SYNTAX;
                         else $$ = op3(GETLINE, $4, (Node*)$2, $1); }                          else $$ = op3(GETLINE, $4, itonp($2), $1); }
         | pattern '|' GETLINE           {          | pattern '|' GETLINE           {
                         if (safe) ERROR "cmd | getline is unsafe" SYNTAX;                          if (safe) ERROR "cmd | getline is unsafe" SYNTAX;
                         else $$ = op3(GETLINE, (Node*)0, (Node*)$2, $1); }                          else $$ = op3(GETLINE, (Node*)0, itonp($2), $1); }
         | pattern term %prec CAT        { $$ = op2(CAT, $1, $2); }          | pattern term %prec CAT        { $$ = op2(CAT, $1, $2); }
         | re          | re
         | term          | term
Line 295 
Line 295 
 simple_stmt:  simple_stmt:
           print prarg '|' term          {            print prarg '|' term          {
                         if (safe) ERROR "print | is unsafe" SYNTAX;                          if (safe) ERROR "print | is unsafe" SYNTAX;
                         else $$ = stat3($1, $2, (Node *) $3, $4); }                          else $$ = stat3($1, $2, itonp($3), $4); }
         | print prarg APPEND term       {          | print prarg APPEND term       {
                         if (safe) ERROR "print >> is unsafe" SYNTAX;                          if (safe) ERROR "print >> is unsafe" SYNTAX;
                         else $$ = stat3($1, $2, (Node *) $3, $4); }                          else $$ = stat3($1, $2, itonp($3), $4); }
         | print prarg GT term           {          | print prarg GT term           {
                         if (safe) ERROR "print > is unsafe" SYNTAX;                          if (safe) ERROR "print > is unsafe" SYNTAX;
                         else $$ = stat3($1, $2, (Node *) $3, $4); }                          else $$ = stat3($1, $2, itonp($3), $4); }
         | print prarg                   { $$ = stat3($1, $2, NIL, NIL); }          | print prarg                   { $$ = stat3($1, $2, NIL, NIL); }
         | DELETE varname '[' patlist ']' { $$ = stat2(DELETE, makearr($2), $4); }          | DELETE varname '[' patlist ']' { $$ = stat2(DELETE, makearr($2), $4); }
         | DELETE varname                 { $$ = stat2(DELETE, makearr($2), 0); }          | DELETE varname                 { $$ = stat2(DELETE, makearr($2), 0); }
Line 351 
Line 351 
         ;          ;
   
 term:  term:
           term '+' term                 { $$ = op2(ADD, $1, $3); }            term '/' ASGNOP term          { $$ = op2(DIVEQ, $1, $4); }
           | term '+' term                 { $$ = op2(ADD, $1, $3); }
         | term '-' term                 { $$ = op2(MINUS, $1, $3); }          | term '-' term                 { $$ = op2(MINUS, $1, $3); }
         | term '*' term                 { $$ = op2(MULT, $1, $3); }          | term '*' term                 { $$ = op2(MULT, $1, $3); }
         | term '/' term                 { $$ = op2(DIVIDE, $1, $3); }          | term '/' term                 { $$ = op2(DIVIDE, $1, $3); }
Line 360 
Line 361 
         | '-' term %prec UMINUS         { $$ = op1(UMINUS, $2); }          | '-' term %prec UMINUS         { $$ = op1(UMINUS, $2); }
         | '+' term %prec UMINUS         { $$ = $2; }          | '+' term %prec UMINUS         { $$ = $2; }
         | NOT term %prec UMINUS         { $$ = op1(NOT, notnull($2)); }          | NOT term %prec UMINUS         { $$ = op1(NOT, notnull($2)); }
         | BLTIN '(' ')'                 { $$ = op2(BLTIN, (Node *) $1, rectonode()); }          | BLTIN '(' ')'                 { $$ = op2(BLTIN, itonp($1), rectonode()); }
         | BLTIN '(' patlist ')'         { $$ = op2(BLTIN, (Node *) $1, $3); }          | BLTIN '(' patlist ')'         { $$ = op2(BLTIN, itonp($1), $3); }
         | BLTIN                         { $$ = op2(BLTIN, (Node *) $1, rectonode()); }          | BLTIN                         { $$ = op2(BLTIN, itonp($1), rectonode()); }
         | CALL '(' ')'                  { $$ = op2(CALL, celltonode($1,CVAR), NIL); }          | CALL '(' ')'                  { $$ = op2(CALL, celltonode($1,CVAR), NIL); }
         | CALL '(' patlist ')'          { $$ = op2(CALL, celltonode($1,CVAR), $3); }          | CALL '(' patlist ')'          { $$ = op2(CALL, celltonode($1,CVAR), $3); }
         | DECR var                      { $$ = op1(PREDECR, $2); }          | DECR var                      { $$ = op1(PREDECR, $2); }
         | INCR var                      { $$ = op1(PREINCR, $2); }          | INCR var                      { $$ = op1(PREINCR, $2); }
         | var DECR                      { $$ = op1(POSTDECR, $1); }          | var DECR                      { $$ = op1(POSTDECR, $1); }
         | var INCR                      { $$ = op1(POSTINCR, $1); }          | var INCR                      { $$ = op1(POSTINCR, $1); }
         | GETLINE var LT term           { $$ = op3(GETLINE, $2, (Node *)$3, $4); }          | GETLINE var LT term           { $$ = op3(GETLINE, $2, itonp($3), $4); }
         | GETLINE LT term               { $$ = op3(GETLINE, NIL, (Node *)$2, $3); }          | GETLINE LT term               { $$ = op3(GETLINE, NIL, itonp($2), $3); }
         | GETLINE var                   { $$ = op3(GETLINE, $2, NIL, NIL); }          | GETLINE var                   { $$ = op3(GETLINE, $2, NIL, NIL); }
         | GETLINE                       { $$ = op3(GETLINE, NIL, NIL, NIL); }          | GETLINE                       { $$ = op3(GETLINE, NIL, NIL, NIL); }
         | INDEX '(' pattern comma pattern ')'          | INDEX '(' pattern comma pattern ')'
Line 433 
Line 434 
   
 varname:  varname:
           VAR                   { $$ = celltonode($1, CVAR); }            VAR                   { $$ = celltonode($1, CVAR); }
         | ARG                   { $$ = op1(ARG, (Node *) $1); }          | ARG                   { $$ = op1(ARG, itonp($1)); }
         | VARNF                 { $$ = op1(VARNF, (Node *) $1); }          | VARNF                 { $$ = op1(VARNF, (Node *) $1); }
         ;          ;
   

Legend:
Removed from v.1.4  
changed lines
  Added in v.1.5