]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Improved tracing output from the LEMON-generated parser.
authordrh <drh@noemail.net>
Wed, 11 Dec 2019 18:53:51 +0000 (18:53 +0000)
committerdrh <drh@noemail.net>
Wed, 11 Dec 2019 18:53:51 +0000 (18:53 +0000)
FossilOrigin-Name: 4d6d2fc046d586a1e5989bbb2757f13d0371fbfad0acf45a0e2fd77dffd8d8f9

manifest
manifest.uuid
tool/lemon.c
tool/lempar.c

index 11d39620c80a4e96617537743f2a47ef4392f6e3..7f92b1663aa6a49df4a1293e2e0435bdbd0bcd44 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Strengthen\scheck-in\s[83da4d4104ee1870]\sby\signoring\s*all*\sWHERE-clause\nconstraints\sfor\sa\svirtual\stable\sthat\sis\sthe\sright\stable\sof\sa\sLEFT\sJOIN,\s\nas\ssuch\sconstraints\sare\snever\suseful.\nThis\sfixes\san\sissue\sdiscovered\sby\sManuel\sRigger.
-D 2019-12-11T16:22:53.344
+C Improved\stracing\soutput\sfrom\sthe\sLEMON-generated\sparser.
+D 2019-12-11T18:53:51.696
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
 F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
@@ -1771,8 +1771,8 @@ F tool/genfkey.test b6afd7b825d797a1e1274f519ab5695373552ecad5cd373530c63533638a
 F tool/getlock.c f4c39b651370156cae979501a7b156bdba50e7ce
 F tool/index_usage.c 9ec344d29cbeb03fdc0fce668eedfb7495792170de933adf95cf8d6904a166ad
 F tool/kvtest-speed.sh 4761a9c4b3530907562314d7757995787f7aef8f
-F tool/lemon.c 8c1abca65016ee24bc0d5aeda5510f8ee9123fdef652b9a20616a658f95c1401
-F tool/lempar.c 34b136b281ae022277738d8b51061237fb330deaa317010d89375117e3a028aa
+F tool/lemon.c a53b48e03bdfb31d8b94ee0a8c5a88b2716d77e8b6bbf9ff8be276a8ce61ada5
+F tool/lempar.c e8899b28488f060d0ff931539ea6311b16b22dce068c086c788a06d5e8d01ab7
 F tool/libvers.c caafc3b689638a1d88d44bc5f526c2278760d9b9
 F tool/loadfts.c c3c64e4d5e90e8ba41159232c2189dba4be7b862
 F tool/logest.c 11346aa019e2e77a00902aa7d0cabd27bd2e8cca
@@ -1852,7 +1852,7 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93
 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
 F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
 F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
-P 1fa29a5f2a89b6a1ee067f9cb86de1b66455126349efe3502599fc7ad224170c
-R 1705b0f74ba75d9e6c5b4546a5dce87c
+P 840de36df1aaeb4bad9a7c18e97cc560ba3b8c629c4520a05bc456d67b3347b9
+R 5b7b3da1e783e19bee64e818c1bade2d
 U drh
-Z 019e789a4ccea6f1cebc90f58acb2b95
+Z 28a547edacf915c474b62de15b3656cb
index 7cf6dbdda4eed97c94b82d397dd6550d7fc04bda..d7eae7997f0bf78f967ebbbb5de2bac95107ec32 100644 (file)
@@ -1 +1 @@
-840de36df1aaeb4bad9a7c18e97cc560ba3b8c629c4520a05bc456d67b3347b9
\ No newline at end of file
+4d6d2fc046d586a1e5989bbb2757f13d0371fbfad0acf45a0e2fd77dffd8d8f9
\ No newline at end of file
index c6780de9a8ebdb820f4268bb8c3bc0f7c013adf8..0a7b05a928b5043e3a46f73a0c9203a5930b4cc5 100644 (file)
@@ -387,6 +387,7 @@ struct lemon {
   int nstate;              /* Number of states */
   int nxstate;             /* nstate with tail degenerate states removed */
   int nrule;               /* Number of rules */
+  int nruleWithAction;     /* Number of rules with actions */
   int nsymbol;             /* Number of terminal and nonterminal symbols */
   int nterminal;           /* Number of terminal symbols */
   int minShiftReduce;      /* Minimum shift-reduce action value */
@@ -1716,6 +1717,7 @@ int main(int argc, char **argv)
   for(i=0, rp=lem.rule; rp; rp=rp->next){
     rp->iRule = rp->code ? i++ : -1;
   }
+  lem.nruleWithAction = i;
   for(rp=lem.rule; rp; rp=rp->next){
     if( rp->iRule<0 ) rp->iRule = i++;
   }
@@ -4430,6 +4432,8 @@ void ReportTable(
   ** been computed */
   fprintf(out,"#define YYNSTATE             %d\n",lemp->nxstate);  lineno++;
   fprintf(out,"#define YYNRULE              %d\n",lemp->nrule);  lineno++;
+  fprintf(out,"#define YYNRULE_WITH_ACTION  %d\n",lemp->nruleWithAction);
+         lineno++;
   fprintf(out,"#define YYNTOKEN             %d\n",lemp->nterminal); lineno++;
   fprintf(out,"#define YY_MAX_SHIFT         %d\n",lemp->nxstate-1); lineno++;
   i = lemp->minShiftReduce;
index f8e0885e355bdac0d4d82d1d69e6250f5312e9c5..c82e33298ad90da050943911439bd0af81644150 100644 (file)
@@ -725,12 +725,15 @@ static YYACTIONTYPE yy_reduce(
   if( yyTraceFILE && yyruleno<(int)(sizeof(yyRuleName)/sizeof(yyRuleName[0])) ){
     yysize = yyRuleInfoNRhs[yyruleno];
     if( yysize ){
-      fprintf(yyTraceFILE, "%sReduce %d [%s], go to state %d.\n",
+      fprintf(yyTraceFILE, "%sReduce %d [%s]%s, pop back to state %d.\n",
         yyTracePrompt,
-        yyruleno, yyRuleName[yyruleno], yymsp[yysize].stateno);
+        yyruleno, yyRuleName[yyruleno],
+        yyruleno<YYNRULE_WITH_ACTION ? "" : " without external action",
+        yymsp[yysize].stateno);
     }else{
-      fprintf(yyTraceFILE, "%sReduce %d [%s].\n",
-        yyTracePrompt, yyruleno, yyRuleName[yyruleno]);
+      fprintf(yyTraceFILE, "%sReduce %d [%s]%s.\n",
+        yyTracePrompt, yyruleno, yyRuleName[yyruleno],
+        yyruleno<YYNRULE_WITH_ACTION ? "" : " without external action");
     }
   }
 #endif /* NDEBUG */