Patch from Dmitry Zakharov:
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).
This commit is contained in:
parent
f3133c4149
commit
ed830e8693
@ -1084,7 +1084,7 @@ static node *parse_expr(unsigned long iexp) {
|
|||||||
cn->a.n = vn;
|
cn->a.n = vn;
|
||||||
xtc = TC_OPERAND | TC_UOPPRE | TC_REGEXP;
|
xtc = TC_OPERAND | TC_UOPPRE | TC_REGEXP;
|
||||||
if (tc & (TC_OPERAND | 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 -
|
/* one should be very careful with switch on tclass -
|
||||||
* only simple tclasses should be used! */
|
* only simple tclasses should be used! */
|
||||||
switch (tc) {
|
switch (tc) {
|
||||||
@ -1101,7 +1101,6 @@ static node *parse_expr(unsigned long iexp) {
|
|||||||
cn->info |= xS;
|
cn->info |= xS;
|
||||||
cn->r.n = parse_expr(TC_ARRTERM);
|
cn->r.n = parse_expr(TC_ARRTERM);
|
||||||
}
|
}
|
||||||
xtc = TC_UOPPOST | TC_UOPPRE | TC_BINOP | TC_OPERAND | iexp;
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case TC_NUMBER:
|
case TC_NUMBER:
|
||||||
|
Loading…
Reference in New Issue
Block a user