SQLite

Check-in [91889fa30e]
Login

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:Attempt to reset the error count in the Lemon-generated parser after a parse failure.
Downloads: Tarball | ZIP archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: 91889fa30e84760e0d4b3d429c4abdef5a3f7931
User & Date: drh 2016-07-05 12:47:28.882
Context
2016-07-05
16:11
More fixes to Lemon so that it automatically resets its error counter at the end of a parse. (check-in: 2683b375ad user: drh tags: trunk)
12:47
Attempt to reset the error count in the Lemon-generated parser after a parse failure. (check-in: 91889fa30e user: drh tags: trunk)
2016-07-04
11:47
Add the sqlite3rbu_state() API. Used to determine the current state (creating OAL, ready to move OAL, incremental-checkpoint, finished or error) of an RBU operation. (check-in: 0357875fbb user: dan tags: trunk)
Changes
Side-by-Side Diff Show Whitespace Changes Patch
Changes to tool/lempar.c.
386
387
388
389
390
391
392

393
394
395
396
397
398
399
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400







+







**
** If there is a destructor routine associated with the token which
** is popped from the stack, then call it.
*/
static void yy_pop_parser_stack(yyParser *pParser){
  yyStackEntry *yytos;
  assert( pParser->yytos!=0 );
  assert( pParser->yytos > pParser->yystack );
  yytos = pParser->yytos--;
#ifndef NDEBUG
  if( yyTraceFILE ){
    fprintf(yyTraceFILE,"%sPopping %s\n",
      yyTracePrompt,
      yyTokenName[yytos->major]);
  }
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
796
797
798
799
800
801
802

803
804
805
806
807
808
809







-







  int yyendofinput;     /* True if we are at the end of input */
#endif
#ifdef YYERRORSYMBOL
  int yyerrorhit = 0;   /* True if yymajor has invoked an error */
#endif
  yyParser *yypParser;  /* The parser */

  /* (re)initialize the parser, if necessary */
  yypParser = (yyParser*)yyp;
  assert( yypParser->yytos!=0 );
#if !defined(YYERRORSYMBOL) && !defined(YYNOERRORRECOVERY)
  yyendofinput = (yymajor==0);
#endif
  ParseARG_STORE;

875
876
877
878
879
880
881



882
883
884
885
886
887
888
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891







+
+
+







                        YYERRORSYMBOL)) >= YY_MIN_REDUCE
        ){
          yy_pop_parser_stack(yypParser);
        }
        if( yypParser->yytos < yypParser->yystack || yymajor==0 ){
          yy_destructor(yypParser,(YYCODETYPE)yymajor,&yyminorunion);
          yy_parse_failed(yypParser);
#ifndef YYNOERRORRECOVERY
          yypParser->yyerrcnt = -1;
#endif
          yymajor = YYNOCODE;
        }else if( yymx!=YYERRORSYMBOL ){
          yy_shift(yypParser,yyact,YYERRORSYMBOL,yyminor);
        }
      }
      yypParser->yyerrcnt = 3;
      yyerrorhit = 1;