wireshark/tools/lemon
João Valverde f2218ae5f0 Lemon: Update code and remove cruft
Remove some unused historical files.

Aggressively disable warnings to keep the lemon source
pristine and avoid the maintenance burden for lemon itself.

Lemon has its own lax policy for warnings that doesn't match our
own and they won't accept external patches to remove the
warnings, so just ignore them. Lemon is just executed to generate
code for the Wireshark build and the minor code issues it has
have no influence at runtime.

For lemon generated code we selectively disable some linting
warnings.

Remove patches for lemon and lempar, they are no longer required
with these changes to silence warnings.
2023-01-01 18:18:06 +00:00
..
CMakeLists.txt Lemon: Update code and remove cruft 2023-01-01 18:18:06 +00:00
README Lemon: Update code and remove cruft 2023-01-01 18:18:06 +00:00
apply-patches.sh Lemon: Update code and remove cruft 2023-01-01 18:18:06 +00:00
lemon.c Lemon: Update code and remove cruft 2023-01-01 18:18:06 +00:00
lempar.c Lemon: Update code and remove cruft 2023-01-01 18:18:06 +00:00

README

The Lemon Parser Generator's home page is:  https://www.hwaci.com/sw/lemon/
Lemon seems now to be maintained at:        https://sqlite.org/lemon.html

Documentation is available at:  https://sqlite.org/src/doc/trunk/doc/lemon.html
Git mirror of the upstream Fossil repository: https://github.com/mackyle/sqlite

The lempar.c and lemon.c are taken from sqlite and are modified as little as
possible to make it easier to synchronize changes. Last updated at:

    commit a913f942cf6b32b85de6428fd542b39458df2a88
    Author: D. Richard Hipp <drh@hwaci.com>
    Date:   Wed Dec 28 14:03:47 2022 +0000

        Version 3.40.1

To check for changes (adjust "previous commit" accordingly):

    git clone --depth=1000 https://github.com/sqlite/sqlite
    cd sqlite/tools
    git log -p 273ee15121.. lemon.c lempar.c

To create a Wireshark version (steps 1-3) and validate the result (steps 4-5):
1. Copy the two files.
2. Run ./apply-patches.sh to apply local patches.
3. Update the commit in this README (to ensure the base is known).
4. Check for CSA warnings:  clang-check -analyze lemon.c --
5. Build and run lemon:     ninja epan/dfilter/grammar.c

To keep the lemon source as pristine as possible from upstream all warnings
when building lemon itself are disabled. Only patch the lemon source code as
a last resort.

Warnings for lemon generated code are few in practice with -Wall -Wextra. These
are preferably selectively disabled in the Wireshark build.

The patches to lemon to silence compiler warnings and static analysis reports
(for edge cases that cannot occur) are not proposed upstream because that
process is difficult. From <https://www.sqlite.org/copyright.html>:

    SQLite is open-source, meaning that you can make as many copies of it as you
    want and do whatever you want with those copies, without limitation. But
    SQLite is not open-contribution. In order to keep SQLite in the public
    domain and ensure that the code does not become contaminated with
    proprietary or licensed content, the project does not accept patches from
    unknown persons.

A note about the Lemon patches, we have no intention to fork Lemon and maintain
it. These patches are written to address static analyzer warnings without
actually modifying the functionality. If upstream is willing to accept patches,
then that would be great and the intention is to make it as easy as possible.
The lemon and lempar patches are dedicated to the public domain, as set forward
in Creative Commons Zero v1.0 Universal (IANAL, but I hope this is sufficient).