Subject: bug#16008: semantic/grammar-wy.el cannot be bootstrapped

From: David Engster <[email-masked]>
Date: Sat, 30 Nov 2013 11:00:47 +0100

Glenn Morris writes:
> semantic/grammar-wy.el is a generated file and therefore ideally should
> not be kept in the Emacs VCS.

That's true for all parsers. However, grammar-wy.el is special, as
you've noticed.

> It is generated by semantic/grammar.el.
> semantic/grammar.el requires semantic/grammar-wy.el, therefore
> it is not possible to bootstrap without semantic/grammar-wy.el already
> present.

Yes, it has a circular dependency, because the parser grammar-wy.el
parses grammar files, including itself. In upstream, we have a fallback
parser for this, which is used when grammar-wy.el is not present
yet. Needless to say, you'll soon face chicken/egg problems when you do
changes in grammar.wy, which IMHO cause more pain in the rear than
having generated files under version control. In fact, every time I
worked on grammar.wy, I thought about getting rid of bootstrapping at
compile time and just put all parsers under version control.

> I should also note that the version of semantic/grammar-wy.el in the
> Emacs trunk does not match up with its sources.
>
> It contains:
>
>   (require 'semantic)
>
> Yet if you regenerate it, it contains:
>
>   (require 'semantic/lex)
>   (eval-when-compile (require 'semantic/bovine))

Yes, there may be small differences w.r.t. to requires and such. The
generated parsers should never differ, though.

Problem is: the freeze is near, and I have to do another sync with
upstream, and I'd also really like to get a few things fixed before
that.

-David