2010-03-13 14 views
8

AGGIORNAMENTO: Questa domanda non è aggiornata, ma è stata lasciata a scopo informativo.LALR (1) o GLR su Windows - Alternative a Bison ++/Flex ++ che sono attuali?

domanda iniziale

Sono stato utilizzando la stessa versione di bisonti ++ (1,21-8) e flettere ++ (2.3.8-7) dal 2002.

non sto cercando un'alternativa a LALR (1) o GLR in questo momento, solo alla ricerca delle opzioni più attuali. Qualcuno è a conoscenza di eventuali porte successive rispetto all'originale che non dipendono da Cygwin?

Quali sono gli altri utenti che utilizzano in ambiente Windows per lo sviluppo del compilatore C++ (oltre a ANTLR o Boost.spirit)? Le opzioni commerciali sono ok, se hai esperienza diretta. Ho bisogno di compilare anche su Linux.

AGGIORNAMENTO: Questa vecchia domanda è stata posta quando non ero a conoscenza delle politiche circa le raccomandazioni di utensili (non so se la politica esisteva nel 2010, ma a prescindere ...

ho dato aggiornato per Bison 3.0, che ha capacità GLR

Alla fine ho deciso che qualsiasi riscrittura del mio parser sarebbe una discesa ricorsiva, per migliorare la segnalazione degli errori e consentire un uso più semplice degli strumenti oltre al compilatore, quindi per ora completerò la versione di riferimento in Bison, in questo momento non riesco a convertirmi in un altro strumento PG.

+1

Perché non ANLTR? IMO funziona bene su Windows. – kenny

+0

Principalmente perché non volevo trasferire la grammatica da Yacc/Bison a ANTLR. Niente contro ANTLR, ci ho giocato, ma non l'ho mai "adottato". Lavoro sul mio compilatore nel mio tempo libero, come hobby, e qualsiasi porting per un dialetto diverso potrebbe legare diversi fine settimana. – codenheim

+0

Quindi stai chiedendo uno strumento che faccia esattamente la stessa cosa di flex + bison, ma rifiuti di accettare qualsiasi modifica della sintassi da flex/bison? Perché non limitarti a ciò che stai usando, allora? –

risposta

2

Puoi provare Elsa (ora fa parte del progetto Oink). Ma è quasi morto adesso. L'unica caratteristica interessante è che c'è un parser C e C++ completo e robusto su cui è scritto.

LLVM contiene un quadro di analisi ragionevolmente moderno. E c'è anche un parser C++ (vedi clang project).

Sono disponibili alcune implementazioni Packrat per C++, una specie di cosa più alla moda nell'analisi.

+0

Nessuna delle risposte era specifica per la mia domanda, ma mi è comunque stata d'aiuto. – codenheim

1

Mi piace molto l'ANTLR. Boost Spirit è un po '"là fuori" per le applicazioni di produzione serie.

+3

@mrjoltcola: ANTLR ha un target C ed è completamente utilizzabile in C++. Non esiste un target C++ separato perché sarebbe ridondante - la maggior parte dei componenti C sono utilizzati solo da ANTLR stesso.Puoi usare C++ nelle azioni semantiche quanto vuoi. –

+0

Ok, +1 al follow-up poiché è utile. – codenheim