2009-06-23 21 views

Trả lời

3

Tôi không biết nhiều về cách Irony hoạt động, nhưng Chris Double có thư viện cho phép bạn xác định ngữ pháp trong JavaScript tại đây: http://www.bluishcoder.co.nz/2007/10/javascript-parser-combinators.html. Mã này là available on GitHub.

Đó là thư viện "trình kết hợp phân tích cú pháp" có nghĩa là bạn kết hợp các trình phân tích cú pháp cho từng sản xuất trong ngữ pháp của bạn thành một trình phân tích cú pháp lớn hơn phân tích toàn bộ nội dung. Mỗi "ngữ pháp phụ" chỉ là một hàm mà bạn tạo ra bằng cách gọi các hàm thư viện.

+0

Cảm ơn, đó có vẻ là điều tôi đang tìm kiếm, tôi sẽ xem xét kỹ hơn. –

0

Đây không phải chính xác những gì bạn cần nhưng this article thực hiện việc tạo một trình phân tích cú pháp gốc đệ quy trong javascript cho chính javascript.

+1

Đó thực sự là ưu tiên hàng đầu của nhà điều hành. Tôi nghĩ rằng nó cũng được tìm thấy trong một chương của cuốn sách, "Beautiful Code". – Nosredna

+1

đệ quy gốc là trên xuống - "gốc" ngụ ý trên xuống và "đệ quy" có nghĩa là sản xuất quy tắc như chức năng tự gọi mình. ưu tiên toán tử đề cập đến cách nhìn về phía trước được giải quyết. – eulerfx

3

Tôi đã tạo một phân tích cú pháp JavaScript DSL được gọi là Chevrotain.

Nguồn:https://github.com/SAP/chevrotain

online Playground:http://sap.github.io/chevrotain/playground/

Đó là không một combinator Parser như Irony, nhưng nó rất giống vì nó cho phép bạn "xác định một phân tích cú pháp ngữ pháp sử dụng cú pháp JavaScript " mà không có bất kỳ giai đoạn tạo mã nào.

Sử dụng nó cũng tương tự như "xây dựng tay" một phân tích cú pháp phong nha đệ quy, chỉ mà không hầu hết các cơn đau đầu như:

  • tạo chức năng lookahead (quyết định thay thế cho mất)
  • Automatic Lỗi phục hồi .
  • Phát hiện đệ quy trái
  • Phát hiện mơ hồ.
  • Thông tin vị trí.
  • ...

khi Chevrotain xử lý tự động.

0

PEG.js có thể là một giải pháp.

PEG.js là trình tạo trình phân tích cú pháp đơn giản cho JavaScript tạo ra các trình phân tích cú pháp nhanh với báo cáo lỗi tuyệt vời. Bạn có thể sử dụng nó để xử lý dữ liệu phức tạp hoặc ngôn ngữ máy tính và xây dựng máy biến thế, thông dịch viên, trình biên dịch và các công cụ khác một cách dễ dàng.

Tính năng

Đơn giản và biểu ngữ pháp cú pháp Tích hợp cả phân tích từ vựng và cú pháp parsers có lỗi xuất sắc báo cáo ra khỏi hộp Dựa trên phân tích biểu ngữ pháp hình thức - mạnh mẽ hơn LL truyền thống (k) và Bộ phân tích LR (k) Có thể sử dụng từ trình duyệt của bạn, từ dòng lệnh hoặc qua API JavaScript

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