mental / rydia.net wrote:
> 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
> 
> 

Best. Idea. Ever.


Cheers,
Daniel