summaryrefslogtreecommitdiffstats
path: root/tools/lemon/README
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--tools/lemon/README52
1 files changed, 52 insertions, 0 deletions
diff --git a/tools/lemon/README b/tools/lemon/README
new file mode 100644
index 0000000..59ed343
--- /dev/null
+++ b/tools/lemon/README
@@ -0,0 +1,52 @@
+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).