Tôi đoán bạn có nghĩa là chuyển đổi nó thành một ngữ pháp chính thức với các quy tắc của biểu mẫu V-> w, trong đó V là một nonterminal và w là một chuỗi các thiết bị đầu cuối/nonterminals. Để bắt đầu, bạn có thể chỉ cần nói (trộn CFG và cú pháp regex):
Trường hợp S là biểu tượng bắt đầu. Bây giờ chúng ta hãy phá vỡ nó lên một chút (và thêm khoảng trắng cho rõ ràng):
S -> 0 A 1 0 B
A -> 1+
B -> (11)*
Điều quan trọng là để chuyển đổi *
es và +
es để đệ quy. Đầu tiên, chúng tôi sẽ chuyển đổi các sao Kleene tới một cộng bằng cách chèn một nguyên tắc trung gian mà chấp nhận chuỗi rỗng:
S -> 0 A 1 0 B
A -> 1+
B -> (empty)
B -> C
C -> (11)+
Cuối cùng, chúng tôi sẽ chuyển đổi +
ký hiệu để đệ quy:
S -> 0 A 1 0 B
A -> 1
A -> A 1
B -> (empty)
B -> C
C -> 11
C -> C 11
Xử lý x?
, chỉ cần chia nó thành quy tắc sản xuất sản phẩm nào và quy tắc sản xuất x.
Nguồn
2010-04-14 17:27:22
tự hỏi liệu có bất kỳ triển khai thư viện nguồn mở nào hữu ích cho tác vụ này ngay bây giờ – matanster