Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Fix an issue with lemon generating incorrect grammars. This issue does not effect SQLite. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
077a6bee2dd4668a5b13c37aa7d4c052 |
User & Date: | drh 2010-01-06 13:07:31.000 |
Context
2010-01-06
| ||
17:19 | Change the fts3 snippet function to return (hopefully) more relevant snippets in less time. (check-in: 8a208223a7 user: dan tags: trunk) | |
13:12 | Update the OS-X branch to include all trunk changes through version 3.6.22. (check-in: 541e2b488e user: drh tags: apple-osx) | |
13:07 | Fix an issue with lemon generating incorrect grammars. This issue does not effect SQLite. (check-in: 077a6bee2d user: drh tags: trunk) | |
00:00 | Version 3.6.22 (check-in: 28d0d77107 user: drh tags: trunk, release) | |
Changes
Changes to tool/lemon.c.
︙ | ︙ | |||
487 488 489 490 491 492 493 494 495 496 497 498 499 500 | ** into the current action table. Then reset the transaction set back ** to an empty set in preparation for a new round of acttab_action() calls. ** ** Return the offset into the action table of the new transaction. */ int acttab_insert(acttab *p){ int i, j, k, n; assert( p->nLookahead>0 ); /* Make sure we have enough space to hold the expanded action table ** in the worst case. The worst case occurs if the transaction set ** must be appended to the current action table */ n = p->mxLookahead + 1; | > > | | | | 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 | ** into the current action table. Then reset the transaction set back ** to an empty set in preparation for a new round of acttab_action() calls. ** ** Return the offset into the action table of the new transaction. */ int acttab_insert(acttab *p){ int i, j, k, n; int nActtab; /* Number of slots in the p->aAction[] table */ assert( p->nLookahead>0 ); /* Make sure we have enough space to hold the expanded action table ** in the worst case. The worst case occurs if the transaction set ** must be appended to the current action table */ n = p->mxLookahead + 1; nActtab = p->nAction + n; if( nActtab >= p->nActionAlloc ){ int oldAlloc = p->nActionAlloc; p->nActionAlloc = p->nAction + n + p->nActionAlloc + 20; p->aAction = realloc( p->aAction, sizeof(p->aAction[0])*p->nActionAlloc); if( p->aAction==0 ){ fprintf(stderr,"malloc failed\n"); exit(1); } for(i=oldAlloc; i<p->nActionAlloc; i++){ p->aAction[i].lookahead = -1; p->aAction[i].action = -1; } } /* Scan the existing action table looking for an offset where we can ** insert the current transaction set. Fall out of the loop when that ** offset is found. In the worst case, we fall out of the loop when ** i reaches nActtab, which means we append the new transaction set. ** ** i is the index in p->aAction[] where p->mnLookahead is inserted. */ for(i=nActtab-1; i>=0; i--){ /* First look for an existing action table entry that can be reused */ if( p->aAction[i].lookahead==p->mnLookahead ){ if( p->aAction[i].action!=p->mnAction ) continue; for(j=0; j<p->nLookahead; j++){ k = p->aLookahead[j].lookahead - p->mnLookahead + i; if( k<0 || k>=p->nAction ) break; if( p->aLookahead[j].lookahead!=p->aAction[k].lookahead ) break; |
︙ | ︙ | |||
539 540 541 542 543 544 545 | if( n==p->nLookahead ){ break; /* Same as a prior transaction set */ } } } if( i<0 ){ /* If no reusable entry is found, look for an empty slot */ | | | 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 | if( n==p->nLookahead ){ break; /* Same as a prior transaction set */ } } } if( i<0 ){ /* If no reusable entry is found, look for an empty slot */ for(i=0; i<nActtab; i++){ if( p->aAction[i].lookahead<0 ){ for(j=0; j<p->nLookahead; j++){ k = p->aLookahead[j].lookahead - p->mnLookahead + i; if( k<0 ) break; if( p->aAction[k].lookahead>=0 ) break; } if( j<p->nLookahead ) continue; |
︙ | ︙ |