2009-10-31 26 views
38

se chiamo:Come specificare un pacchetto target per ANTLR?

java org.antlr.Tool -o outdir sources/com/example/Java5.g 

... con ANTLR-3.1.3 il codice parser e lexer verrà generato nella directory outdir/sources/com/example. Ma le classi generate non hanno alcuna dichiarazione package. Ho bisogno di loro per la vita nel pacchetto com.example.

C'è un modo per specificare il pacchetto di destinazione?

+0

Sono sicuro che ci sia. Lo guarderò al lavoro il lunedì;) – Jorn

+0

Su http://www.jguru.com/faq/view.jsp?EID=16185 spiegano come incorporare il pacchetto nella grammatica. Ma esiste un modo per specificarlo come parametro della riga di comando? – tangens

risposta

56

ANTLR fornisce uno strumento di intestazione che consente di includere il pacchetto e le importazioni. Si include questo nel vostro * file di grammatica .g:

@header { 
    package org.xmlcml.cml.converters.antlr; 
    import java.util.HashMap; 
} 

e potrebbe essere necessario nel Lexer così:

@lexer::header {package org.xmlcml.cml.converters.antlr;} 

e nel caso in cui è necessario aggiungere alcuni membri e il codice:

+2

Grazie per aver gettato un po 'sui membri e sul codice, anche se non l'ha chiesto. +1 –

22

Una vecchia domanda con una risposta perfettamente buona, ma dal momento che il commento sulla domanda ha chiesto un'opzione a riga di comando (ed era quello che stavo effettivamente cercando quando sono arrivato qui), ho pensato che avrei appena suonato e dire il fol muggito ...

Puoi specificare il pacchetto sulla riga di comando se si utilizza ANTLR 4. I checked e sembra non esserci nella versione 3 quindi la risposta other è la strada da percorrere per ANTLR 3.

Ecco un esempio:

java -cp antlr-4.4-complete.jar org.antlr.v4.Tool -package my.package MyGram.g4 

vedere l'opzione -package a ANTLR Tool Command Line Options per ulteriori informazioni.

+1

La documentazione "Opzioni della riga di comando dello strumento ANTLR" richiede l'accesso alle credenziali. Ecco una documentazione aperta di antlr4: https://github.com/antlr/antlr4/blob/master/doc/index.md – EFreak

+0

Opzioni della riga di comando dello strumento ANTLR: https://github.com/antlr/antlr4/blob/master /doc/tool-options.md – EFreak

+0

Grazie @EFreak - Ho modificato il link nella domanda al tuo suggerimento – kmp

Problemi correlati