On 15/02/17 03:06 AM, Bastiaan Veelo wrote:

On 15 Feb 2017, at 08:10, Paul Isaacs <paul@redpineinstruments.org> wrote:

x( a,b,c)[ 6,7,8 ] being valid and it is not.

I think it is. This compiles and runs:

Bastiaan,

Thanks! You're right. I'm finding it hard to go from the productions to code when the productions are recursive through intermediates.

Interesting:

function-access1 = record-function1.field1  => using function-access|record-function
record-function1 = function-access2         => using record-function production
function-access2 = record-function2.field2  => using function-access|record-function
record-function2 = x( a )                   => using function-access|entire-function

function-access2 = x( a ).field2            => reducing function-access2
record-function1 = x( a ).field2            => reducing record-function1
function-access1 = x( a ).field2.field1     => reducing function-access1

x( a ).field2 compiles and executes

x( a ).field2.field1 of course does not compile unless field1 is a field of field2.
But is it a syntacticly correct result of these productions?
If so is it an ambiguity in the grammar? Do the productions have precedence rules?
e.g. variable-access has higher precedence than function-access

Regards,

Paul Isaacs