2010-01-11 21 views
11

Tôi đang làm việc trên một ngôn ngữ mới và trong khi viết ngữ pháp tôi muốn có thể kiểm tra ngữ pháp để hoàn thành, xung đột và tương tự. Tôi không thực sự lo ngại về các máy phát điện underlaying phân tích cú pháp (nhưng một cho NET sẽ là preferrable)Bất kỳ BNF IDE nào có các tính năng thử nghiệm

Vì vậy, danh sách tính năng trong ngắn hạn sẽ là:

  • soạn thảo văn bản xây dựng chức năng
  • cú pháp/sematics lỗi báo cáo
  • mâu thuẫn báo cáo
  • chức năng kiểm tra ngữ pháp (tức là cửa sổ cho đang ghi chép lại ở các dự ngữ pháp để xác minh tính đúng đắn của ngữ pháp định nghĩa)

Dự án CodePlex được gọi là Irony có điều gì đó mô phỏng với những gì tôi yêu cầu nhưng không hỗ trợ viết ngữ pháp như BNF bắt buộc.

+0

Liên quan: http://stackoverflow.com/questions/1800199/is-there-a-bnf-mode-for-emacs – dmckee

Trả lời

7

Tôi muốn giới thiệu ANTLR làm trình tạo trình phân tích cú pháp. Nó rất đầy đủ tính năng và hỗ trợ C# cũng như một loạt các ngôn ngữ đích khác.

Đối với IDE, có một plugin cho Eclipse được gọi là ANTLR IDE và một IDE độc lập có tên là ANTLRWorks, cả hai đều hoạt động tốt.

Lưu ý, tuy nhiên, ANTLR sử dụng thuật toán LL (*) thay vì thuật toán LR (k). Tuy nhiên, nó rất đẹp và ANTLRWorks có thể thực hiện hầu hết các yếu tố cần thiết bên trái.

4

Khi "làm việc trên ngôn ngữ mới" và cố gắng tham khảo BNF đúng, có thể bạn không muốn thiên vị ngữ pháp tham chiếu của mình đối với bất kỳ trình tạo trình phân tích cú pháp cụ thể nào. Một trong những khó khăn khi viết một ngữ pháp kiểm tra cho Bison (LALR (1)) hoặc ANTLR (LL *) là bạn làm chính xác điều đó. Bạn cũng không muốn bị treo lên trong "làm cách nào để mã các quy tắc BNF theo cách như vậy làm cho nó thực sự phân tích cú pháp" có lẽ vì bạn quan tâm đến việc làm về ngữ pháp, không hoạt động trên trình tạo trình phân tích cú pháp.

Vì vậy, tôi khuyên bạn nên sử dụng trình tạo trình phân tích cú pháp hoàn toàn miễn phí. Điều này sẽ cho phép bạn viết ngữ pháp ở dạng tự nhiên nhất với nỗ lực ít nhất. Điều này có nghĩa là từ bỏ "trình soạn thảo văn bản", "cửa sổ kiểm tra trình soạn thảo", ... nhưng trong kinh nghiệm của tôi (kiểm tra tiểu sử tràn ngăn xếp của tôi) bằng cách sử dụng trình tạo phân tích cú pháp miễn phí. Chỉnh sửa-lưu-phân tích cú pháp chỉ không mất nhiều công sức.

Tôi hiểu Bison có tùy chọn GLR sẽ cung cấp thế hệ phân tích cú pháp không có ngữ cảnh và là nguồn mở, vì vậy nó có thể thực hiện chỉ để kiểm tra ngữ pháp.

DMS Software Reengineering Toolkit của chúng tôi là thương mại và cũng cung cấp một trình phân tích cú pháp GLR, được sử dụng để thực hiện một số 30 langau đầy đủ bao gồm C, C++ và COBOL trong một số phương ngữ cũng như các ngôn ngữ hiện đại hơn như Python, Ruby, PHP, ....

Sự khác biệt giữa DMS và Bison là DMS được thiết kế để hỗ trợ tất cả các khía cạnh của việc xây dựng bộ phân tích/dịch ngôn ngữ đầy đủ (Unicode lexing, phân tích cú pháp GLR với báo cáo lỗi và phục hồi, xây dựng cây tự động , xây dựng bảng biểu tượng, kiểm soát và phân tích lưu lượng dữ liệu, biến đổi, in đẹp, ...). Nếu bạn muốn đánh giá nghiêm túc "langauge mới" của bạn, cuối cùng bạn sẽ cần phải làm tất cả những thứ này, và Bison chỉ là một bước nhỏ dọc theo con đường này. DMS sẽ mang bạn theo mọi cách.

+0

Một câu trả lời rất thông tin cảm ơn bạn. Tôi kết thúc mục tiêu cho một bộ tạo phân tích cú pháp cụ thể (fsyacc) một phần của nhiệm vụ mà tôi đã đặt trước khi tự học F # và vì tôi phải viết trình biên dịch, tôi nghĩ đó sẽ là dự án hoàn hảo để học một hàm ngôn ngữ (mặc dù f # nghiêm chỉnh nói là đa mô hình không chỉ là chức năng), Vì vậy, tôi thực sự mong muốn làm những thứ DMS nếu không sẽ cung cấp. fsyacc ius LALR (1) vì vậy ANTLRworks chỉ giúp ích rất ít vào cuối nhưng tự động hoàn thành và vẫn làm cho nó nhanh hơn một trình soạn thảo văn bản đơn giản –

0

Hãy xem BNFC, có thể tạo mã làm việc và tệp makefile, từ BNF thử nghiệm, cho một số ngôn ngữ đích như: Haskell, OCaml, C, C++ và Java. Bạn nhận được một máy in đẹp, trình kiểm tra cú pháp trừu tượng/máy in, mã khung sườn cho trình biên dịch hoặc thông dịch viên của riêng bạn và tài liệu ngôn ngữ bản thảo.

0

Có thể bạn sẽ tìm thấy công cụ này hữu ích: Gold Parser Builder

Unfortunally nó chỉ là cửa sổ.

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