From: drh Date: Tue, 10 Nov 2015 14:51:22 +0000 (+0000) Subject: Improved output formatting for "PRAGMA parser_trace=ON;". X-Git-Tag: version-3.10.0~147 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=0c4105ee1930c56b0b1fce4fa7a27c13f838086d;p=thirdparty%2Fsqlite.git Improved output formatting for "PRAGMA parser_trace=ON;". FossilOrigin-Name: e43e1171fd7837a08069dc25df4eac14db1c2afe --- diff --git a/manifest b/manifest index 4e26b0e80e..cae104ad32 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Make\sthe\soutput\sof\s"PRAGMA\sparser_trace"\sgo\sto\sstdout\sinstead\sof\sstderr. -D 2015-11-10T14:27:17.622 +C Improved\soutput\sformatting\sfor\s"PRAGMA\sparser_trace=ON;". +D 2015-11-10T14:51:22.311 F Makefile.in d828db6afa6c1fa060d01e33e4674408df1942a1 F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434 F Makefile.msc e928e68168df69b353300ac87c10105206653a03 @@ -1356,7 +1356,7 @@ F tool/genfkey.README cf68fddd4643bbe3ff8e31b8b6d8b0a1b85e20f4 F tool/genfkey.test 4196a8928b78f51d54ef58e99e99401ab2f0a7e5 F tool/getlock.c f4c39b651370156cae979501a7b156bdba50e7ce F tool/lemon.c 799e73e19a33b8dd7767a7fa34618ed2a9c2397d -F tool/lempar.c 02cd882bd3144a5e25c86c652af49a6bc07baeae +F tool/lempar.c 3ec1463a034b37d87d782be5f6b8b10a3b1ecbe7 F tool/loadfts.c c3c64e4d5e90e8ba41159232c2189dba4be7b862 F tool/logest.c eef612f8adf4d0993dafed0416064cf50d5d33c6 F tool/mkautoconfamal.sh 4bdf61548a143e5977bd86ab93d68b694d10c8fa @@ -1402,7 +1402,7 @@ F tool/vdbe_profile.tcl 246d0da094856d72d2c12efec03250d71639d19f F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4 F tool/warnings.sh 48bd54594752d5be3337f12c72f28d2080cb630b F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f -P 5dcd212bf6489f4698a0ed0f21497c78379f7c0f -R d246e800f7bbd35b4c91162f9a5cfe01 +P 1e4849911e3eed65eabee18fdee63bab4faae57a +R 09ae4147f1c84fb513e1a92470f43128 U drh -Z 7a87ce17e8bd737f41d12f3fe2d64903 +Z 86e43e17960e74008de165832cc2a68a diff --git a/manifest.uuid b/manifest.uuid index 63c210a12f..cd04978930 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -1e4849911e3eed65eabee18fdee63bab4faae57a \ No newline at end of file +e43e1171fd7837a08069dc25df4eac14db1c2afe \ No newline at end of file diff --git a/tool/lempar.c b/tool/lempar.c index 1229646494..312507e5f1 100644 --- a/tool/lempar.c +++ b/tool/lempar.c @@ -539,15 +539,13 @@ static void yyStackOverflow(yyParser *yypParser, YYMINORTYPE *yypMinor){ #ifndef NDEBUG static void yyTraceShift(yyParser *yypParser, int yyNewState){ if( yyTraceFILE ){ - int i; if( yyNewStateyyidx; i++) - fprintf(yyTraceFILE," %s",yyTokenName[yypParser->yystack[i].major]); - fprintf(yyTraceFILE,"\n"); + fprintf(yyTraceFILE,"%sShift '%s', go to state %d\n", + yyTracePrompt,yyTokenName[yypParser->yystack[yypParser->yyidx].major], + yyNewState); }else{ - fprintf(yyTraceFILE,"%sShift *\n",yyTracePrompt); + fprintf(yyTraceFILE,"%sShift '%s'\n", + yyTracePrompt,yyTokenName[yypParser->yystack[yypParser->yyidx].major]); } } } @@ -623,7 +621,7 @@ static void yy_reduce( if( yyTraceFILE && yyruleno>=0 && yyruleno<(int)(sizeof(yyRuleName)/sizeof(yyRuleName[0])) ){ yysize = yyRuleInfo[yyruleno].nrhs; - fprintf(yyTraceFILE, "%sReduce [%s] -> state %d.\n", yyTracePrompt, + fprintf(yyTraceFILE, "%sReduce [%s], go to state %d.\n", yyTracePrompt, yyRuleName[yyruleno], yymsp[-yysize].stateno); } #endif /* NDEBUG */ @@ -779,6 +777,12 @@ void Parse( yypParser->yyerrcnt = -1; yypParser->yystack[0].stateno = 0; yypParser->yystack[0].major = 0; +#ifndef NDEBUG + if( yyTraceFILE ){ + fprintf(yyTraceFILE,"%sInitialize. Empty stack. State 0\n", + yyTracePrompt); + } +#endif } yyminorunion.yy0 = yyminor; #if !defined(YYERRORSYMBOL) && !defined(YYNOERRORRECOVERY) @@ -788,7 +792,7 @@ void Parse( #ifndef NDEBUG if( yyTraceFILE ){ - fprintf(yyTraceFILE,"%sInput %s\n",yyTracePrompt,yyTokenName[yymajor]); + fprintf(yyTraceFILE,"%sInput '%s'\n",yyTracePrompt,yyTokenName[yymajor]); } #endif @@ -902,7 +906,12 @@ void Parse( }while( yymajor!=YYNOCODE && yypParser->yyidx>=0 ); #ifndef NDEBUG if( yyTraceFILE ){ - fprintf(yyTraceFILE,"%sReturn\n",yyTracePrompt); + int i; + fprintf(yyTraceFILE,"%sReturn. Stack=",yyTracePrompt); + for(i=1; i<=yypParser->yyidx; i++) + fprintf(yyTraceFILE,"%c%s", i==1 ? '[' : ' ', + yyTokenName[yypParser->yystack[i].major]); + fprintf(yyTraceFILE,"]\n"); } #endif return;