Commit Graph

186 Commits

Author SHA1 Message Date
icculus
05ac70ee0a Merged trunk to lemon-update-2010 branch.
FossilOrigin-Name: 88b466bae47d006c48eff42ab271f05ff56d5ed1
2010-03-03 16:54:58 +00:00
icculus
866bf1e6a2 Repore error if the grammar has multiple %type lines for the same nonterminal.
FossilOrigin-Name: 721f33e7221c5fc907e9e293ac3242843f4fcfb7
2010-02-17 20:31:32 +00:00
icculus
d0d97b09c6 Fixed % formatting in some printf-style strings.
FossilOrigin-Name: f96add898f096cfc1e435c625ce74093d790b3c7
2010-02-17 20:22:10 +00:00
icculus
10163b7d82 Corrected error message (cut-and-paste bug).
FossilOrigin-Name: b3839f2aad00844c578d496c40481a39c018e4f6
2010-02-17 20:19:50 +00:00
icculus
a3191195af Removed unused variables.
FossilOrigin-Name: ca570a02f5c5215098050de4eb551b2dcd11b1fd
2010-02-17 05:40:34 +00:00
icculus
8e15802812 Removed %expect directive, on drh's advice.
FossilOrigin-Name: b43ac3309e77dc8ea2952bf62da6eaad5aef6653
2010-02-16 16:09:03 +00:00
icculus
15a2cec1ed Patched to compile. Accidentally removed va_list declaration.
FossilOrigin-Name: 673d470c0c14106da05461d355a0c09e5f62851d
2010-02-16 16:07:28 +00:00
icculus
1c11f74a8a Removed the 80-char line formatting for ErrorMsg(), on dhr's suggestion.
FossilOrigin-Name: 132ea4e5d7f69fc307904f5086a72d8532e5aac6
2010-02-15 00:01:04 +00:00
icculus
9e44cf1a03 Make Lemon able to compile as C++ code.
FossilOrigin-Name: 75a1060b29eb4122487152b068e7d1073eb0ccab
2010-02-14 17:14:22 +00:00
icculus
d191282111 Added option to not clip error output.
This is useful for IDEs and other tools that benefit from full path
information, so they can jump directly to the error line in the source code.

FossilOrigin-Name: 90602030d18152a934644db119a291aa38fe3fd4
2010-02-14 05:42:46 +00:00
icculus
f5ad824071 Delete output files if this is a failed run.
Otherwise, the fail will stop a Makefile from progressing, but if you
immediately run the build again, Make will think the output files are up to
date, since they are newer (albeit incomplete/incorrect).

FossilOrigin-Name: e38c08d9cdeb0476ac1a77cd3f29f547a8205835
2010-02-14 05:34:42 +00:00
icculus
42585cf73a Added %expect directive, to consider a certain number of conflicts "correct."
This has the side effect of changing the process exit code to never overflow.

FossilOrigin-Name: d8bab8cf0bc3fbd4c489c31a65d724dda2944d83
2010-02-14 05:19:56 +00:00
icculus
3e143bdfaf Added -T option, to specify a template filename on the command line.
The default is still "lempar.c", though.

FossilOrigin-Name: e6cbe1e5ee80db282a41951b805b7bd8b13adf28
2010-02-14 00:48:49 +00:00
drh
8dc3e8f3e6 Another attempt at fixing the table generator in lemon. Again, this does
not effect the SQLite grammar.

FossilOrigin-Name: e22c090f35b3a2bac64781d33aa1123ed765dbbf
2010-01-07 03:53:03 +00:00
drh
cf3e518506 Fix an issue with lemon generating incorrect grammars. This issue does
not effect SQLite.

FossilOrigin-Name: 077a6bee2dd4668a5b13c37aa7d4c052350ec782
2010-01-06 13:07:30 +00:00
drh
f16371d650 Enhancements to lemon to generate more compact action tables and to avoid
making array bounds tests that can never fail on action table calculations.

