Dump bison
Hal Murray
hmurray at megapathdsl.net
Tue Jun 19 06:27:47 UTC 2018
Eric said:
> The problem with the new-parser-generator theory is that as much fun as I'd
> have doing it, the net effect on stability and maintainability would probably
> be negative. There's that how-do-you-know-you-specced- the-same-grammar
> problem again.
Actually, I think the stability would improve. We would probably build a test
harness that the current setup lacks.
There used to be code to write out the parser results. It wrote out the
in-memory version, not from the parser callouts. But you could diff it with
the input if your input was in the correct order.
When we ripped that stuff out, why didn't we add something better? I'm
thinking of a simple module that passes in a file name and catches all the
callouts and stubs them with simple printfs - something off to the side rather
than cluttering up ntpd itself.
There are several ways we could fix the warnings.
One would be to patch the generated code. Run bison. Edit by hand until the
compiler is happy. Save those edits as a patch file. Add the patch file to
git as source code. Teach waf to apply the patch... As long as the patch is
something simple like dropping in an endcase, that's probably reasonable to
maintain.
The simplest solution is probably John Bell's suggestion. Hack waf to filter
the flags used to compile the parser to not use the option that generates the
warnings.. - even if it would be used for the rest of the compiles.
> So, in sum, I think living with a warning or two is the least bad option. The
> second least bad is that I slightly customize the Bison parser skeleton to
> make the problem go away; of course then we'd have to maintain that through
> Bison upgrades.
I agree that living with a few warnings is probably the right approach. At
least for now. But I think it's good to discuss other options.
Maintaining a fixed version of Bison seems like a bad idea. For something
like this, I'd expect upstream would accept a patch. That fixes the warnings
when a new version of Bison is released and distros adopt it.
Currently, we require Bison in the build environment. We don't really need
that. We only need Bison to run on some system we have access to. Then we
could treat the output as source and put it in git. It adds a layer of
complexity that I'm happy we don't have, but it is a possibility.
The approach of saving the Bison output also applies to using a modern parser.
If it isn't widely available, we have the option of running it on one system
and capturing the output to use on other systems.
--
These are my opinions. I hate spam.
More information about the devel
mailing list