> Date: Tue, 9 Sep 2003 17:59:14 +0100
> From: Robert Sanderson <[log in to unmask]>
>
> > How about:
> > >dc1="core-v1" dc1.title=first and >dc1="core-v1a" dc1.title=second
> > and dc1.title=third
>
> Lets remove the mappings and put in the parens:
>
> ((dc1.title=first and dc1.title=second) and dc1.title=third)
>
> And put back the mappings:
>
> >dc1=v1 ((dc1.title=first and >dc1=v1a dc1.title=second) and
> dc1.title=third)
Oooh, no, you can't do it like that. The prefix mappings _change_ the
bindings.
> > The third occurence of dc1 -- is it governed by the first or second
> > assignment?
>
> First, due to the left to right ordering of parens.
Nope, the last, because it's closest to the operand.
$ cat query
>dc1="core-v1" dc1.title=first and >dc1="core-v1a" dc1.title=second and dc1.title=third
$ CQLParser -c < query
>dc1="core-v1" ((dc1.title = first) and (>dc1="core-v1a" ((dc1.title = second) and (dc1.title = third))))
$
Have you actually tried this in your own parser? I bet it does the
right thing. XCQL for you to diff against follows my signature. For
what it's worth (I've tested it), Adam's parser emits the same output.
_/|_ _______________________________________________________________
/o ) \/ Mike Taylor <[log in to unmask]> http://www.miketaylor.org.uk
)_v__/\ "Take the cheese to sick bay" -- Belana Tores, Snr. Engineer,
Star Trek Voyager (Episode: "Learning Curve")
--
<triple>
<prefixes>
<prefix>
<name>dc1</name>
<identifier>core-v1</identifier>
</prefix>
</prefixes>
<boolean>
<value>and</value>
</boolean>
<leftOperand>
<searchClause>
<index>dc1.title</index>
<relation>
<value>=</value>
</relation>
<term>first</term>
</searchClause>
</leftOperand>
<rightOperand>
<triple>
<prefixes>
<prefix>
<name>dc1</name>
<identifier>core-v1a</identifier>
</prefix>
</prefixes>
<boolean>
<value>and</value>
</boolean>
<leftOperand>
<searchClause>
<index>dc1.title</index>
<relation>
<value>=</value>
</relation>
<term>second</term>
</searchClause>
</leftOperand>
<rightOperand>
<searchClause>
<index>dc1.title</index>
<relation>
<value>=</value>
</relation>
<term>third</term>
</searchClause>
</rightOperand>
</triple>
</rightOperand>
</triple>
|