Possible grammar bug with PrimaryExpression and ArgList

I was wondering what changed as in the current rq23 ArgList is optional
for function calls and this seemed like a syntax change.  This took a
little digging into the record so I'm recording what I found.

I finally tracked it down to rq23 between CVS 1.451 and 1.452:
[[
Revision 1.452  2005/08/04 10:57:36  aseaborne
+ Added "_" to start of variable names
~ Tidied up by intrpducing NCCHAR1p and making NCCHAR1 be NCCHAR1p | '_'
]]

(for reference the last WD was around 1.432).

This change seems to do a bit more than that:
* FunctionCall is removed from Constraint
* ConstructTemplate uses ConstructTriples for it's inner content
* ConstructTriples added with content from above.
* GraphTerm inlines the RDFTerm token and adds '(' ')' (empty
collection)
* BuiltInCall renamed from CallExpression and FunctionCall is removed as
an option.
* PrimaryExpression:
    CallExpression renamed to BuiltInCall
    Adds IRIref ArgList?
    Adds RDFLiteral | NumericLiteral | BooleanLiteral | BlankNode | Var

Most of that is tidying or reasonable change but the addition that is
the problem is IRIref ArgList? which is not the same as FunctionCall:
IRIref ArgList which I'm guessing it was intended to be.

If you want a test:

PREFIX my: <http://example.org/>
SELECT *
WHERE {
  ?s ?p ?o .
  FILTER my:function
}

is legal according to my reading of rq23 whereas it used to be illegal.

I assume the additional '?' is a mistake or have I missed something?
Maybe just using FunctionCall instead would be easier.

Dave

Received on Wednesday, 10 August 2005 16:05:57 UTC