|
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.)