2013-02-17 9 views
14

Ich bin neu zu ANTLR4, und es scheint, dass es kein Eclipse-Plug-In für v4 gibt. Es wäre also nett, automatisch die Java-Quellen aus den .g4-Grammatiken zu erstellen. Ich habe ein einfaches, leeres Maven-Projekt mit src/main/java, src/test/java. Wo legen Sie die .g4-Dateien ab? Wie kann ich die Grammatiken mit Maven automatisch erstellen?Wie automatisch lexer + Parser mit ANTLR4 und Maven generieren?

Mein eigener POM-Test nicht bestanden:

<repository> 
    <id>mvn-public</id> 
    <name>MVNRepository</name> 
    <url>http://mvnrepository.com</url> 
</repository> 

... 

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.antlr</groupId> 
      <artifactId>antlr4-maven-plugin</artifactId> 
      <version>4.0.0</version> 
      <executions> 
       <execution> 
        <goals> 
         <goal>antlr</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 
    </plugins> 
</build> 

Eklipse sagt:

Failure to find org.antlr:antlr4-maven-plugin:pom:4.0.0 in http://repo.maven.apache.org/maven2 was cached in the local repository, resolution will not be reattempted until the update interval of 
central has elapsed or updates are forced 

Antwort

17

ich folgenden Gist mit einem pom.xml erstellt automatischer Code-Generierung von ANTLR entworfen ausschließlich zur Unterstützung 4 Grammatiken während ein Eclipse-Build. Es enthält die erforderlichen Lebenszyklusinformationen für m2e, um zu wissen, dass die Codegenerierung erforderlich ist, und fügt den Codegenerierungsordner unter Verwendung der build-helper-maven-plugin explizit hinzu, da Eclipse Probleme hatte, es anderweitig zu finden.

In dieser Konfiguration werden Grammatikdateien (*.g4) neben den anderen Java-Quelldateien platziert. Das Maven-Plugin wird automatisch die korrekte package ...-Anweisung zu den generierten Dateien hinzufügen, so dass Sie keine @header{package ...} Zeile in die Grammatik selbst aufnehmen sollten.

https://gist.github.com/sharwell/4979017

+0

Thank you! Wenn ich das build-helper-maven-Plugin in pom.xml kommentiere, erstellt ANTLR den Lexer und Parser für die platzierte Grammatik. Aber mit build-helper-maven-plugin sagt Eclipse: "Plugin-Ausführung nicht durch Lebenszyklus-Konfiguration abgedeckt: org.codehaus.mojo: build-helper-maven-plugin: 1.7: add-source (Ausführung: default, phase: generate-sources) ". Ohne manuell/target/generations-sources/antlr4 als src-Ordner hinzuzufügen, kann ich den generierten Lexer/Parser nicht verwenden. Und eine andere Frage: Wie man Argumente legt? ' org.beispiel' funktioniert nicht. – Vertex

+0

Eclipse wird automatisch die richtige Erweiterung herunterladen, um mit dem Build-Helfer-Plugin zu arbeiten, wenn Sie es ihm mitteilen. Die Paketklausel wird vom Ziel "antlr4" automatisch basierend auf dem Speicherort der Datei ".g4" in Ihrer Quellstruktur automatisch hinzugefügt. Um das Paket des generierten Codes zu ändern, verschieben Sie die Grammatik selbst in das gewünschte Paket in der Quellstruktur. –

+0

Ja, du hast Recht! Ich habe die schnelle Lösung ignoriert. – Vertex

Verwandte Themen