2011-01-24 3 views

답변

5

BNF 스타일의 문법에 대한 특이성이있을 수 있지만 일반적으로 문맥이없는 문법 (예 : BNF)이 모호한 것인지 결정하는 것은 불가능합니다.

간단히 말하자면 일반적으로 도구는 수학적으로 불가능하기 때문에 도구가 없습니다. 하지만 특별한 경우가있을 수 있습니다.

+1

더 구체적으로 말하면, 문법이 맞는지 모호한 지 여부를 증명할 수는 없지만 증명할 수는 없습니다. – OrangeDog

+1

@OrangeDog : 글쎄, 일반적으로 증명할 수는 없지만, 일부 문법은 가능합니다 (여기에 하나의 작은 문법이 있습니다 : "goal = a;"). –

2

일반적으로 아니오.

실용적인 접근법으로, 할 수있는 일은 문법이 주어지며, 각 규칙에 대해 올바른 터미널/비 터미널의 가능한 문자열을 열거하여 규칙에 둘 이상의 동등한 파생어가 있는지 확인합니다. 모호함).

우리의 DMS Software Reengineering Toolkit은 명시 적 문법 설명에 의해 구동되는 임의의 컴퓨터 언어에 대한 프로그램 변환 시스템입니다. DMS는 파서 생성기를 사용하여 GLR 구문 분석 엔진을 구동합니다.

DMS의 파서 생성기는 모든 문법 규칙에 대해 반복적으로 심화 검색을 실행하여 위에서 스케치 된 모호성 검사를 선택적으로 수행합니다. 이는 선택 목록을 효율적으로 안내하는 구문 분석 테이블을 가지고 있기 때문에 실용적입니다. 이 검사를 선택한 깊이까지 실행하도록 지시 할 수 있습니다. 흥미로운 크기의 깊이를 선택하는 데는 시간이 오래 걸릴 수 있지만 사실 큰 문법에 도입 된 많은 어리석은 모호성을 찾으려면 깊이가 3 또는 4이면 충분합니다. 우리는 일반적으로 초기 문법 디버깅을하는 동안이 작업을 수행합니다.

+1

참고 : 연결된 DMS 소프트웨어는 비용이 듭니다. 웹 사이트는 가격을 나열하지 않습니다. 당신은 견적을 요구해야합니다. –

관련 문제