[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: The ". $" notation



On 3/19/13, David A. Wheeler <dwheeler@xxxxxxxxxxxx> wrote:
> Alan Manuel Gloria:
>> >> 1.  Allow "foo . EOL INDENT x ..." ==> "(foo . (x ...))"
>> >> 2.  Allow "foo . $ x ..." ==> "(foo x ...)"
>
> Unfortunately, those 2 forms greatly differ in ease-of-implementation.
>
> The *second* form is easy to add to the BNF.  Here's the patch:
>
> diff --git a/sweet.g b/sweet.g
> index 82055ea..937e54d 100644
> --- a/sweet.g
> +++ b/sweet.g
> @@ -1061,6 +1061,7 @@ rest returns [Object v]
>          (pn=n_expr hspace* (n_expr error)? {$v = $pn.v;}
>           | COLLECTING hspace* pc=collecting_tail hspace*
>             (n_expr error)? {$v = $pc.v;}
> +         | SUBLIST hspace* ps=rest {$v = $ps.v;}
>           | empty {$v = list(".");})
>         | empty   {$v = list(".");})
>    | scomment hspace* (sr=rest {$v = $sr.v;} | empty {$v = null;} )
>
>
> So we could easily support form #2, and I don't see any big downside.
> I'll post the ANTLR patch on git; we can revert it later, or implement it in
> the
> Scheme implementation, depending on what people say.
>
> I don't see an obvious way to add the first form to the BNF, though, and
> I don't think we should reorganize everything for such a bizarre case.
> Also, I can see form #1 being created accidentally, so *preventing* it seems
> wise.
>
> Granted, that's a minor inconsistency, but ". $" is such a bizarre useless
> sequence that I'm going to lose any sleep over it (if we add it).

There's a subtle problem with ". $" though...

First:

a $ b
===>
(a b) ; as described in the rationale for SUBLIST.

Then:

a . $ b
===>
(a . b)

???

Hmm.

Sincerely,
AmkG