2016-11-11 10 views
9

최근 Perl을 살펴보기로 결심했습니다. Perl 5 대 6에 직면했을 때 성숙과 광범위한 지원으로 인해 5와 함께갔습니다.어떻게 Perl 5에서 구문 분석 문법을 정의 할 수 있습니까?

그러나 실제로 나를 흥미롭게 한 Perl 6의 기능 중 하나는 grammar keyword으로, 복잡한 텍스트를 구문 분석하는 데 사용할 수있는 언어 문법을 정의 할 수있었습니다. 다른 언어에서는 보통 외부 라이브러리 또는 수동 구문 분석 구현이 필요합니다.

Perl 5에 정착 했으므로 Perl 5의 Perl 6 grammar 키워드 (또는 문법 작성을위한 다른 기능), 기본 제공 또는 이와 유사한 기능이 있습니까?

+0

https://metacpan.org/pod/Regexp::Grammars는 비슷한 것을하는 CPAN 모듈 중 하나입니다. 저자에 따르면 Damian Conway가 광범위하게 사용하는 몇 가지 해답이 있습니다. 그러나 불행히도 귀하의 질문은 도구 추천을 요청하기 때문에 주제와 관련이 없습니다. – simbabque

+1

@simbabque Perl 5에서 텍스트를 구문 분석하기위한 문법을 ​​어떻게 정의 할 수 있습니까? – ThisSuitIsBlackNot

+0

알아. 그러나 나는 그 OP가 스스로 그것을 할 수있을만큼 충분히 경험이 많다고 생각했다 @ ThisSuitIsBlackNot;) – simbabque

답변

10

아무 핵심 지원이 없다,하지만 당신은 Parse::RecDescent, Marpa::R2, Regexp::Grammars, 한 번 봐하거나 간단한 작업을 위해, 단지 (perlre 참조) 정규식에 (DEFINE)을 사용할 수 있습니다.

+0

그들은 모두 좋은 모듈, 특히'Regexp :: Grammars '처럼 보입니다. '(DEFINE)'에 대해 조금 설명해 주시겠습니까? * Perlre * 문서는 초보자에게 약간 혼란스러워 보입니다. –

+0

@ OrangeFlash81 : 예를 들어 [JSON 파서를 단일 Perl 정규 표현식] (http://www.perlmonks.org/?node_id=995856)을 참조하십시오. – choroba

+0

쿨, 고마워. 3 분 안에 받아 들일거야. –

1

비록 내가 많이 사용하지는 않았지만 Acmeist 소프트웨어 Pegex은 Perl 6 Grammars와 가깝다고 생각합니다.