2010-03-29 25 views
9

Tôi đã sử dụng ANTLR để tạo một phân tích cú pháp + ngữ pháp cây cho một ngôn ngữ đánh dấu bằng mục tiêu Java hoạt động tốt. Bây giờ tôi đang cố gắng để có được mục tiêu trong JavaScript để sử dụng nó trong trình duyệt web của tôi.Mục tiêu JavaScript ANTLR

Tuy nhiên, tôi không thể tìm được bất kỳ tài liệu hay nào về cách thực hiện việc này. Tôi đang sử dụng nhật thực với IDE ANTLR, và khi tôi chỉ định ngôn ngữ là JavaScript, tôi nhận được các lỗi sau.

Nhiều dấu tại dòng này

  • (10): lỗi nội bộ: nhóm JavaScript không đáp ứng giao diện ANTLRCore: đối số không phù hợp trên những mẫu [treeParser (ngữ pháp, tên, phạm vi, thẻ, tokenNames, globalAction , quy tắc, numRules, bitsets, labelType, ASTLabelType, lớp cha, các thành viên, filterMode)]

  • (10): lỗi nội bộ: java.util.NoSuchElementException: không có thuộc tính như: filterMode trong mẫu bối cảnh [treeParser]

Nếu bất cứ ai có thể giúp tôi với điều này hoặc chỉ cho tôi một số tài liệu mà tôi có thể đọc về mục tiêu JavaScript với ANTLR, nó sẽ là tuyệt vời.

Cảm ơn

+1

Tôi thực sự hiện có thể tạo trình phân tích cú pháp trong JavaScript và nó nhận ra mọi thứ tốt. Nhưng khi tôi cố gắng tạo ra khung tập đi cây trong mục tiêu JavaScript, nó không thể. Và tôi nghĩ lý do chính cho việc này là lỗi 2 được liệt kê ở trên. – Gunner4Life

+0

Tôi không chắc phiên bản ANTLR nào bạn đang cố gắng sử dụng, nhưng tôi đã thấy các lỗi tương tự với các bản dựng chính thức mà tôi đã cố gắng sử dụng. Tôi chỉ nhận được tar ANTLR từ máy chủ perforce và xây dựng nó với maven, và các công cụ javascript dường như làm việc cho tôi - ít nhất là với ngữ pháp được thừa nhận của tôi. –

+0

Tôi đã tìm ra lỗi là gì. Mục tiêu JavaScript đã bị phá vỡ trong các bản phát hành mới nhất của ANTLR, gây ra vấn đề này. Giải pháp là xây dựng mã nguồn hoặc sử dụng phiên bản cũ hơn. – Gunner4Life

Trả lời

0

Dường như mục tiêu JavaScript lại bị hỏng trong bản phân phối 3.4. 3,3 là làm việc tốt cho tôi mặc dù.

0

Tôi đã cố gắng để làm việc này, và chỉ mới quản lý để tạo .js file thành công sau khi đọc bài viết này:

http://www.antlr3.org/pipermail/antlr-interest/2011-August/042417.html

Từ bài:

Dưới đây là cách để bắt đầu với ANTLR và JavaScript back-end:

  1. Tải xuống ANTLRWorks 1.2.2: < http://antlr.org/download/antlrworks-1.2.2.jar>. Mục tiêu JavaScript chỉ hoạt động khi IDE tạo mã lexer và phân tích cú pháp (xem < http://antlr.1301665.n2.nabble.com/maven-plugin-and-javascript-target-td3647109.html>). Nếu bạn cố gắng chạy ANTLR v3.1 từ dòng lệnh, bạn sẽ thấy lỗi thông báo "lỗi (10): lỗi nội bộ: JavaScript nhóm không đáp ứng giao diện ANTLRCore".
  2. Tải về sự phân bố thời gian chạy JS: http://antlr.org/download/antlr-javascript-runtime-3.1.zip

From then on you can use ANTLRWorks 1.2.2 to generate the lexer and parser code by selecting "Generate Code" from the "Generate" menu. ANTLRWorks will place the generated files into an output directory in the folder in which the grammar file resides.

Lưu ý rằng nếu một lỗi xảy ra trong quá trình tạo, sau đó vì một lý do "Tạo Mã" hành động không còn hoạt động. Chỉ cần đóng ngữ pháp và mở lại từ menu "Mở gần đây".

3

Có một mục tiêu JS Lang mới cho ANTLR4 đã được đưa lên GitHub gần 3 months ago:

antlr/antlr4-javascript

Nó không được tích hợp vào một bản phát hành chính thức nào, nhưng bạn có thể có lẽ chỉ ném nó vào trong ANTLR4 codebase mới nhất và tự biên dịch lại ANTLR.

+0

Dự án antlr4-javascript giờ đây đã có thử nghiệm dựa trên trình duyệt và được tô điểm nhiều hơn. Trong nguồn của JavaScriptTarget, nó xuất hiện mục tiêu phát hành dự định là ANTLR 4.5. – jhyry

+4

Liên kết không hoạt động –

+0

Đây là liên kết tốt hơn với thông tin cập nhật: https://github.com/antlr/antlr4/blob/master/doc/javascript-target.md –