[Versa] Updated ebnf with no conflicts
Jeremy Kloth
jeremy.kloth at fourthought.com
Mon Sep 26 11:16:18 MDT 2005
On Monday 26 September 2005 11:09 am, Jeremy Kloth wrote:
> On Monday 26 September 2005 11:04 am, Michael Olson wrote:
> > > I see them being differentiated by bindings alone. If the qname (in
> > > expanded
> > > form) is bound to a function where a function-reference is allowed,
> > > use it.
> > > There may be other issues I'm missing, but this doesn't seem difficult
> > > for an
> > > implementation to do.
> >
> > There is, because "rdf:type(all())" is a valid function call. We
> > discussed it on some thread on the list, but basically it translates to
> > a traverse expression of all() - rdf:type -> *. So, in the case of
> > rdf:type it is _always_ a bound function call, and it is always a valid
> > qname-constant.
> >
> > It would even be valid not in the special case as a function can always
> > be defined with a qname, and can always conflict with a qname-constant.
> >
> > @function ext:name = all();
> > list (ext:name)
>
> So, you are saying a *function-reference* is a valid input to the list
> function?
Fun replying to myself. Actually, thinking on it some, this is no different
than XPath using a symbol ($) to mean "look in the variable bindings for what
to use". Similarly, we are saying, (&) means "look in the function bindings
for what to use".
So, I'm +1 on using the production
'&' qname
to lookup function pointers.
--
Jeremy Kloth
Fourthought, Inc.
http://fourthought.com/
http://4suite.org/
More information about the Versa
mailing list