2012-01-17 32 views
6

Có một thuật toán hoặc công cụ để chuyển ngữ pháp thông thường thành cụm từ thông dụng không?Làm cách nào để chuyển ngữ pháp thông thường thành cụm từ thông dụng?

+0

Bạn có thể xem http://www.regexmagic.com/ nếu dễ dàng tạo biểu thức là mục đích của bạn. – Aphelion

+2

Mục tiêu của tôi là chuyển đổi ngữ pháp thông thường thành DFA. Cuối cùng, tôi đã tìm thấy một công cụ tuyệt vời: http://www.jflap.org/jflaptmp/. – dalibocai

+0

JFLAP trông rất đẹp. Cảm ơn các liên kết. –

Trả lời

1

trả lời từ dalibocai:

Mục tiêu của tôi là để chuyển đổi ngữ pháp thường xuyên để DFA. Cuối cùng, tôi đã tìm thấy một công cụ tuyệt vời: JFLAP.

1

Thuật toán khá đơn giản nếu bạn có thể tính toán một automaton từ cụm từ thông dụng của bạn. Một khi bạn có automaton của bạn. Ví dụ: (aa*b|c), một ô tô sẽ là (mũi tên ở bên phải):

  a 
     /\ 
     a \/b 
-> 0 ---> 1 ---> 2 -> 
    \___________/ 
      c 

Sau đó chỉ cần "liệt kê" chuyển đổi của bạn làm quy tắc. Dưới đây, xem xét rằng 0, 1 và 2 là ký hiệu nonterminal, và tất nhiên a, b và c là các thẻ.

0: a1 | c2 
1: a1 | b2 
2: epsilon 

hoặc, nếu bạn không muốn rỗng bên tay phải.

0: a1 | c 
1: a1 | b 

Và tất nhiên, tuyến đường theo hướng khác cung cấp một phương tiện để chuyển ngữ pháp thông thường thành một ô tô, do đó biểu thức hợp lý.

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