[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.14 and 1.15

version 1.14, 2020/06/13 01:21:01 version 1.15, 2022/09/01 15:21:28
Line 207 
Line 207 
                 { $$ = op2(AND, notnull($1), notnull($3)); }                  { $$ = op2(AND, notnull($1), notnull($3)); }
         | ppattern MATCHOP reg_expr     { $$ = op3($2, NIL, $1, (Node*)makedfa($3, 0)); }          | ppattern MATCHOP reg_expr     { $$ = op3($2, NIL, $1, (Node*)makedfa($3, 0)); }
         | ppattern MATCHOP ppattern          | ppattern MATCHOP ppattern
                 { if (constnode($3))                  { if (constnode($3)) {
                         $$ = op3($2, NIL, $1, (Node*)makedfa(strnode($3), 0));                          $$ = op3($2, NIL, $1, (Node*)makedfa(strnode($3), 0));
                   else                          free($3);
                     } else
                         $$ = op3($2, (Node *)1, $1, $3); }                          $$ = op3($2, (Node *)1, $1, $3); }
         | ppattern IN varname           { $$ = op2(INTEST, $1, makearr($3)); }          | ppattern IN varname           { $$ = op2(INTEST, $1, makearr($3)); }
         | '(' plist ')' IN varname      { $$ = op2(INTEST, $2, makearr($5)); }          | '(' plist ')' IN varname      { $$ = op2(INTEST, $2, makearr($5)); }
Line 234 
Line 235 
         | pattern NE pattern            { $$ = op2($2, $1, $3); }          | pattern NE pattern            { $$ = op2($2, $1, $3); }
         | pattern MATCHOP reg_expr      { $$ = op3($2, NIL, $1, (Node*)makedfa($3, 0)); }          | pattern MATCHOP reg_expr      { $$ = op3($2, NIL, $1, (Node*)makedfa($3, 0)); }
         | pattern MATCHOP pattern          | pattern MATCHOP pattern
                 { if (constnode($3))                  { if (constnode($3)) {
                         $$ = op3($2, NIL, $1, (Node*)makedfa(strnode($3), 0));                          $$ = op3($2, NIL, $1, (Node*)makedfa(strnode($3), 0));
                   else                          free($3);
                     } else
                         $$ = op3($2, (Node *)1, $1, $3); }                          $$ = op3($2, (Node *)1, $1, $3); }
         | pattern IN varname            { $$ = op2(INTEST, $1, makearr($3)); }          | pattern IN varname            { $$ = op2(INTEST, $1, makearr($3)); }
         | '(' plist ')' IN varname      { $$ = op2(INTEST, $2, makearr($5)); }          | '(' plist ')' IN varname      { $$ = op2(INTEST, $2, makearr($5)); }
Line 379 
Line 381 
         | GENSUB '(' reg_expr comma pattern comma pattern ')'          | GENSUB '(' reg_expr comma pattern comma pattern ')'
                 { $$ = op5(GENSUB, NIL, (Node*)makedfa($3, 1), $5, $7, rectonode()); }                  { $$ = op5(GENSUB, NIL, (Node*)makedfa($3, 1), $5, $7, rectonode()); }
         | GENSUB '(' pattern comma pattern comma pattern ')'          | GENSUB '(' pattern comma pattern comma pattern ')'
                 { if (constnode($3))                  { if (constnode($3)) {
                         $$ = op5(GENSUB, NIL, (Node *)makedfa(strnode($3), 1), $5, $7, rectonode());                          $$ = op5(GENSUB, NIL, (Node *)makedfa(strnode($3), 1), $5, $7, rectonode());
                   else                          free($3);
                     } else
                         $$ = op5(GENSUB, (Node *)1, $3, $5, $7, rectonode());                          $$ = op5(GENSUB, (Node *)1, $3, $5, $7, rectonode());
                 }                  }
         | GENSUB '(' reg_expr comma pattern comma pattern comma pattern ')'          | GENSUB '(' reg_expr comma pattern comma pattern comma pattern ')'
                 { $$ = op5(GENSUB, NIL, (Node*)makedfa($3, 1), $5, $7, $9); }                  { $$ = op5(GENSUB, NIL, (Node*)makedfa($3, 1), $5, $7, $9); }
         | GENSUB '(' pattern comma pattern comma pattern comma pattern ')'          | GENSUB '(' pattern comma pattern comma pattern comma pattern ')'
                 { if (constnode($3))                  { if (constnode($3)) {
                         $$ = op5(GENSUB, NIL, (Node *)makedfa(strnode($3),1), $5,$7,$9);                          $$ = op5(GENSUB, NIL, (Node *)makedfa(strnode($3),1), $5,$7,$9);
                   else                          free($3);
                     } else
                         $$ = op5(GENSUB, (Node *)1, $3, $5, $7, $9);                          $$ = op5(GENSUB, (Node *)1, $3, $5, $7, $9);
                 }                  }
         | GETLINE var LT term           { $$ = op3(GETLINE, $2, itonp($3), $4); }          | GETLINE var LT term           { $$ = op3(GETLINE, $2, itonp($3), $4); }
Line 405 
Line 409 
         | MATCHFCN '(' pattern comma reg_expr ')'          | MATCHFCN '(' pattern comma reg_expr ')'
                 { $$ = op3(MATCHFCN, NIL, $3, (Node*)makedfa($5, 1)); }                  { $$ = op3(MATCHFCN, NIL, $3, (Node*)makedfa($5, 1)); }
         | MATCHFCN '(' pattern comma pattern ')'          | MATCHFCN '(' pattern comma pattern ')'
                 { if (constnode($5))                  { if (constnode($5)) {
                         $$ = op3(MATCHFCN, NIL, $3, (Node*)makedfa(strnode($5), 1));                          $$ = op3(MATCHFCN, NIL, $3, (Node*)makedfa(strnode($5), 1));
                   else                          free($5);
                     } else
                         $$ = op3(MATCHFCN, (Node *)1, $3, $5); }                          $$ = op3(MATCHFCN, (Node *)1, $3, $5); }
         | NUMBER                        { $$ = celltonode($1, CCON); }          | NUMBER                        { $$ = celltonode($1, CCON); }
         | SPLIT '(' pattern comma varname comma pattern ')'     /* string */          | SPLIT '(' pattern comma varname comma pattern ')'     /* string */
Line 421 
Line 426 
         | subop '(' reg_expr comma pattern ')'          | subop '(' reg_expr comma pattern ')'
                 { $$ = op4($1, NIL, (Node*)makedfa($3, 1), $5, rectonode()); }                  { $$ = op4($1, NIL, (Node*)makedfa($3, 1), $5, rectonode()); }
         | subop '(' pattern comma pattern ')'          | subop '(' pattern comma pattern ')'
                 { if (constnode($3))                  { if (constnode($3)) {
                         $$ = op4($1, NIL, (Node*)makedfa(strnode($3), 1), $5, rectonode());                          $$ = op4($1, NIL, (Node*)makedfa(strnode($3), 1), $5, rectonode());
                   else                          free($3);
                     } else
                         $$ = op4($1, (Node *)1, $3, $5, rectonode()); }                          $$ = op4($1, (Node *)1, $3, $5, rectonode()); }
         | subop '(' reg_expr comma pattern comma var ')'          | subop '(' reg_expr comma pattern comma var ')'
                 { $$ = op4($1, NIL, (Node*)makedfa($3, 1), $5, $7); }                  { $$ = op4($1, NIL, (Node*)makedfa($3, 1), $5, $7); }
         | subop '(' pattern comma pattern comma var ')'          | subop '(' pattern comma pattern comma var ')'
                 { if (constnode($3))                  { if (constnode($3)) {
                         $$ = op4($1, NIL, (Node*)makedfa(strnode($3), 1), $5, $7);                          $$ = op4($1, NIL, (Node*)makedfa(strnode($3), 1), $5, $7);
                   else                          free($3);
                     } else
                         $$ = op4($1, (Node *)1, $3, $5, $7); }                          $$ = op4($1, (Node *)1, $3, $5, $7); }
         | SUBSTR '(' pattern comma pattern comma pattern ')'          | SUBSTR '(' pattern comma pattern comma pattern ')'
                 { $$ = op3(SUBSTR, $3, $5, $7); }                  { $$ = op3(SUBSTR, $3, $5, $7); }

Legend:
Removed from v.1.14  
changed lines
  Added in v.1.15