2010-10-25 17 views
7

Tôi sẽ thực hiện điều này trong lớp lý thuyết của mình và tôi tò mò về số lượng người ở đây biết biên dịch biểu thức chính quy thực sự là . Tôi đã xem trực tuyến, và có vẻ như với tôi rằng đây là một chủ đề cổ xưa hơn tôi nghĩ. Vì vậy, yeah, những người ở đây biết trước khi đọc câu hỏi này mà một biên dịch biểu thức chính quy được thực hiện bằng cách chuyển đổi các regex để một automaton hữu hạn epsilon-không xác định được? Không. Ai không biết đó là gì?Trong sự tò mò, có bao nhiêu người ở đây biết biểu thức thông thường được biên soạn như thế nào?

+3

Có thể tốt hơn trên [Lập trình viên] (http://programmers.stackexchange.com) trên tài khoản là cuộc thăm dò ý kiến ​​của người lập trình thay vì câu hỏi có câu trả lời lập trình. – dmckee

+0

Vâng, tôi không nghĩ họ cũng thích câu hỏi này. "Ai không biết điều này?" là một câu hỏi khá khó trả lời có ý nghĩa ... – Jens

+1

Thực tế là hầu hết các triển khai thực hiện * không * biên dịch thành tự động hữu hạn. Hầu hết các phương ngữ regex được sử dụng ngày nay có thể phù hợp với các ngôn ngữ không thường xuyên (và do đó không thể được kết hợp bởi một automaton hữu hạn). – sepp2k

Trả lời

0

Có một trình biên dịch biểu thức chính quy rất đơn giản và thanh lịch trong C mà Rob Pike đã viết và Brian Kernighan mô tả trong Chương 1 của O'Reilly's Beautiful Code. Nó khá dễ học. Ngoài ra các khóa học trình biên dịch bao gồm nó: các loại mã thông báo có thể được xác định bằng các biểu thức chính quy. Vì vậy, tôi tưởng tượng kiến ​​thức này không phải là rất hiếm.

+0

Đó là một thông dịch viên backtracking - nó không biên dịch thành một automaton. –

0

Ok. Tôi đoán tôi sẽ là người đầu tiên thừa nhận rằng, mặc dù tôi đã tham gia khóa học của một trình biên dịch một vài năm trước và biết nguyên tắc chung của nó, tôi nghĩ rằng tôi sẽ cần phải đưa ra "Dragon Book" một lần nữa và đọc thêm một số về chủ đề này nếu tôi thực sự được yêu cầu viết mã thực hiện loại điều này.

0

Tôi biết nó có liên quan đến máy móc hữu hạn, nhưng không có gì ngoài đó. Không thực sự là một chủ đề tôi muốn đi sâu vào ... Tôi nghi ngờ nó là khó chịu dưới mui xe. Không có nhiều người trên SO dường như làm thế nào để sử dụng biểu thức thông thường ở tất cả, không bao giờ hiểu làm thế nào họ làm việc.