- From: <bugzilla@jessica.w3.org>
- Date: Sat, 29 Nov 2014 01:31:07 +0000
- To: public-qt-comments@w3.org
https://www.w3.org/Bugs/Public/show_bug.cgi?id=27119 --- Comment #4 from C. M. Sperberg-McQueen <cmsmcq@blackmesatech.com> --- I don't wish to re-open this issue, but in comment 2 Michael Dyck asks Can anyone give examples (aside from the constructs in question) of how it's *not* "as light-weight as is consistent with clarity"? In connection with other work, I had occasion just now to ask the grammar applet at [1] to generate an XQueryX translation of the expression "1 + 2". [1] http://www.w3.org/2013/01/qt-applets/xquery30/ The result is: <xqx:module xmlns:xqx="http://www.w3.org/2005/XQueryX" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/2005/XQueryX http://www.w3.org/2005/XQueryX/xqueryx.xsd"> <xqx:mainModule> <xqx:queryBody> <xqx:addOp> <xqx:firstOperand> <xqx:integerConstantExpr> <xqx:value>1</xqx:value> </xqx:integerConstantExpr> </xqx:firstOperand> <xqx:secondOperand> <xqx:integerConstantExpr> <xqx:value>2</xqx:value> </xqx:integerConstantExpr> </xqx:secondOperand> </xqx:addOp> </xqx:queryBody> </xqx:mainModule> </xqx:module> The presence of so many single-child elements and the close alignment of element names with non-terminals both seem to this observer to place the XQueryX design much closer to the XML modeling of a concrete parse tree than to the modeling of an abstract syntax tree "as light-weight as is consistent with clarity". Michael Dyck points out that there exceptions to the general rule of turning each non-terminal in the concrete parse tree into an element; that does seem to show that XQueryX is not quite as far towards the end of the spectrum as I had thought. But I believe MD exaggerates when he puts it closer to the other end of the spectrum. One lighter-weight translation that seems to me consistent with clarity would be: <xqx:mainModule xmlns:xqx="http://www.w3.org/2005/XQueryX" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/2005/XQueryX http://www.w3.org/2005/XQueryX/xqueryx.xsd"> <xqx:queryBody> <xqx:addOp> <xqx:integerConstantExpr>1</xqx:integerConstantExpr> <xqx:integerConstantExpr>2</xqx:integerConstantExpr> </xqx:addOp> </xqx:queryBody> </xqx:mainModule> This translation omits the elements module, firstOperand, secondOperand, and value. In general, a lighter-weight translation would result from systematically deleting all nodes in the concrete parse tree which have only single children, and the promotion of their children in their place. A more thoroughly ruthless application of this principle here would result in omitting queryBody and mainModule as well, so that the XML representation would be: <xqx:addOp xmlns:xqx="http://www.w3.org/2005/XQueryX" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/2005/XQueryX http://www.w3.org/2005/XQueryX/xqueryx.xsd"> <xqx:integerConstantExpr>1</xqx:integerConstantExpr> <xqx:integerConstantExpr>2</xqx:integerConstantExpr> </xqx:addOp> A designer seeking a lightweight XML representation in preference to close modeling of the grammar might also prefer different element names: <xqx:sum xmlns:xqx="http://www.w3.org/2005/XQueryX" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/2005/XQueryX http://www.w3.org/2005/XQueryX/xqueryx.xsd"> <xqx:integer>1</xqx:integer> <xqx:integer>2</xqx:integer> </xqx:sum> -- You are receiving this mail because: You are the QA Contact for the bug.
Received on Saturday, 29 November 2014 01:31:10 UTC