new, simpler formal specification Taylor Campbell (22 Mar 2005 22:56 UTC)
|
Re: new, simpler formal specification
Paul Schlie
(23 Mar 2005 01:49 UTC)
|
Re: new, simpler formal specification
Taylor Campbell
(23 Mar 2005 03:02 UTC)
|
Re: new, simpler formal specification
Taylor Campbell
(23 Mar 2005 05:59 UTC)
|
Re: new, simpler formal specification
Paul Schlie
(23 Mar 2005 17:00 UTC)
|
Re: new, simpler formal specification
Taylor Campbell
(23 Mar 2005 21:26 UTC)
|
Re: new, simpler formal specification
Paul Schlie
(23 Mar 2005 21:22 UTC)
|
Re: new, simpler formal specification
Taylor Campbell
(23 Mar 2005 22:48 UTC)
|
Re: new, simpler formal specification
Paul Schlie
(24 Mar 2005 01:06 UTC)
|
Re: new, simpler formal specification
Taylor Campbell
(24 Mar 2005 02:35 UTC)
|
Re: new, simpler formal specification
Paul Schlie
(24 Mar 2005 05:37 UTC)
|
Re: new, simpler formal specification
Paul Schlie
(24 Mar 2005 15:57 UTC)
|
I recently wrote an alternative specification of Scheme's syntax using (roughly) BNF, but in such a way that is much more in the spirit of Lisp: the syntax of the external representation of S-expressions is separated from the syntax of Scheme, and S-expressions are specified in such a way as to resemble a recursive-descent parser as closely as possible. That is not the point of this message, though. In writing the alternative specification, I realized that S-expression comments can be specified much more simply. Specifically, all it requires is that the <datum>, <list>, & <vector> non-terminals be extended, and a <commented datum> be introduced. (<Token> must of course be extended with a "#;" option, too.) <Datum> becomes: <datum> ---> <simple datum> | <compound datum> | <commented datum> <commented datum> ---> "#;" <datum> <datum> <List> & <vector> use a couple of auxiliary rules; they are all presented here: <list> ---> "(" <datum>* <optional dot> <delimiter prefix> ")" <optional dot> ---> <empty> | <datum> <delimiter prefix> "." <datum> <vector> ---> "#(" <datum>* <delimiter prefix> ")" <delimiter prefix> ---> <empty> | "#;" <datum> <delimiter prefix> The first datum within a commented datum is ignored, as is any datum immediately following the "#;" token in a delimiter prefix. This formal specification is much simpler than what Al* Petrofsky suggested earlier, and I think it should satisfy Paul Schlie's demands for a grammar more consistent with Scheme's existing one. If no one sees any problems with it, I'll change the SRFI document to use it and finalize the SRFI, which is a bit overdue. Should Paul Schlie still prefer his own specification, which I still don't understand, he should provide an implementation of it in terms of Scheme48's reader (as I show in the document), and he should explain why he wants to so drastically change the various reader abbreviations, those for QUOTE, QUASIQUOTE, &c., to magically disappear due to their being in what was previously syntactically invalid locations. (My alternative specification of Scheme's syntax, by the way, is at <http://www.bloodandcoffee.net/campbell/code/scm-syntax.text>, for those curious. Any comments, questions, or other feedback on it would be appreciated, though such feedback should be sent to me directly, not to this mailing list.)