2013-10-13 10 views
5

Sembra che antlr-3.5.1-complete.jar e antlr-3.5.1-complete-no-st3.jar generino il codice di destinazione C runtime che ha un sacco dell'identificatore "_empty" nel DFA che è non definito da nessuna parte.antlr 3.5.1 genera il codice per il runtime C con indentificatore non dichiarato: _empty. qualche correzione disponibile?

antlr-3.4 genera il codice utilizzando dfa31_T_empty che dovrebbe essere l'id corretto.

Probabilmente potrei risolvere questo definendo _empty come NULL ma questo è un hack.

C'è qualche antlr-3.5.2 o così disponibile che corregge questo errore?

Cheers, Adrian Pop/

+1

Questo appartiene al tracker dell'edizione del progetto all'indirizzo https://github.com/antlr/antlr3/issues –

risposta

4

ho incontrato questo errore troppo. La soluzione più semplice e più pulita sembra infatti essere quella di aggiungere questo per la grammatica:

@header 
{ 
    #define _empty NULL 
} 

L'altra soluzione è quella di aggiungere questo definire al compilatore lista macro (/D _empty=null sembra funzionare sia in GCC e MSVC).