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)
|
> From: Paul Schlie <xxxxxx@comcast.net> >> Taylor Campbell <xxxxxx@bloodandcoffee.net> wrote: >> This is the crux of your argument, and it is wrong. A <datum> is built >> by a stream of tokens. Any token may be preceded by intertoken space, >> which is ignored. Since you have specified that <datum-comment> is >> considered a comment, which in turn is considered intertoken space, a >> <datum>, which begins with a token, may always be preceded by that >> token's intertoken space, which may be a <datum-comment>. Therefore: >> >> --- intertoken space --- (datum comment with B (from '#; A B')) >> / datum \ >> / vvvvvvvvvvvvvvv >> #; #; A B C <-- datum (token C, preceded by >> ^^^^\ intertoken space '#; #; A B') >> | \ datum (token A) >> \ intertoken space (datum comment with A) > > - Sorry, in a nutshell, I don't believe a left recursive grammar is > consistent with scheme's existing exclusively right recursive grammar; > and candidly still surprised anyone would, but what you advocate is: > > <datum-comment> -> #; <datum-comment*-datum> > <datum-comment*-datum> -> <datum-comment>* <datum> ; left recursive > > "#; #; A B C" => "{datum-comment {datum-comment A} B} C" => "C" > > -vs- > > <datum-comment> -> #; <datum-or-datum-comment> > <datum-or-datum-comment> -> <datum> | <datum-comment> ; right recursive > > "#; #; A B C" => "{datum-comment {datum-comment A}} B C" => "B C" > > (as "' ' A B C" => "(quote (quote A)) B C", not "(quote (quote A) B) C") - After more thought, agreeing the grammar: <datum-comment> -> #; <datum> is unfortunately naturally left recursive as it's an <intertoken-space>. I still believe it's inconsistent with scheme's grammar which is otherwise fully right recursive. However this inconsistency can be avoided by forcing it's definition to be right recursive: <datum-comment> -> <datum-comment-token>+ <datum> <datum-comment-token> -> #; Thereby forcing the treatment of all sequential #; as being effectively redundant; thereby eliminating it's otherwise undesirable left recursive behavior. (Which otherwise results in sequential datum-comment-token's affecting statements beyond those immediately following them, which is more likely to be error prone, than intentionally desirable or useful.) Thereby: "#; #; A B C" => {<datum-comment> #; #; A} B C" => "B C" (might this please be considered)