(#21874) Make name[x] different from name [x]

The parser cannot differentiate between a call of function 'name' with
array as argument from deprecated resource reference (e.g. file['foo'])
since whitespace is not significant.

This is fixed by letting the lexer generate a separate token for a
LBRACK when it is preceded by a NAME and WS.