[Bug 16197] [XP30] Precedence of the Simple Map Operator

https://www.w3.org/Bugs/Public/show_bug.cgi?id=16197

--- Comment #1 from John Snelson <john.snelson@marklogic.com> 2012-05-21 16:29:58 UTC ---
Actually this change would also affect the associativity of "!" with respect to
"/". The current grammar has "/" and "!" at the same precedence, and left
associative. Here's an example where that makes a difference:

let $doc := document { <a><b>1</b><a><b>2</b></a></a>,<a><b>3</b></a> }
return
  $doc // a ! descendant::b / text()

This is implicitly parameterized like this:

(($doc // a) ! descendant::b) / text()    -> ("1", "2", "3")


However my proposed change parameterizes it like this:

($doc // a) ! (descendant::b / text())    -> ("1", "2", "2", "3")

I believe that by using the "!" operator, the user has explicitly chosen not to
have document ordering and duplicate removal applied to the result sequence.
The latter precedence and associativity more closely matches this expectation.

Other more minor differences with my proposed change include the one in the bug
description above, as well as allowing the following currently illegal syntax:

/ ! document-uri(.)

-- 
Configure bugmail: https://www.w3.org/Bugs/Public/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.

Received on Monday, 21 May 2012 16:30:18 UTC