FossilOrigin-Name: 27d8e684db4651155c4bcb8bb44bf1c692b8c48b
2009-11-03 19:18:31 +00:00
drh
e594bc3595 Adjust the lemon implementation so that it always computes the same PDA
regardless of qsort() implementation on the host platform.  In other words,
make all sorts in lemon stable.

FossilOrigin-Name: d66a0f31ebcc56e6f0f462b3db6aab54f7fab816
2009-11-03 13:02:25 +00:00
drh
c53eed1703 Change lemon so that it does not generate yytestcase() macros on destructor
cases since destructors are commonly unreachable in a reasonable grammar.
For the reduce-rule switch, gather all no-ops into the "default:" case. (CVS 6757)

FossilOrigin-Name: caebfe82cb1b1215a85ed48fe97360c5422c52e0
2009-06-12 17:46:19 +00:00
drh
7501301e8d The previous check-in ((6755)) put in more yytestcase() macros than are
called for.  This check-in addresses that problem. (CVS 6756)

FossilOrigin-Name: a5b182f93b9e57754c8b9507cf491a7bbf0fd127
2009-06-12 15:47:34 +00:00
drh
8a415d3743 The lemon parser generator now inserts yytestcase() macros on reduce action
and on each destructor, to verify that all have been executed.  yytestcase()
is a no-op by default but can be set to something more useful inside
of %include. (CVS 6755)

FossilOrigin-Name: fe9c9177340a3dc372ffa1b851030d005e0c46db
2009-06-12 13:53:51 +00:00
drh
1441f3e083 In lemon: omit unused entries from the end of the yyFallback array. (CVS 6754)
FossilOrigin-Name: 9cfbe2ba68470a2850a7d7a64eb088f7b422a3e5
2009-06-12 12:50:50 +00:00
drh
02368c983f Fix a segfault in Lemon that occurs if the input grammar does not define
a type for tokens.  This does not effect SQLite since the SQLite grammar
does define a type for tokens. (CVS 6451)

