Quoting Christophe Grandsire <christophe.grandsire / free.fr>:

> > Matz rejected this claim because we cannot add this syntax
> > without any (yacc's) conflict.
>
> First the block default arguments, now this... It's indeed time
> to get rid of yacc or patch it... Don't look at me! I can't do
> C :(( ...

Seconded.  I really don't think letting yacc dictate the shape of
the language (in ways contrary to human expectation) is a good
thing.  Once that starts happening, it urgently needs to go...

It'd be different if we were, say, hitting the limits of what could
be expressed as a context-free grammar, but in this case -- as far
as I know -- we're simply getting bitten by the limits of a
particular LALR(1) parser generator.

Unfortunately, the only authoritative specification I've been able
to find for Ruby's syntax is the YACC grammar.  Makes replacing
YACC a bit hard.

If somebody wanted to do that, though, I guess the first few steps
(all doable in pure Ruby) would be something like:

 1. write a grammar for Ruby in some neutral format like EBNF

 2. write a simple parser generator for this format

 3. write a mapping from the raw parse tree to Ruby AST

 4. test the grammar against real Ruby ASTs obtained via MetaRuby

(to an extent, these steps can be done incrementally and in
parallel)

Once the neutral grammar's been defined, anyone can take it as a
basis for a real parser in C (or really any language... I imagine
JRuby would find it helpful too -- perhaps the JRuby folks have
already done some of this?), and then lobby for Matz's approval.

But, hopefully there would be ongoing work to keep the neutral
grammar in sync with language developments, so it could also form
the basis of a more comprehensive language specification.

Now, I am relying on the rest of you to tell me what is wrong with
this idea.

-mental