2013-02-17 13 views
14

Jestem nowy w ANTLR4 i wygląda na to, że nie ma wtyczki Eclipse dla v4. Dobrze byłoby więc automatycznie zbudować źródła Java z gramatyk .g4. Mam prosty, pusty projekt Maven z src/main/java, src/test/java. Gdzie umieścić pliki .g4? Jak mogę automatycznie budować gramatyki za pomocą Mavena?Jak automatycznie generować lexer + parser z ANTLR4 i Maven?

Moja własna POM-test zakończył się niepowodzeniem:

<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> 

Eclipse mówi:

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 

Odpowiedz

17

stworzyłem następujące GIST z pom.xml zaprojektowanej wyłącznie wspierania automatyczne generowanie kodu z antlr 4 gramatyki podczas kompilacja Eclipse. Zawiera niezbędne informacje o cyklu życia dla m2e, aby wiedzieć, że generowanie kodu jest konieczne i jawnie dodaje folder generowania kodu za pomocą build-helper-maven-plugin, ponieważ Eclipse wydawał się mieć problem z lokalizowaniem go w inny sposób.

W tej konfiguracji pliki gramatyki (*.g4) są umieszczane obok innych plików źródłowych Java. Wtyczka Maven automatycznie doda odpowiednią instrukcję do wygenerowanych plików, więc nie powinieneś zawierać linii @header{package ...} w samej gramatyce.

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

+0

Dziękujemy! Kiedy komentuję wtyczkę build-helper-maven-out w pom.xml, ANTLR buduje lexer i parser dla umieszczonej gramatyki. Ale z wtyczką build-helper-maven Eclipse mówi: "Implementacja wtyczki nie jest objęta konfiguracją cyklu życia: org.codehaus.mojo: build-helper-maven-plugin: 1.7: add-source (wykonanie: default, phase: generate-sources) ". Bez ręcznego dodawania obiektu docelowego/generatet-sources/antlr4 jako folderu src nie można użyć wygenerowanego leksera/analizatora składni. I kolejne pytanie: jak postawić argumenty? ' org.example' nie działa. – Vertex

+0

Eclipse automatycznie pobierze odpowiednie rozszerzenie do pracy z wtyczką do budowania programu, jeśli jej to powiesz. Klauzula pakietu jest zawsze automatycznie dodawana do celu antlr4 na podstawie lokalizacji pliku .g4 w strukturze źródłowej. Aby zmienić pakiet wygenerowanego kodu, przenieś samą gramatykę do żądanego pakietu w drzewie źródłowym. –

+0

Tak, masz rację! Zignorowałem szybką naprawę. – Vertex

Powiązane problemy