[racket-dev] Merging nonterminals in union-language

From: Robby Findler (robby at eecs.northwestern.edu)
Date: Thu Feb 28 15:05:59 EST 2013

The reason I didn't do that is very much related to lines 1967-1983 in your

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.


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 --------------
An HTML attachment was scrubbed...
URL: <http://lists.racket-lang.org/dev/archive/attachments/20130228/7b05b887/attachment.html>

Posted on the dev mailing list.