결정 론적 컨텍스트가없고 눈에 띄게 푸시 다운 언어에 대한 어떤 좋은 표기법이 있습니까?


10

DCFL (deterministic context-free languages)과 VPL (visiblely pushdown language)은 CFL (Context-Free Language)과 REG (Regular Language) 사이의 공식 언어 세트입니다. CFL 용 Backus-Naur-Form 및 REG 용 정규식과 같은 일반 ASCII로 표현할 수있는 읽기 가능한 표기법이 있습니까?


1
질문의 제목에서“좋은”의 의미를 명확히하는 것이 유용 할 수 있습니다. DCFL을 설명하기 위해 BNF를 사용하는 것은 무엇이 문제입니까?
이토 쓰요시

1
좋은 말은 인간이 읽고 쓰기가 쉬워야한다는 의미이므로 ASCII를 기반으로해야합니다. BNF는 훌륭합니다. 정규 표현식은 BNF의 간단한 하위 집합입니다. 그러나 BNF의 어떤 부분 집합이 DCFL을 정의하고 어느 부분이 VPL을 정의합니까?
Jakob

답변:


5

DCFLs에 관해서는, 나는 결정 푸시 다운 오토마타의 전환 기능보다 더 나은 표기법이 표시되지 않는, 즉 명시 적 형태의 규칙 작성 Q , Q ' 의 상태 , 스택 기호, 일련의 스택 심볼 및,,',γ,'z γ aγ입력 기호 또는 빈 문자열 표기법 자체는 결정론을 강요하지는 않지만 쉽게 확인할 수 있습니다. 문맥없는 문법 종류의 표기법 (BNF)을 사용하면 DCFL이 CFL의 적절한 서브 클래스이므로 문제가 발생할 수 있습니다. DaniCL이 언급 한 바와 같이 CFG의 언어가 결정적인지에 대해서는 일반적으로 결정할 수 없습니다.

이 VPL와 관련하여, 기가 사용될 수의 괄호 / 괄호 스타일의 폼의 규칙에 충분한 될 것 α의 B A가 하는 비 터미널입니다 , 통화 기호 B 복귀 기호 및 α 의 순서 혼합을 통해 정규 표현식을 내부 기호 및 비 터미널. VPL도 (D) CFL이기 때문에 푸시 다운 오토마타에 대해 위의 표기법을 재사용하고 스택 연산이 호출 및 리턴과 일치하는지 확인하거나 중첩 된 단어 오토 마톤의 전환 관계를 적어 둘 수 있습니다 (중복이 적음). .αα

편집 : 생각해 보십시오 .ASCII 표기법 인 RelaxNG 의 압축 구문과 같은 XML 스키마 표기법은 VPL에 쉽게 사용할 수 있습니다. 태그에 대해 일부 명명 규칙을 적용하면됩니다. 예를 들어 호출 기호의 시작 태그 "<ab>"와 반환 기호 b 의 닫는 태그 "</ ab>" 일치해야합니다 .


감사! DCFL에 관해서는 이것이 올바른 방향이라고 생각합니다. 구체적인 구문에는 정규식으로 구문 분석되는 하위 집합에 대한 편리한 약어가 있습니다. VPL에 관해서는 아직 확실하지 않습니다 .VLP는 XML과 같은 트리 모델과 달리 매달려있는 호출 및 반환 기호를 가질 수 있기 때문입니다. 임의의 XML 트리에서 SAX 이벤트의 임의의 하위 시퀀스와 비교하는 것이 좋습니다. RelaxNG가 이것을 설명 할 수 있을지 의문입니다.
Jakob

사용 하는 비고 는 결정적입니다. 모든 DCFL과 그 밖의 다른 것을 설명하는 CFG의 서브 클래스가 있는지 여부에 대해서는 아무 것도 언급하지 않습니다. LR (k) 문법과 같은.
reinierpost

@reinerpost : true, 그러나 (내 방어에서는) LR (1) 조건을 확인해야하기 때문에 구문 표기법 을 제공하기 위해 LR (1) 문법을 고려하지 않습니다 .
Sylvain

3

표준 표현을 찾으려면 다음을 고려하십시오. DCFL 클래스는 LR (k) 문법으로 생성 된 언어 클래스와 동일하며 다시 LR (1)과 동일합니다. 이것은 모든 DCFL에 대해 LR (1) 문법을 찾을 수 있음을 의미합니다. 물론, LR (1) 문법은 여전히 ​​문맥이없는 문법이지만 특별한 속성을 가지고 있습니다 : LR (1) 문법에서, 우리는 결정 론적 파서를 안내하기 위해 구문 분석 테이블을 쉽게 만들 수 있습니다 (따라서 1 개의 기호, 따라서 LR (1)). 이 구문 분석 테이블은 읽기 쉽지는 않지만 다른 표현입니다.

그건 그렇고, 주어진 문맥이없는 언어가 결정론 적인지 여부는 결정할 수 없다는 것을 명심하십시오 (Greibach 's Theorem).

VPL에 대해 들어 본 적이 없다는 것을 인정해야합니다.


정식 표현은 읽기 쉽지 않지만 지침에 감사합니다. Greibach의 정리에 따르면 CFL에 DCFL로 결정할 수없는 언어가 있다고 명시되어있는 경우이 언어를 어떻게 지정합니까? 문법이 있다면, BNF (Backus Naur Form)로 표현할 수 있으므로 Greibach의 정리는 DCFL을 정확하게 표현하는 BNF의 부분 집합이 없음을 암시하는 것 같습니다. 눈에 띄는 푸시 다운 언어는 "중첩 단어"라고도합니다. 이 언어 클래스는 비교적 새롭지 만 순서가 지정된 나무와 유사한 구조를 구문 분석하는 데 적합합니다.
Jakob

결정 불가능 성 문제 : 언어를 생성하는 CFG (문맥없는 문법)가있는 경우 언어는 CFL입니다. CFG가 제공되면이 문법이 LR (k)인지 여부를 결정할 수 있으므로 결정적입니다. (푸시 다운 오토마타에도 동일하게 적용됩니다. 주어진 PDA가 결정론 적인지 여부를 쉽게 확인할 수 있습니다.) 그러나 LR (k)가 아닌 CFG가 있다고 가정 해 봅시다. 언어가 DCFL이 아니라는 의미는 아닙니다 ; LR (k) 문법을 찾지 못할 수도 있습니다.
DaniCL

고정 k에 대해 "이 문법이 LR (k)인지 여부를 결정할 수 있습니다".
Sylvain

@Jakob : Greibach의 정리는이를 언급하지 않았지만, 비록 그것이 그렇더라도, 임의의 CFG가 정규 언어에 대한 좋은 표기 형식이 아닌 것처럼 DCFG에 적합한 표기법이 아니라는 것을 의미 할뿐입니다 . CFG는 일반 언어도 결정 불가능하다고 설명합니다. 그러나 CFG의 하위 클래스 (예 : 일반 언어의 일반 문법)를 고르는 데에는 아무런 문제가 없습니다.
reinierpost

교과서에는 조잡한 표현의 전통이 있습니다. "CFL이 규칙적 / 결정론 적인지 결정하기 어려운지"와 같은 진술을하는 경향이 있습니다. 언어".
reinierpost
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.