Chomsky normal form을 Backus–Naur Form으로 또는 그 반대로 변환 할 수있는 소프트웨어가 있다면 알려 주시기 바랍니다.문맥 자유 문법 변환
답변
글쎄, 촘스키 노멀 양식과 배 커스 - 나 우어 양식은 실제로 같은 종류의 개념이 아니기 때문에 그렇게 생각하지 않습니다. 그러나 당신이 우리에게 도움이 될 수 있도록이 소프트웨어가 필요한 것을 말하면됩니다.
이제부터 물어 보니, Chomsky Normal Form에 BNF 문법을 정규화하는 코드가 필요하다고 가정합니다. 내가 아는 한, 그러한 소프트웨어는 존재하지 않지만 실제로는 계산 상 가능하다고 가정 할 때 일부 존재할 수 있습니다.
그러나 실제로 필요한 것이 무엇인지 구체적으로 설명하면 해당 작업에 대한 유용한 조언을 드릴 수 있습니다.
편집 : 내 책에서 조금 파기 한 후, 임의의 CFG를 Chomsky Normal Form으로 변환하는 알고리즘을 공식화하는 것이 가능하다는 것이 밝혀졌습니다. 나는 실제 알고리즘이나 그 복잡성을 가지고 있지 않다.
당신의 수정안 (편집)에 Wikipedia 링크에서 읽은 것보다 CNF가 BNF의 제한적인 사례라고 생각합니다. 모든 CNF 문법은 BNF에 있습니다. BNF에서 임의의 CFG를 CNF로 변환하는 것은 아마도 매우 간단하지는 않지만 (도입 된 많은 비 터미널), 가능할 것 같다. –
일종. CNF는 CFG에 대한 제한이며 BNF는 CFG를 인코딩하는 방법입니다 (N은 Normal가 아닌 Naur입니다). 그러나 CFG를 인코딩하는 다른 방법이 있습니다 (예 : Wikipedia 기사의 화살표 표기법). BNF (및 그 자손)는 컴퓨팅에서이를 수행하는 가장 일반적인 방법입니다. – arnsholt
http://qntm.org/chomsky는 CFG에서 CNF 로의 변환 (PHP에서)을 구현합니다. –
죄송하지만 잘못된 것입니다. BNF는 일반 CFG의 표기법이므로 "모든 CFG는 촘스키 정규형에 있음"이라고 말하는 것과 같습니다. 여기서 핵심은 Chomsky Normal Form이 모든 비 터미널 제작물에 RHS에 단 두 개의 비 터미널이 있어야한다는 것입니다. – arnsholt
나는 고쳐졌다. 나는 다음을 읽는다 : "촘스키 정규형의 모든 문법은 문맥 자유이며, 반대로 모든 문맥 자유 문법은 촘스키 정규형과 동등한 것으로 효율적으로 변형 될 수있다." 잘못된 결론에 도달했습니다. –