[Bug 30017] New: UpdatingFunctionCall use of PrimaryExpr makes the grammar ambiguous.

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

            Bug ID: 30017
           Summary: UpdatingFunctionCall use of PrimaryExpr makes the
                    grammar ambiguous.
           Product: XPath / XQuery / XSLT
           Version: Last Call drafts
          Hardware: PC
                OS: Linux
            Status: NEW
          Severity: major
          Priority: P2
         Component: Update 3.0
          Assignee: john.snelson@marklogic.com
          Reporter: msclrhd@gmail.com
        QA Contact: public-qt-comments@w3.org
  Target Milestone: ---

UpdatingFunctionCall is defined in Update Facility 3.0 as:

    [207] UpdatingFunctionCall ::= "invoke" "updating" PrimaryExpr "("
(ExprSingle ("," ExprSingle)*)? ")"

However, PrimaryExpr contains FunctionCall. This means that for:

    invoke updating test()

'test()' will be interpreted as FunctionCall. That is:

    UpdatingFunctionCall: 'invoke updating'
        PrimaryExpr/FunctionCall: 'test()'
        [error]: missing token '('

It also does not make sense for this to be an OrderedExpr or Constructor (which
are valid according to the grammar).

It would make more sense to define this similar to the XQuery 3.1
ArrowFunctionSpecifier:

    [127] ArrowFunctionSpecifier ::= EQName | VarRef | ParenthesizedExpr

For example:

    UpdatingFunctionCall ::= "invoke" "updating" UpdatingFunctionCallSpecifier
"(" (ExprSingle ("," ExprSingle)*)? ")"
    UpdatingFunctionCallSpecifier ::= EQName | VarRef | ParenthesizedExpr

-- 
You are receiving this mail because:
You are the QA Contact for the bug.

Received on Sunday, 20 November 2016 15:39:15 UTC