2011-08-09 65 views
14

Bất cứ khi nào tôi thấy thuật ngữ bộ lọc nguồn Tôi đang tự hỏi về những gì nó đề cập đến.Bộ lọc nguồn chính xác là gì?

Ngoài định nghĩa chính thức, tôi nghĩ một ví dụ cũng sẽ hữu ích khi thúc đẩy thông điệp về nhà.

+0

@mu quá ngắn: Thành thật mà nói, tôi không biết đây có phải là một cái gì đó cụ thể của Perl hay không – Zaid

Trả lời

19

Bộ lọc nguồn là mô-đun sửa đổi một số mã khác trước khi được đánh giá. Do đó mã được thực hiện không phải là những gì người lập trình thấy khi nó được viết. Bạn có thể đọc thêm về bộ lọc nguồn (trong ngữ cảnh Perl) tại perldoc perlfilter. Một số ví dụ là Smart::Comments cho phép lập trình viên để lại các lệnh gỡ lỗi trong các nhận xét trong mã và chỉ sử dụng chúng nếu muốn, một mã khác là PDL::NiceSlice là đường để cắt các đối tượng PDL.

Edit:

Để biết thêm thông tin về cách sử dụng (nên bạn muốn dũng cảm con thú), đọc tài liệu cho Filter::Simple mà là một cách điển hình để tạo ra các bộ lọc.

Ngoài ra, có một cách mới và khác nhau để muck với nguồn: Devel::Declare cho phép bạn tương tác với trình phân tích cú pháp của Perl, cho phép bạn thực hiện nhiều loại điều giống như bộ lọc nguồn, nhưng không có bộ lọc nguồn. Điều này có thể được "an toàn hơn" trong một số khía cạnh, nhưng nó có một phạm vi hạn chế hơn.

+0

Tôi không biết nó có trong 'perldoc'! – Zaid

+1

Không phải là 'perldoc' tuyệt vời! –

+0

Đó là (cung cấp cho bạn biết cách của bạn xung quanh) – Zaid

7

A bộ lọc nguồn là một dạng mô-đun ảnh hưởng đến cách thức tệp use -ing nó sẽ được phân tích cú pháp. Chúng thường được sử dụng để mô phỏng các tính năng cú pháp mà Perl không có nguyên bản - ví dụ, bộ lọc nguồn Switch thường được sử dụng để mô phỏng các câu lệnh chuyển đổi trước khi có sẵn một cấu trúc given { } của Perl.

Bộ lọc nguồn hoạt động bằng cách lấy văn bản của mô đun làm đầu vào, thực hiện một số xử lý trên mô-đun và xuất mã nguồn đã lọc. Để biết ví dụ đơn giản về cách bộ lọc nguồn được triển khai, cũng như các chi tiết khác, hãy xem trang perldoc cho perlfilter.

4

Chúng là các bộ xử lý trước. Họ thay đổi mã nguồn trước khi nó đạt đến trình biên dịch Perl. Bạn có thể làm những điều đáng sợ với chúng, trong thực thi ngôn ngữ của bạn, với tất cả các hiệu ứng này có thể đọc được (đối với những người khác), mạnh mẽ (viết phân tích cú pháp là khó) và khả năng bảo trì (gỡ lỗi sẽ phức tạp khi ý tưởng của bạn về mã nguồn là gì khác với những gì trình biên dịch và thời gian chạy nghĩ rằng nó là).