It wouldn't be much of a parser job. Once you can point to the memory location of an array, then you just have to treat it usually.
For your example, you could do MyArray(3).var2(MyArray(8).var1).angle(3)
You:
Get MyArray's location + 3*sizeof(MyType)
Get MyArray's location + 8*sizeof(MyType)
Get the location of var1
Add the data in that location to the register
Get location of var2 (from the first operation) + register value*sizeof(Coords)
Get location of angle + 3*sizeof(float)
Get the value at that location
That's ust worked out on the spot. I don't know if it would be buggy, but it is possible (and this is from a kid who has had no real training on compilers). I don't think it would have been too much extra work, but it would have made a huge difference.
I think their problem is that they just dont treat arrays like they should. I think they are more like linked lists, and that would make it harder to work.