[racket-dev] Merging nonterminals in union-language
I had a feeling I was doing something wrong, but I'm not familiar enough
with the Redex source to do much more than hack until it does what I
want :)
Here is a small example of what I'd like to do: https://gist.github.com/bluephoenix47/5059837
This example seems to work with my patch, but obviously doesn't without
it.
William Bowman
On Thu, Feb 28, 2013 at 02:05:59PM -0600, Robby Findler wrote:
> The reason I didn't do that is very much related to lines 1967-1983 in your
> diff.
>
> That isn't a good idea: what you really want to do there is check to see if
> different patterns generate the same languages or not. But that's not
> something that is easily done (I'm guessing it is computable, but very very
> expensive. It may not be computable, tho, for all I know.)
>
> One could allow unioning by just keeping all productions, and I guess I
> wouldn't mind an extension to define-union-language via a keyword that did
> that, tho.
>
> In your case, is there not a way to refactor your grammars so that you
> don't need this capability? Could you maybe make a small, representative
> example to post to the list? I find that kind of thing to be quite helpful
> for me to understand what the best change to Redex is.
>
> Robby
>
>
>
> On Thu, Feb 28, 2013 at 1:46 PM, William J. Bowman
> <wjb at williamjbowman.com>wrote:
>
> > Hello all,
> >
> > I've been hacking on some languages in Redex, and found myself
> > abstracting commons parts into base languages, and gradually building new
> > languages via `define-extended-language' and `define-union-language'.
> > Unfortunately, I hit a wall when I discovered `define-union-language'
> > doesn't like to union languages that define the same nonterminals.
> >
> > Consider this toy example: https://gist.github.com/bluephoenix47/5054403
> >
> > This seems like a sensible thing to want to do, so I forked racket wrote a
> > patch:
> >
> > https://github.com/bluephoenix47/racket/commit/0a7781b2be2643778f8d8d10d771ab1ce2dc622b
> >
> > Unfortunately, several Redex tests fail (http://sprunge.us/fPHU) because
> > they expect an error when languages which define the same nonterminals
> > are used in `define-union-language'.
> >
> > Is this *desired* behavior? If so, why? It seems very reasonable to want
> > to merge the nonterminals of languages.
> >
> > --
> >
> > William J. Bowman
> >
> > _________________________
> > Racket Developers list:
> > http://lists.racket-lang.org/dev
> >
> >
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital Signature
URL: <http://lists.racket-lang.org/dev/archive/attachments/20130228/096fbfa3/attachment.sig>