[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