W3C home > Mailing lists > Public > www-ql@w3.org > April to June 2004

RE: questionable syntax choices for XQuery

From: Volkmann, Mark <Mark.Volkmann@AGEDWARDS.com>
Date: Thu, 22 Apr 2004 14:47:21 -0500
Message-Id: <89539780CB9BD51182270002A5897DF60C0228C4@hqempn04.agedwards.com>
To: 'Per Bothner' <per@bothner.com>
Cc: "'www-ql@w3.org'" <www-ql@w3.org>
Okay, what if instead of trying to treat newline as a prolog statement
terminator we use either ; or } but not both.  Wouldn't that work?

Perhaps in the case of } you'd have to count matching { characters and only
treat } as a statement terminator if it matched the only remaining unclosed
{.

> -----Original Message-----
> From: Per Bothner [mailto:per@bothner.com]
> Sent: Thursday, April 22, 2004 2:17 PM
> To: Volkmann, Mark
> Cc: 'www-ql@w3.org'
> Subject: Re: questionable syntax choices for XQuery
> 
> Volkmann, Mark wrote:
> 
> > The key part of that is "or newlines".  Most Ruby 
> programmers only use 
> > semicolons in order to put more than one expression on the 
> same line, 
> > which isn't common.
> 
> You gave Ruby as an example of a language that "doesn't 
> require any kind 
> of statement terminating character."  A newline in Ruby is a 
> statement 
> terminating character, so your argument is void.
> 
> Whether the statement terminating character is newline or semi-colon 
> doesn't make much difference in terms of the grammar or parser.  They 
> may make a difference in terms of ease of use or error 
> proneness.  It is 
> "natural" to put one statement on each line, so if the 
> language enforces 
> this (with an escape for lang lines) then a "visible" 
> terminator would 
> be reundant - and you don't really need to change the grammar.
> 
> Using newlines to terminate statements is especially nice for 
> interactive use, where it is even easier to forget to add 
> semi-colons. 
> Qexo has an interactive mode that accepts expressions and 
> declarations. 
>   Semi-colons are optional after declarations.  Qexo accepts 
> a line as a 
> complete command if the parsing state isn't nested - i.e. we're not 
> inside parentheses, braces, element constructors, or an incomplete 
> binary operator.  This works pretty well.
> 
> However, extending this to non-interactive mode isn't fully 
> compatible. 
>     XQuery treats a (non-quoted) newline as equivalent to a 
> space - i.e. 
> as "whitespace".  Treating a newline as a "statement 
> terminator" instead 
> may be tempting, but it's not a no-brainer.
> 
> Note that XQuery is an expression language.  Apart from the 
> prolog, the 
> rested of a program is one bi nested expression.  XQuery 
> doesn't really 
> have "statements" in that sense, so a statement terminator isn't as 
> useful.  This would be different in a language with side-effects.
> -- 
> 	--Per Bothner
> per@bothner.com   http://per.bothner.com/
> 


-------------------------------------------------------------------------------------
A.G. Edwards & Sons' outgoing and incoming e-mails are electronically
archived and subject to review and/or disclosure to someone other 
than the recipient.

-------------------------------------------------------------------------------------
Received on Thursday, 22 April 2004 15:55:54 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Saturday, 22 July 2006 00:10:19 GMT