Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Report error if the grammar has multiple %type lines for the same nonterminal. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | lemon-update-2010 |
Files: | files | file ages | folders |
SHA1: |
721f33e7221c5fc907e9e293ac324284 |
User & Date: | icculus 2010-02-17 20:31:32.000 |
Original Comment: | Repore error if the grammar has multiple %type lines for the same nonterminal. |
Context
2010-03-03
| ||
16:54 | Merged trunk to lemon-update-2010 branch. (check-in: 88b466bae4 user: icculus tags: lemon-update-2010) | |
2010-02-22
| ||
19:37 | Merge in the massive clean-up and ANSI-fication of Lemon carried out by Ryan Gordon. There are no functional changes to SQLite itself - Lemon still generates exactly the same parsing automaton from exactly the same grammar. (check-in: 1e8b842039 user: drh tags: trunk) | |
2010-02-17
| ||
20:31 | Report error if the grammar has multiple %type lines for the same nonterminal. (check-in: 721f33e722 user: icculus tags: lemon-update-2010) | |
20:22 | Fixed % formatting in some printf-style strings. (check-in: f96add898f user: icculus tags: lemon-update-2010) | |
Changes
Changes to tool/lemon.c.
︙ | ︙ | |||
2295 2296 2297 2298 2299 2300 2301 | case WAITING_FOR_DATATYPE_SYMBOL: if( !isalpha(x[0]) ){ ErrorMsg(psp->filename,psp->tokenlineno, "Symbol name missing after %%type keyword"); psp->errorcnt++; psp->state = RESYNC_AFTER_DECL_ERROR; }else{ | | > > > > > > > > > | | | > | 2295 2296 2297 2298 2299 2300 2301 2302 2303 2304 2305 2306 2307 2308 2309 2310 2311 2312 2313 2314 2315 2316 2317 2318 2319 2320 2321 2322 | case WAITING_FOR_DATATYPE_SYMBOL: if( !isalpha(x[0]) ){ ErrorMsg(psp->filename,psp->tokenlineno, "Symbol name missing after %%type keyword"); psp->errorcnt++; psp->state = RESYNC_AFTER_DECL_ERROR; }else{ struct symbol *sp = Symbol_find(x); if((sp) && (sp->datatype)){ ErrorMsg(psp->filename,psp->tokenlineno, "Symbol %%type \"%s\" already defined", x); psp->errorcnt++; psp->state = RESYNC_AFTER_DECL_ERROR; }else{ if (!sp){ sp = Symbol_new(x); } psp->declargslot = &sp->datatype; psp->insertLineMacro = 0; psp->state = WAITING_FOR_DECL_ARG; } } break; case WAITING_FOR_PRECEDENCE_SYMBOL: if( x[0]=='.' ){ psp->state = WAITING_FOR_DECL_OR_RULE; }else if( isupper(x[0]) ){ struct symbol *sp; |
︙ | ︙ |