2013-02-17 15 views
14

ANTLR4'te yeniyim ve v4 için Eclipse-Plug-In yok gibi görünüyor. Bu yüzden, Java kaynaklarını otomatik olarak .g4 gramerlerinden oluşturmak güzel olurdu. Src/main/java, src/test/java ile basit, boş bir Maven projem var. .g4 dosyaları nereye yerleştirilir? Maven ile dilbilgileri nasıl otomatik olarak oluşturabilirim?ANTLR4 ve Maven ile otomatik olarak lexer + ayrıştırıcısı nasıl oluşturulur?

Kendi POM-testi başarısız oldu:

<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 diyor ki:

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 

cevap

17

Ben 4 dilbilgisi sırasında antlr otomatik kod üretimi desteklemek için sadece tasarlanmış pom.xml ile aşağıdaki Özü yarattı bir Eclipse yapısı. Kod üretiminin gerekli olduğunu bilmesi için m2e için gerekli yaşam döngüsü bilgisini içerir ve Eclipse'nin başka bir şekilde konumlandırılmasında bir sorun olduğu için build-helper-maven-plugin kodunu kullanarak kod oluşturma klasörünü açıkça ekler. Bu yapılandırmada

, dilbilgisi dosyaları ( *.g4) diğer Java kaynak dosyalarının yanı sıra yerleştirilir. Maven eklentisi, oluşturulan dosyalara uygun package ... ifadesini otomatik olarak ekler, böylece dilbilgisinin kendisine bir @header{package ...} satırı eklememelisiniz.

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

+0

için bu Antlr4 eklentisi teşekkür ederiz! Yap-helper-maven-plugin'i pom.xml dosyasında yorumladığımda, ANTLR yerleştirilmiş dilbilgisi için lexer ve ayrıştırıcıyı oluşturur. Ama yap-helper-maven-eklentisi ile Eclipse diyor ki: "Eklenti yürütme yaşam döngüsü yapılandırması tarafından kapsanmıyor: org.codehaus.mojo: build-helper-maven-plugin: 1.7: add-source (yürütme: varsayılan, faz: üretmek-kaynakları)". Hedef/generatet-kaynakları/antlr4'ü src-klasörü olarak manuel olarak eklemeden, oluşturulan lexer/parser'i kullanamıyorum. Ve başka bir soru: nasıl argümanlar koymak? ' org.example' çalışmaz. – Vertex

+0

Eclipse, eğer isterseniz, yardımcı eklenti ile çalışmak için uygun uzantıyı otomatik olarak indirecektir. Paket tümcesi, kaynak yapınızdaki .g4 dosyasının konumuna göre antlr4 hedefi tarafından her zaman otomatik olarak eklenir. Oluşturulan kodun paketini değiştirmek için, dilbilginin kendisini kaynak ağacındaki istenen pakete taşıyın. –

+0

Evet haklısınız! Hızlı çözümü göz ardı ettim. – Vertex

İlgili konular