FossilOrigin-Name: 4424aee958b2e764a61141b5c66c063e36ed5aae
2009-04-05 15:18:02 +00:00
drh
15b024c22a Initialize the yyzerominor constant generated by lemon. (CVS 6016)
FossilOrigin-Name: 76c8f6ba87f333f15444ba5444bc675ec4cfd89e
2008-12-11 02:20:43 +00:00
shane
5854393cd9 Added option (-l) to lemon parser to have it skip printing line numbers (#line ... ). (CVS 6008)
FossilOrigin-Name: ccb9393a7a10f0970419b860af293b0bdad7f894
2008-12-10 20:10:04 +00:00
drh
87cf137735 Explicit casts of the return from strlen() to int in lemon. This has
no effect on SQLite.  It has no effect on any lemon-generated parser
with a grammar that is less than 2GB in size.  Ticket #3293. (CVS 5564)

FossilOrigin-Name: a519cdb2f46fffe16e666f161479a22463616cb3
2008-08-13 20:09:06 +00:00
drh
639efd0451 Fix token destructors in lemon generated parsers. Does not effect SQLite.
Ticket #3299. (CVS 5563)

FossilOrigin-Name: 4887e8fc4af9e2963b3eff3187dee5b0d6297eb5
2008-08-13 20:04:29 +00:00
drh
633e6d57d9 Implement the "lookaside" memory allocation cache. Use of this cache makes
the speed1.test script run about 15% faster.  Added new interfaces to
control the cache. (CVS 5488)

FossilOrigin-Name: e48f9697e9fea339e150ddc32940760027dd07d9
2008-07-28 19:34:53 +00:00
drh
34ff57b12f Fix additional typos in comments within lemon. Ticket #3215. (CVS 5405)
FossilOrigin-Name: 372147699585ca4bd11100983de924f63c5cfce5
2008-07-14 12:27:51 +00:00
drh
b5bd49e9cb Fix a bug in the #line generator of lemon. Ticket #3214. (CVS 5404)
FossilOrigin-Name: dc697c26668929c4eed5ab8cde6975125a7e66c7
2008-07-14 12:21:08 +00:00
drh
4dc8ef520a In lemon: coalesce identical destructors. (CVS 5335)
FossilOrigin-Name: 3447086cd3f6e9b89a8cf61afcf4715977bbf4cd
2008-07-01 17:13:57 +00:00
drh
32c4d743bc In Lemon, if a non-terminal has the same type as a terminal, then reuse the
terminal type in the YYMINORTYPE union for the non-terminal.  This gives
better table compression. (CVS 5334)

FossilOrigin-Name: 5c9cc22cd8e9bec3d8622d2c354423281f2db0fb
2008-07-01 16:34:49 +00:00
drh
a5808f31f0 Allow multiple occurrances of %include in lemon input files.
Ticket #3001. (CVS 5053)

FossilOrigin-Name: f22fa11bde0b77cfc5ff438f2ec6ab95dc87c291
2008-04-27 22:19:44 +00:00
rse
d18eef5c57 remove an unused variable (CVS 4751)
FossilOrigin-Name: 88846195474e620d0c3029d464d074aea6e82a22
2008-01-27 10:35:56 +00:00
drh
c4dd3fd280 Changes to lemon to generate additional comments in the output file and
to remove unreachable code.  Additional test cases for improved test
coverage. (CVS 4736)

FossilOrigin-Name: 2a0bc1e186532a0bfe36ca18fda74a5e7a199227
2008-01-22 01:48:05 +00:00
drh
9892c5d1f4 Fix some issues with lemon. Tickets #2852 and #2835. (CVS 4641)
FossilOrigin-Name: 5283e0d1467e0fc0ebbd1be553b5a8762e9c7975
2007-12-21 00:02:11 +00:00
drh
b496099751 Changes lemon so that the generated parser does not accept prior to
seeing the EOF token.  This is a lemon change only and does not
effect SQLite.  Ticket #2550. (CVS 4473)

FossilOrigin-Name: 1c68d93412a608f5164ad984ff290ab3b832bf7a
2007-10-05 16:16:36 +00:00
rse
38514a9fb2 get rid of remaining GCC 4.3 -Wall compiler warnings by initializing two variables and one structure properly (although the code path was already rather safe) (CVS 4439)
FossilOrigin-Name: d748694f8d9b14d98b6fe7ceb404754692761705
2007-09-20 11:34:17 +00:00
drh
aa9f112137 Change names of constants in lemon.c to work around name conflicts
on Solaris.  Ticket #2583. (CVS 4274)

FossilOrigin-Name: e4e74cd0f9343448ea38e57f08bb4f0616825f31
2007-08-23 02:50:56 +00:00
rse
8f30448a30 "extern" declarations inside function bodies are not every compiler's
favorite, so move to global scope. Additionally, at least under Unix
environment use <unistd.h> to get the proper prototype instead of using
a K&R-style own declaration. (CVS 4190)

FossilOrigin-Name: 5955a77d6c902dc65897ba19d6e06db3e10bd3ee
2007-07-30 18:31:53 +00:00
drh
e927818455 Additional diagnostics added to the "out" file generated by lemon. (CVS 4160)
FossilOrigin-Name: 7ef2aaf72a8a953df7a763dd94657bb4ff05294f
2007-07-18 18:16:29 +00:00
drh
19c9e5694c Fix to token destructors in Lemon. This does not impact SQLite. Ticket #2175. (CVS 3753)
FossilOrigin-Name: 6195af49828bf04b61d24f116339780d3eb926a1
2007-03-29 20:13:53 +00:00
drh
b19fd012b0 Lemon change: compile the resulting parser with -DYYSTACKDEPTH=0 or set
the "%stack_size" parameter to 0 in the grammar and the parser stack
will be dynamically allocated using realloc() and free().  The default
behavior is to have a finite depth stack. (CVS 3738)

FossilOrigin-Name: 06719b741ab1a2df0371f6d587563cc81eb8880a
2007-03-29 01:44:45 +00:00
drh
ca44b5a3d9 Make the depth of the pushdown automaton stack generated by lemon
changable at compile-time using -DYYSTACKDEPTH=<number>. (CVS 3654)

FossilOrigin-Name: d8845ac1fbf8c3f483d47c35f908817ea37128ec
2007-02-22 23:06:58 +00:00
drh
61e339a60d Make sure the parser generated by lemon always calls destructors on
unused symbols, even if there is no action following the rule.
Ticket #2171. (CVS 3593)

FossilOrigin-Name: 0c5c1b931dfdc163f300f458e4b305c9f50e17f8
2007-01-16 03:09:02 +00:00
drh
e047921c78 Fix a bug in lemon. The code in which the error appears might well be
unreachable.  The changes does not effect the code that is generated for
the SQLite parser.  Ticket #2164. (CVS 3591)

FossilOrigin-Name: f4ee5d83e177e7ed9f180454c01d46a395a5715d
2007-01-12 23:09:23 +00:00
drh
f0fa1c1b9f Fix a bug in lemon that leads to an assertion fault given an invalid
grammar.  The bug and this fix do not effect on SQLite.  Ticket #2107. (CVS 3528)

FossilOrigin-Name: f2ad230f6dce98d664370d77845b5f585de20f08
2006-12-14 01:06:22 +00:00
drh
5048962a0f Avoid expanding %d contained in the action of a lemon parser rule.
Ticket #1063.  This is a fix for lemon only.  It does not effect SQLite. (CVS 3476)

FossilOrigin-Name: 81daedcf48372949b9df009ce6121a514ecf6f2e
2006-10-13 12:25:29 +00:00
drh
916f75fcbd Fix lemon so that it does not crash on a empty reduce action. Ticket #1892. (CVS 3333)
FossilOrigin-Name: 4207ebc4e107df9f9f046be652f061e53263c8dd
2006-07-17 00:19:39 +00:00
drh
954f6b4763 Lemon correctly recognizes an empty grammar and errors out.
Fix for a bug reported on the sqlite-users mailing list. (CVS 3226)

FossilOrigin-Name: 55392922686691db3d41525a7f4cb7f976e73467
2006-06-13 13:27:46 +00:00
drh
e09daa90ac Basic parsing of CREATE VIRTUAL TABLE statements. (CVS 3210)
FossilOrigin-Name: 66370cb99bd93abb33e1e8433672da45e1795f78
2006-06-10 13:29:31 +00:00
drh
43617e9ab9 Code changes resulting from Coverity analysis.
http://scan.coverity.com/  Found 1 potential segfault in sqlite3_mprintf().
Also 2 failures to fclose() following a malloc() failure.  And lots of
cases where unnecessary conditionals could be removed from the code. (CVS 3126)

FossilOrigin-Name: e510e6dd9d6261f33b853af3b32d155b9d6b63b3
2006-03-06 20:55:46 +00:00
drh
fd405314d3 About 0.5KiB of additional compression in the parser tables. (CVS 2764)
FossilOrigin-Name: f39974ebd81f274dc4cf6cf94e6e87ee7b4a0814
2005-11-06 04:06:59 +00:00
drh
ada354db0e Improved table compression in lemon reduces the overall library size
by about 1.5KiB. (CVS 2761)

FossilOrigin-Name: 86ac11476962727d2d40b62ce87d689c01969537
2005-11-05 15:03:59 +00:00
drh
dc30dd3158 Patch the command-line error message printing for lemon. Ticket #1120. (CVS 2345)
FossilOrigin-Name: 97c7aaf1870a86955f0f3a0cbe06187e3c3ccc90
2005-02-16 03:35:15 +00:00
danielk1977
940fac9dc5 Minor changes to avoid warnings on some compilers. (CVS 2267)
FossilOrigin-Name: 4daf1d1f9d4d32397d785d660394c5579c296b1f
2005-01-23 22:41:37 +00:00
drh
8d65973d93 Fix a bug in lemon that does not effect SQLite. Ticket #1068. (CVS 2208)
FossilOrigin-Name: 7113b5ed8d51718356ce1cc51896a3070875a7e2
2005-01-13 23:54:06 +00:00
drh
5719628afb Convert many constants to have type "const". (CVS 2006)
FossilOrigin-Name: d790c84c5a889928d07f5394fffef0cbb8d5f214
2004-10-06 15:41:16 +00:00
drh
2aa6ca45c1 In lemon, allows open() using the "b" option to avoid \r problems on windows.
Ticket #897. (CVS 1956)

FossilOrigin-Name: b5b2e3db09831fe808f9f2692a836eef716df1c5
2004-09-10 00:14:04 +00:00
drh
9db55dfb98 Fix lemon so that inserted code always ends in a newline. Ticket #895. (CVS 1955)
FossilOrigin-Name: 13fba17e3f75c08142db6acc8884a78ac0bcdfd6
2004-09-09 14:01:21 +00:00
drh
af805ca035 Lemon escapes backslashes in filenames in #line directives it generates.
Ticket #892. (CVS 1943)

FossilOrigin-Name: d53047cbbc4e618c7bb5161b6f82876bb113db25
2004-09-07 11:28:25 +00:00
drh
7f4680c92e Remove the \001 character that lemon inserts automatically in its
output file.  The need for this character has expired and it creates
confusion for users.  Ticket #877 (CVS 1920)

FossilOrigin-Name: acfc59186ac7452c0a74dc4ef8df9a1c94fc4f46
2004-08-30 14:22:31 +00:00
drh
7ac25c7510 Enhance lemon so that a @X instead of just X in the code expands to the
major token value rather than the minor token value.  Use this to make
the parser a few hundred bytes smaller. (CVS 1895)

FossilOrigin-Name: 28215096e0748b5b02776ddb4c964e0161bc0f16
2004-08-19 15:12:26 +00:00
drh
0bb132bedc Lemon collapses common destructors and reduce actions into a single case. (CVS 1837)
FossilOrigin-Name: 3c5aa850eeec5c75c5200a3707852cc5fc9e780b
2004-07-20 14:06:51 +00:00
drh
6d08b4d647 Add the '%ifdef' capability to lemon. Other minor changes. (CVS 1836)
FossilOrigin-Name: 522ff721ccc33c4b89072fed4e451f0df82e8140
2004-07-20 12:45:22 +00:00
drh
218dc69436 Synchronize lemon.c to the version on the 2.8 branch. (CVS 1513)
FossilOrigin-Name: 6ab3af8847a7b0f1508824c9d8e0ec9685219371
2004-05-31 23:13:45 +00:00
drh
cc83b6e071 Add an extra assert() to lemon.c to make debugging easier. Ticket #692. (CVS 1305)
FossilOrigin-Name: 818bdba5dc25cda56716fdda1781a3d4ecb3a111
2004-04-23 23:38:42 +00:00
drh
60d316542f Do not sort terminal symbols by name. The terminals remain in the same order
that they are encountered in the grammar file.  This results in parse tables
that are 25% smaller. (CVS 1261)

FossilOrigin-Name: f36b122d9767fa9e6dc5bcce04b5606d67cad3d9
2004-02-22 00:08:04 +00:00
drh
784d86f716 Fix a bug in the parser table compression algorithm of lemon. (CVS 1249)
FossilOrigin-Name: 8d3e924975681a871e0eeac3b6a62cffdb947ac7
2004-02-19 18:41:53 +00:00
drh
fdbf928b08 Fix bugs in lemon associated with the change to a perfect hash table. (CVS 1113)
FossilOrigin-Name: c0d1b26966aeb445fea5792e5a9e93632e758c2a
2003-10-21 16:34:41 +00:00
drh
8b582012de Convert lemon to use a single perfect hash table for storing the actions.
This should make the resulting parser both smaller and faster. (CVS 1112)

FossilOrigin-Name: 4f955c00076b16166ff837749efb84201eab3c3a
2003-10-21 13:16:03 +00:00
drh
3b2129cf77 A change to lemon related to ticket #313. (CVS 972)
FossilOrigin-Name: b59d9033d5556015543ac5ca23110ccbeb4391f0
2003-05-13 00:34:21 +00:00
drh
f9a2e7bb8d Change lemon to use <stdarg.h> instead of <varargs.h> because GCC no longer
supports varargs.h.  Tickets #288 and #280.  Ironically, lemon originally
used varargs.h because stdarg.h was not supported by the compiler I was
using in 1989 (which was gcc if I recall correctly.) (CVS 905)

FossilOrigin-Name: 7902e4778ec86e25ad949ae7a6d55b63ac0e85f3
2003-04-15 01:49:48 +00:00
drh
b27b83a941 Fix for ticket #134: Change the lemon.c sources to work around a problem with
the AIX C compiler. (CVS 715)

FossilOrigin-Name: 07f6020bb56d6d1bffdd936017f61cfae5bd134b
2002-08-14 23:18:57 +00:00
drh
0bd1f4ea5a Added the %fallback directive to the lemon parser generator and used this
in the parser to make the parse tables much smaller.  This reduced the size
of the library by 15K. (CVS 605)

FossilOrigin-Name: 7ac5bd293cbb2bf252f31f1571f7efac7e77280a
2002-06-06 18:54:39 +00:00
drh
1f245e488a Change the way that lemon handles %extra_argument. (CVS 427)
FossilOrigin-Name: ffc387a48a9864b7f323314fbf8295b5bb2a3bd1
2002-03-11 13:55:50 +00:00
drh
7218ac7098 Bug fix: updates within a transaction would fail if there was existed
a temporary table. (CVS 425)

FossilOrigin-Name: 02cc2d60b2a5ee50efdbd90df90810ba559a453f
2002-03-10 21:21:00 +00:00
drh
1b2e032999 Bug fixes and additional tests for the subquery flattener. (CVS 411)
FossilOrigin-Name: 2c05389eda391e38894fc6969e29766df82a8fec
2002-03-03 02:49:51 +00:00
drh
b29b0a5227 Modify lemon to use much less memory for its parser tables. This reduces
the size of the library by 50K, which is important for an embedded library. (CVS 389)

FossilOrigin-Name: 67a135a051e7c96ddbfe85976539b4b8372c7026
2002-02-23 19:39:46 +00:00
drh
b59499c73b Bug fix in lemon: 3-way conflicts (SHIFT/REDUCE/REDUCE) were not detected or
resolved.  This is now fixed.  Also, table compression works a little better. (CVS 388)

FossilOrigin-Name: 8da0ac9a8bb859377613dd18f4f423eb49c7338b
2002-02-23 18:45:13 +00:00
drh
ba99af57ac Make lemon 64-bit clean (CVS 294)
FossilOrigin-Name: 475e2fedda2256cc1cfdffa1b12745bc401e552d
2001-10-25 20:37:16 +00:00
drh
b19a2bc603 Disclaimed copyright. Preparing for release 2.0. (CVS 250)
FossilOrigin-Name: 4e926efe2b59adfec4086eb1d2ba830238facb4c
2001-09-16 00:13:26 +00:00
drh
960e8c6317 Bug fixes from Oleg Oleinick (CVS 195)
FossilOrigin-Name: 1f0197d504fa2bde15b287ac6c0102cacdb1e482
2001-04-03 16:53:21 +00:00
drh
61bc272814 bug fix in lemon (CVS 136)
FossilOrigin-Name: 6f4c080739333dbbc3556b5cf96f341f62167646
2000-08-20 11:42:46 +00:00
drh
b0c86771d5 :-) (CVS 44)
FossilOrigin-Name: cd83d3cfeb26ebf0d33e7113d0ee549c9cfd55c5
2000-06-02 23:21:26 +00:00
drh
b1edd01ec9 :-) (CVS 42)
FossilOrigin-Name: 11e3296319843356cf09832577f7dea4b33c78be
2000-06-02 18:52:12 +00:00
drh
75897234be initial check-in of the new version (CVS 1)
FossilOrigin-Name: 6f3655f79f9b6fc9fb7baaa10a7e0f2b6a512dfa
2000-05-29 14:26:00 +00:00