SQLite

Check-in [3fe964873d]
Login

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

Overview
Comment:In the lemon-generated parser, do not report the End-of-input character and the wildcard character as missed coverage.
Downloads: Tarball | ZIP archive
Timelines: family | ancestors | descendants | both | lemon-improvements
Files: files | file ages | folders
SHA3-256: 3fe964873da16c0e0b1c4f1945f965d4137df7a307acd6a3eb6585ffbaa2afd1
User & Date: drh 2017-12-27 16:13:22.261
Context
2017-12-27
17:14
Change the coverage measurement logic in the lemon-generated parser so that it only checks for coverage of state/lookahead pairs that are valid syntax. It turns out that some states are unreachable if the lookahead is not valid syntax, because the states are only reachable through a shift following a reduce, and the reduce does not happen if the lookahead is a syntax error. (check-in: 9dce465087 user: drh tags: lemon-improvements)
16:13
In the lemon-generated parser, do not report the End-of-input character and the wildcard character as missed coverage. (check-in: 3fe964873d user: drh tags: lemon-improvements)
15:21
In LEMON, fix an off-by-one error that can make the lookahead table one byte too smal. (check-in: 93792bc58a user: drh tags: lemon-improvements)
Changes
Side-by-Side Diff Ignore Whitespace Patch
Changes to tool/lempar.c.
471
472
473
474
475
476
477
478


479
480
481
482
483
484
485
471
472
473
474
475
476
477

478
479
480
481
482
483
484
485
486







-
+
+







** missed state/lookahead combinations.
*/
#if defined(YYCOVERAGE)
int ParseCoverage(FILE *out){
  int i, j;
  int nMissed = 0;
  for(i=0; i<YYNSTATE; i++){
    for(j=0; j<YYNTOKEN; j++){
    for(j=1; j<YYNTOKEN; j++){
      if( j==YYWILDCARD ) continue;
      if( !yycoverage[i][j] ) nMissed++;
      if( out ){
        fprintf(out,"State %d lookahead %s %s\n",
           i, yyTokenName[j], yycoverage[i][j] ? "ok" : "missed");
      }
    }
  }