2015-09-03 12 views
7

Tôi đang đọc mã của trình phân tích cú pháp biểu thức chính quy và bắt đầu tự hỏi liệu cú pháp của cụm từ thông dụng có thường xuyên không và có thể biểu thị bằng biểu thức chính quy khác (khá phức tạp) không?Cụm từ thông dụng có thể được phân tích cú pháp bằng cụm từ thông dụng không?

rere = "" # the regular expression of regular language 
match1 = re.match(rere, "[a-z][email protected][a-z]+.com") # True 
match2 = re.match(rere, ")az[") # False 

Tôi không thấy cấu trúc đệ quy nào trong cú pháp biểu thức chính quy, vì vậy tôi nghĩ có lẽ điều này có thể thực hiện được?

Nếu có, biểu thức sẽ trông như thế nào? Nếu không, tại sao?

+3

Không. Bạn cần ngữ pháp không có bối cảnh để phân tích cụm từ thông dụng. Không thể phân tích các dấu ngoặc đơn lồng nhau bằng biểu thức chính quy (lý thuyết). – nhahtdh

+0

Có, dấu ngoặc ôm lồng nhau. Tôi quên mất điều đó. Nhưng nếu tôi không hỗ trợ nhóm trong nhóm, câu trả lời có khác không? – NeoWang

+1

@NeoWang: Sau đó, những gì bạn có yếu hơn biểu thức chính quy. tức là có những ngôn ngữ thường xuyên diễn đạt/ngữ pháp thông thường có thể được mô tả, nhưng không phải ngữ pháp của bạn. – nhahtdh

Trả lời

3

Bạn không thể phân tích các dấu ngoặc đơn lồng nhau với cụm từ thông dụng bởi vì bạn sẽ cần trạng thái vô hạn để làm như vậy. Vì vậy, câu trả lời là không. Những gì bạn đang tìm kiếm được gọi là context-free grammars.

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