2013-02-17 25 views
14

Tôi mới tham gia ANTLR4 và có vẻ như không có Eclipse-Plug-In cho v4. Vì vậy, nó sẽ tốt đẹp để xây dựng tự động các nguồn Java từ các ngôn ngữ .g4. Tôi có một dự án Maven đơn giản, trống rỗng với src/main/java, src/test/java. Nơi để đặt các tập tin .g4? Làm thế nào tôi có thể tự động xây dựng các ngữ pháp với Maven?Làm thế nào để tự động tạo lexer + parser với ANTLR4 và Maven?

riêng POM-thử nghiệm của tôi thất bại:

<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 nói:

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 

Trả lời

17

tôi tạo ra các Gist sau đây với một pom.xml thiết kế chỉ để hỗ trợ sinh mã tự động từ ANTLR 4 văn phạm trong một bản dựng Eclipse. Nó bao gồm các thông tin vòng đời cần thiết cho m2e để biết rằng việc tạo mã là cần thiết, và thêm một cách rõ ràng thư mục tạo mã bằng cách sử dụng build-helper-maven-plugin vì Eclipse dường như có một số khó khăn khi định vị nó theo cách khác.

Trong cấu hình này, tệp ngữ pháp (*.g4) được đặt cùng với các tệp nguồn Java khác. Plugin Maven sẽ tự động thêm câu lệnh package ... thích hợp vào các tệp được tạo, do đó bạn không nên bao gồm dòng @header{package ...} trong ngữ pháp.

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

+0

Cảm ơn bạn! Khi tôi nhận xét plugin trình xây dựng-helper-maven trong tệp pom.xml, ANTLR xây dựng trình lexer và trình phân tích cú pháp cho ngữ pháp đã đặt. Nhưng với Eclipse-helper-maven-plugin Eclipse cho biết: "Thực thi plugin không được bao gồm trong cấu hình vòng đời: org.codehaus.mojo: build-helper-maven-plugin: 1.7: add-source (thực thi: default, phase: generate-sources) ". Nếu không thêm thủ công target/generatet-sources/antlr4 làm thư mục src, tôi không thể sử dụng lexer/parser được tạo ra. Và một câu hỏi khác: Làm thế nào để đặt đối số? ' org.example' không hoạt động. – Vertex

+0

Eclipse sẽ tự động tải xuống phần mở rộng thích hợp để làm việc với plugin trình trợ giúp xây dựng nếu bạn yêu cầu. Mệnh đề gói luôn tự động được thêm vào bởi mục tiêu antlr4 dựa trên vị trí của tệp .g4 trong cấu trúc nguồn của bạn. Để thay đổi gói của mã được tạo ra, hãy di chuyển ngữ pháp đến gói mong muốn trong cây nguồn. –

+0

Có bạn đã đúng! Tôi đã bỏ qua việc sửa chữa nhanh chóng. – Vertex

Các vấn đề liên quan