Patch from Dmitry Zakharov:
authorRob Landley <rob@landley.net>
Tue, 7 Jun 2005 02:43:52 +0000 (02:43 -0000)
committerRob Landley <rob@landley.net>
Tue, 7 Jun 2005 02:43:52 +0000 (02:43 -0000)
Charlie Brady wrote:
> Here's another awk parsing problem - unary post increment - pre is fine:
>
>bash-2.05a$ echo 2,3 | gawk -F , '{ $2++ }'
>bash-2.05a$ echo 2,3 | /tmp/busybox/busybox awk -F , '{ $2++ }'
>awk: cmd. line:1: Unexpected token
>
Here's a fix for this. There is another problem with constructions like
"print (A+B) ++C", I don't
know whether somebody uses such constructions (fixing both these
problems would require very
serious change in awk code).

editors/awk.c

index c1cb2a2e26febff7f46332ad2ca311359aaa5eac..ed8b0f20f5abfd1557766c962637623313a7663a 100644 (file)
@@ -1084,7 +1084,7 @@ static node *parse_expr(unsigned long iexp) {
                        cn->a.n = vn;
                        xtc = TC_OPERAND | TC_UOPPRE | TC_REGEXP;
                        if (tc & (TC_OPERAND | TC_REGEXP)) {
-                               xtc = TC_UOPPRE | TC_BINOP | TC_OPERAND | iexp;
+                               xtc = TC_UOPPRE | TC_UOPPOST | TC_BINOP | TC_OPERAND | iexp;
                                /* one should be very careful with switch on tclass -
                                 * only simple tclasses should be used! */
                                switch (tc) {
@@ -1101,7 +1101,6 @@ static node *parse_expr(unsigned long iexp) {
                                                cn->info |= xS;
                                                cn->r.n = parse_expr(TC_ARRTERM);
                                        }
-                                       xtc = TC_UOPPOST | TC_UOPPRE | TC_BINOP | TC_OPERAND | iexp;
                                        break;
                                
                                  case TC_NUMBER: