I have found a side-effect of commit b9f1d9a47a49c40e8f0a5006b492daba53f25b20,
(which introduced named symbol references). In the current git head
version, a reference such as
foo : bar { $-1.p(); }
is treated instead as
foo : bar { $-1(); }
I'm guessing this is because of the lexical syntax given for a
reference:
"$"("<"{tag}">")?{ref}
where 'ref' is defined
letter [-.abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_]
id {letter}({letter}|[0-9])*
ref -?[0-9]+|{id}|"["{id}"]"|"$"
As you can see, this matches $-1.p, but only matches the '$1' part of
$1.p, so that $1.p() gets handled as I had expected.
This is minor, and easily worked around with ($-1).p(), but it is
inconsistent with previous behavior.
It seems a bit annoying to fix (since it is not clear what an identifier
ought to be), but perhaps
letter [.abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_]
id {letter}({letter}|[-0-9])*
ref -?[0-9]+|{id}|"["{id}"]"|"$"
?
Paul Hilfinger