awk: skip whitespace between array name and subscript

It is supported in both mawk and gawk and there are actually scripts
out there that use this "flexibility".

function                                             old     new   delta
next_token                                          1144    1152      +8
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 1/0 up/down: 8/0)                 Total: 8 bytes

Signed-off-by: Alexander Shishkin <virtuoso@slind.org>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
Alexander Shishkin 2010-02-25 17:55:40 +02:00 committed by Denys Vlasenko
parent 2e73d84c02
commit d03cd3be24
2 changed files with 4 additions and 1 deletions

View File

@ -1046,7 +1046,7 @@ static uint32_t next_token(uint32_t expected)
*(p-1) = '\0'; *(p-1) = '\0';
tc = TC_VARIABLE; tc = TC_VARIABLE;
/* also consume whitespace between functionname and bracket */ /* also consume whitespace between functionname and bracket */
if (!(expected & TC_VARIABLE)) if (!(expected & TC_VARIABLE) || (expected & TC_ARRAY))
skip_spaces(&p); skip_spaces(&p);
if (*p == '(') { if (*p == '(') {
tc = TC_FUNCTION; tc = TC_FUNCTION;

View File

@ -64,4 +64,7 @@ testing "awk string cast (bug 725)" \
"0\nnumber\n" \ "0\nnumber\n" \
"" "" "" ""
testing "awk handles whitespace before array subscript" \
"awk 'BEGIN { arr [3] = 1; print arr [3] }'" "1\n" "" ""
exit $FAILCOUNT exit $FAILCOUNT