2011-08-09 2 views
14

소스 필터를 볼 때마다 나는 그것이 무엇을 언급하는지 궁금해졌습니다.원본 필터 란 무엇입니까?

정식 정의 외에도 예를 들어 메시지를 집으로 보내는 것이 도움이 될 것이라고 생각합니다.

+0

@mu가 너무 짧습니다. 매우 솔직히 말하자면, 이것이 Perl과 관련이 있는지 없는지 모르겠습니다. – Zaid

답변

19

소스 필터는 평가되기 전에 다른 코드를 수정하는 모듈입니다. 따라서 실행되는 코드는 프로그래머가 쓰여질 때 볼 수있는 코드가 아닙니다. perldoc perlfilter에서 소스 필터에 대한 자세한 내용을 볼 수 있습니다 (Perl 컨텍스트에서). 예를 들어 Smart::Comments은 프로그래머가 디버깅 명령을 코드의 주석에두고 원하는 경우에만 사용하도록 허용하고 또 다른 예로는 PDL::NiceSlice을 사용하여 PDL 개체를 조각화 할 수 있습니다.

편집 : 사용에 대한 자세한 내용은 (당신이 짐승을 용감하고자해야한다)의 경우, 필터를 만들 수있는 일반적인 방법입니다 Filter::Simple 설명서를 읽어

.

또 다른 방법으로는 소스에 대해 신경 쓰지 않아도됩니다. Devel::Declare을 사용하면 Perl의 파서와 상호 작용할 수 있으므로 원본 필터없이 소스 필터와 동일한 유형의 많은 작업을 수행 할 수 있습니다. 이것은 좀 더 안전 할 수 있지만 범위가 제한되어 있습니다.

+0

'perldoc'에 들어 있다는 것을 몰랐습니다! – Zaid

+1

'perldoc'이 좋지 않습니다! –

+0

이것은 주위를 아는 사람에게 제공됩니다. – Zaid

7

소스 필터은 파일이 구문 분석되는 방식에 영향을주는 모듈 형식입니다. 그것들은 일반적으로 Perl이 기본적으로 가지고 있지 않은 구문 기능을 시뮬 레이팅하는 데 사용됩니다. 예를 들어 Switch 소스 필터는 Perl의 given { } 구성을 사용할 수 있기 전에 switch 문을 시뮬레이트하는 데 자주 사용됩니다.

소스 필터는 모듈의 텍스트를 입력으로 사용하고 일부 처리를 수행하며 필터링 된 소스 코드를 출력합니다. 소스 필터가 어떻게 구현되는지에 대한 간단한 예와 자세한 내용은 perlfilter의 perldoc 페이지를 참조하십시오.

4

이들은 전처리 기입니다. 그들은 Perl 컴파일러에 도달하기 전에 소스 코드를 변경합니다. 다른 언어의 가독성, 견고성 (작성자가 어렵다), 유지 보수성 (디버깅은 소스 코드가 무엇인지 생각할 때 까다로워집니다.)에 대해 여러분은 자신의 언어를 구현하면서 무서운 것들을 할 수 있습니다. 컴파일러와 런타임이 생각하는 것과는 다릅니다).

관련 문제