- From: <bugzilla@jessica.w3.org>
- Date: Tue, 18 Jan 2011 16:39:52 +0000
- To: public-qt-comments@w3.org
http://www.w3.org/Bugs/Public/show_bug.cgi?id=11792 Summary: lack of syntactic symmetry between the control flow expressions Product: XPath / XQuery / XSLT Version: Member-only Editors Drafts Platform: PC OS/Version: All Status: NEW Severity: normal Priority: P2 Component: XQuery 3.0 AssignedTo: jonathan.robie@redhat.com ReportedBy: dflorescu@mac.com QAContact: public-qt-comments@w3.org Dear all, please look at the syntax of three of the control flow expressions that are available in XQuery 3.0, that look very similar in functionality and structure, but slightly dissimilar in grammar. Those are switch, typeswitch and try catch. The (simplified) grammar is bellow: ---------- 'typeswitch' '(' Expr ')' ( 'case' ( VarName 'as' ) ? SequenceType 'return' Expr )+ 'default' VarName ? 'return' Expr 'switch' '(' Expr ')' ( 'case' Expr 'return' Expr ) + 'default' 'return' Expr 'try' '{' Expr '}' ( 'catch' CatchErrorList CatchVars? '{' Expr '}' )+ ---------- Each one of them has: (a) a main expression to evaluate and (b) several branches, one of them being evaluated and the result being returned, the choice being based on the presence of some particular events: a certain type, a certain value or a certain error. And they are all three expressions, all three of them returning instances of XDM. Let's look at examples of each of them. typeswitch ( $x div $y ) case xs:integer return "First branch" case xs:decimal return "Second branch" default "Last branch" switch ( $x div $y ) case 3 return "First branch" case 4 return "Second branch" default "Last branch" try { $x div $y } catch err:FOAR0001 { "First branch" } catch err:FOAR0003 { "Second branch" } catch * { "Last branch" } The lack of syntactical similarity and symmetry between them is very difficult for a user (I can never remember what to use where..). The two major differences are: (a) the use of () vs. {} in switch/typeswitch vs. trycatch for the main Expr to be evaluated (b) the use of the keyword 'return' vs the use of {} in in switch/typeswitch vs. trycatch for the Expr to be returned There is no reason for those syntactic differences. Users can only be confused by that. Could we please make them grammatically symmetrical ? Best regards Dana -- Configure bugmail: http://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 Tuesday, 18 January 2011 16:39:57 UTC