2012-05-31 24 views
6

Così ho fatto una grammatica in Eclipse con ANTLR v3.4 e ne ho realizzato uno che funziona e voglio assicurarmi che quando lo modifico tutto funzioni ancora. Posso entrare nell'interprete ogni volta ma sembra un'enorme perdita di tempo.Test ANTLR Grammar

Domande: ho letto su gunit ma il link che dà a scaricare gUnit: (http://antlr.org/hudson/job/gUnit/org.antlr $ gunit/lastSuccessfulBuild /) non funziona. Come posso ottenere gUnit. Qual è il modo migliore per testare le grammatiche? In realtà è gUnit o dovrei fare solo test java come i test di jUnit?

+1

gUnit è stato incluso negli strumenti antlr per alcune versioni ora, no? –

+0

Come accedere a gUnit dopo aver scaricato ANTLR-complete-3.4.jar? – jQwierdy

risposta

5

Recentemente ho completato due incarichi ANTLR3 (sto lavorando al mio Master in Informatica) utilizzando Eclipse. Non ho trovato nessun documento che avesse un processo per l'installazione, la configurazione, la scrittura e il debug di una grammatica in Eclipse. Quindi, dopo aver lavorato su vari problemi, ho trovato che la cosa più semplice da fare era rimanere in Eclipse per i test.

Per utilizzare il processo da me utilizzato (descritto di seguito), è necessario prima installare ANTLR IDE v2.1.2. Aggiungilo dall'interno di Eclipse Indigo: http://antlrv3ide.sourceforge.net/updates. Questo sito ha anche alcuni utili documenti sull'uso dell'IDE ANTLR. Una volta installato, l'IDE deve essere configurato. Le esercitazioni video sono un po 'obsolete ma utili. Vedi una guida dettagliata su configuring ANTLR IDE in Eclipse. L'elemento di configurazione principale è la cartella di output java. Fai questo in Eclipse andando su Windows, Preferenze, ANTLR, Generatore di codice, controlla la cartella relativa al progetto e nella casella Nome della cartella di output digita un nome di cartella (il mio è chiamato "antlr-java", altri usano "generato").

Processo/Debug prova per ANTLR in Eclipse Indigo con ANTLR IDE

  1. Dopo un nuovo progetto viene creato, fare clic su di esso, selezionare Configura, Converti in ANTLR Progetto ...
  2. Crea la grammatica in un file .g e salvala. Nota: il nome del file deve corrispondere al nome della grammatica.
  3. Se vi sono errori significativi, eseguire il debug della grammatica. Eclipse mostra gli errori ANTLR e quali linee sono interessate.Inizialmente, questi errori sembrano difficili da capire ma possono essere elaborati utilizzando varie risorse: - Il riferimento ANTLR definitivo di Terence Parr il tipo che ha scritto ANTLR - il Manuale di riferimento ANTLR - l'errore di google; molte volte finirai qui su StackOverflow; in particolare, Bart Kiers è sia competente e disponibile (Bart: thx per l'aiuto non sapevi che mi ha dato)
  4. Al primo salvo dopo gli errori ANTLR gravi sono risolti, la cartella di output Java configurato in Eclipse verrà creato e verrà creato anche un file java in quella cartella.
  5. Fare clic con il pulsante destro del mouse sulla cartella di output Java, selezionare Percorso di creazione, Usa come cartella di origine. Questo indica a Eclipse dove cercare la sorgente java del progetto.
  6. È probabile che ci siano errori nel nuovo file java. Selezionalo, quindi cerca attraverso per errori java. Torna alla grammatica o ai file java, correggi gli errori e salva nuovamente la grammatica finché i file grammaticali e java non sono privi di errori, quindi eseguili.
  7. Da questo punto in avanti, è il solito ciclo di modifica-run-debug.
  8. L'unico altro cambiamento di Eclipse necessario era la creazione di alcune configurazioni di esecuzione per il test dei parametri della riga di comando .
+0

Risposta modificata con collegamento incorporato. – cb4

1

È possibile scaricare gUnit there ma credo che non v'è alcuna versione più recente ...

Prova Jarvana ... Ultima versione 3.4 c'è: http://repo1.maven.org/maven2/org/antlr/gunit/3.4/gunit-3.4.jar

@ Dave Newton è giusto. A partire da ANTLR v3.1, gUnit è incluso nel barattolo principale di ANTLR Tool come indicato in there.


Non sapevo per gUnit fino ad ora. Sembra fantastico per i test di grammatica, ma penso che i test di JUnit svolgeranno il loro lavoro ...

0

Questa è la prima volta che ho sentito parlare di gUinit e di leggerlo. (Non uso molto ANTLR.) Sembra interessante, ma per metà inutile.

Il mio approccio alla convalida delle grammatiche consiste nel convalidare l'intero parser con test di unità "normali". Il fatto è che dovresti avere comunque dei test unitari e che i test che controllano la regressione grammaticale li devi semplicemente aggiungere lì. La cosa è nella mia esperienza che la maggior parte degli errori si presentano nell'analisi e nella riduzione semantica e non nella grammatica.

+0

Potresti dirmi di più su questo o su un luogo in cui sei andato a trovare le tue informazioni? – jQwierdy

+0

Le informazioni su gUnit erano principalmente un rapido google sul termine. L'altro è l'esperienza professionale di 10 anni nella costruzione di parsimoni e compilatori di linguaggio. Il fatto è che la grammatica vivrà in un'applicazione; a meno che tu non faccia solo esempi accademici. Probabilmente l'applicazione ha già dei test unitari, perché non usarla. Soprattutto perché l'uso è che la grammatica è valida ma il codice rimanente non ha senso. – rioki

+0

Il grande motivo è perché è un grande incovenience per determinare se è in esecuzione (mentre si costruisce una grammatica da zero) e si deve entrare nella grammatica per assicurarsi che tutto ciò che hai fatto funzioni. Alcuni codici di test automatici ti diranno automaticamente che cosa ha interrotto ogni compilazione. Non abbiamo un'applicazione, poiché stiamo progettando tutto da soli, quindi dobbiamo assicurarci che funzioni, non esiste un progetto generale che ci dirà se funziona o meno. Non so se questo spiega molto, fammelo sapere :) – jQwierdy