FTEQCC's parser sucks.
QC doesn't support very complex instructions.
field[idx] = foo; is quite tricky really.
It needs to combine the array index and the assignment into a single function call. When its a global, anyway.
when its a field, things get a bit messy.
When it sees
ent.field[idx] = foo;
it interprets it as:
ent.(field[idx] = foo);
Which is not what you want. The error is actually about float-->field, and is technically correct. Its just misparsing it.
To work around, you can do one of:
ent.(field[idx]) = foo;
or
(ent.field[idx]) = foo;
(Basically putting a close bracket before the '=' so the parser doesn't see it until later).
The nexuiz folks chose the former.
I'm poking around in fteqcc as I type this, I should be able to change the parsing so its not so stupid.