누군가가 상황에 맞는 문법의 단순하지만 장난감이 아닌 예를 줄 수 있습니까?


12

상황에 맞는 문법을 이해하려고합니다.

언어가 왜 그런지 이해합니다

  1. {wwwA}
  2. {anbncnnN}

문맥에 자유롭지는 않지만 비 유형 람다 미적분과 유사한 언어가 문맥에 민감한 지 알고 싶습니다.

나는 단순하지만 장난감이 아닌 예제 (위의 장난감 예제를 고려합니다), 문맥 규칙에 따른 문법의 예를 들어 일부 생산 규칙에 따라 예를 들어 일부 문자열 줄을 말할 수 있는지 여부를 말하고 싶습니다 현재 범위 내에 있습니다 (예 : 함수 본문 작성시).

문맥에 민감한 문법은 정의되지 않은 / 선언되지 않은 / 바인딩되지 않은 변수를 시맨틱이 아닌 구문 오류로 만들 정도로 강력합니까?


1
거의 모든 실제 프로그래밍 언어는 상황에 따라 다릅니다 (일반적으로, "문맥에 민감한"아래 chomsky type-0 및 type-I 문법을 혼동). 예를 들어 변수를 사용하기 전에 선언해야하며 식별자는 이러한 모든 컨텍스트를 필요로하는 고유해야합니다 (가장 의미있는 컨텍스트라고하지만 오해를 일으킬 수 있음) cs.purdue.edu/homes/hosking/502/notes/04-semantics.pdf
Nikos M .

"문맥에 민감하다"는 타입 -1 문법의 표준 용어입니다.
reinierpost

답변:


8

그렇습니다, 나는 이것이 가능하다고 믿지 않지만, 문맥에 맞는 문법을 명시 적으로 구성하고 싶지는 않습니다. 질문을 두 부분으로 나눠서 대답을 설명하겠습니다.

{a,b,;,(,)}

{w1;w2;;wn(x1;x2;;xm)wi,xj{a,b}, each xj is equal to some wi}

xjwj


게시물 주셔서 감사합니다. 현재 LBA에 익숙하지 않으므로 포인트 (2)에 대한 확신이 부족합니다. 시점 (1)부터 변수 이름이 표현식으로 예상되는 곳에서 현재 범위의 변수 중 하나만 생성하는 규칙을 작성하는 방법을 보려고합니다. 공식적인 CSG 전체를 볼 필요는 없지만 비공식적 인 설명 만 있으면됩니다. 다중 기호 변수 이름을 사용하여 수행하는 방법을 상상할 수 없습니다. 예를 들어 단일 비단 말 컨텍스트를 사용하여 ~ 영어 문장 파생어로 주제 동사 번호 계약을 지시하는 것과는 다른 컨텍스트 사용입니다.

{www}

{ww|w...}

3
{ww}LRLwRwLaMawMabbMaRMaRRa

13

[n]

CLIQUE와 같은 다른 많은 NP-hard 언어도 CSL에 있습니다.

CSL에는 훨씬 더 어려운 자연 언어도 있습니다.

그러나 나는 논문의 정리 3에서 Landweber의 구성을 사용하는 것 외에는 임의의 CSL을 문맥 인식 문법 (CSG)으로 표현하는 방법을 모른다. 이 구성에서 CSG는 CSL을 인식하는 선형 바운드 오토 마톤의 작동의 역전을 설명합니다. CSG의 생산은 기계의 특정 상태가 한 번의 이동으로 어떻게 발생하는지 설명합니다. 이러한 CSG는 오토 마톤을 문법으로 직접 변환하는 것이므로 변수를 선언 할 수있는 것과 같은 언어 기능과 반드시 ​​일치 할 필요는 없지만 대신 오토 마톤의 세부 사항에 따라 표시됩니다.

CSL 대신 CSG를 ​​고집하고 실제 질문이 변수 범위 지정이 제한된 언어에 대한 CSG를보고자하는 것에 관한 것이라면 Hendrik Jan의 대답은 좋은 출발으로 보입니다.


9

그렇습니다. 문맥 인식 문법 (CSG)은 정의되지 않은 / 미 선언 / 언 바운드 변수를 확인할 수있을만큼 강력하지만 불행히도 CSG 문자열을 구문 분석하는 효율적인 알고리즘을 알지 못합니다.

상황에 맞는 언어의 실제 예는 C 프로그래밍 언어입니다. 변수를 먼저 선언 한 다음 나중에 사용하는 기능은 C 언어를 문맥 인식 언어 (CSL)로 만듭니다. ( 나는 형식화되지 않은 람다 미적분에 대해 모른다 ).

그리고 우리는 CSL (또는 CSG)에 대한 선형 파싱 알고리즘을 알지 못하기 때문에. 이것이 컴파일러 디자인의 이유이기 때문에 CFG를 구문 분석하는 효율적인 알고리즘을 알고 있기 때문에 구문 검사에 CFG (및 구문 분석 알고리즘 만 해당)를 사용합니다 (제한된 형식 인 경우). 컴파일러는 먼저 컨텍스트가없는 기능을 구문 분석 한 다음 문제가있는 방식으로 상황에 맞는 기능을 처리합니다 (예 : 기호 테이블에 정의 된 변수가 정의되어 있는지 확인하고 그렇지 않으면 오류가 발생 함).

또한 문맥 인식 문법은 자연어 처리 (NLP)에서 사용됩니다. 그리고 대부분의 자연어는 상황에 맞는 언어의 예입니다. ( 산스크리트어 언어 를 잘 모르겠습니다 ).

나는 어리석지 만 간단한 예제 로 설명하려고 노력할 것입니다 (단지 아이디어 일뿐입니다. 세분화 할 수 있습니다).

NOUN     -->  { BlueBomber, Grijesh, I, We}
TENSE    -->  { am, was, is, were}
VERB     -->  { going, eating, working}

SENTENCE --> <NOUN> <TENSE> <VERB>

이제이 문법을 사용하여 올바른 문장을 생성 할 수 있지만 잘못되었습니다. 예를 들어

SENTENCE --> <NOUN>   <TENSE>   <VERB>
             Grijesh    is       working       [Correct statement]

그러나

             Grijesh    am       working       [wrong statement]

이유 : <TENSE>의 값은 <NOUN>의 값 (예 :)에 따라 달라 I &lt;TENNSE> --> I am지므로 문법은 영어로 올바른 문장을 생성하지 않습니다.

사실 우리는 완전한 영어를위한 문맥없는 문법을 쓸 수 없습니다!

자연어 번역기 또는 문법 검사기가 제대로 작동하지 않습니다 (긴 문장으로 시도). 이 문제는 상황에 맞는 구문 분석 알고리즘에서 발생합니다.


참조 : Arun Kumar 박사의 강의를 볼 수 있습니다 . 일부 강의에서 그는 당신이 관심있는 것을 정확하게 설명합니다.


정보에 감사드립니다.이 주제에 관심이있는 다른 사람들에게 도움이 될 것입니다. 나는 CSG에 의해 생성 된 문자열을 파싱하는 것과 관련이 없지만 잘 구성된 추상화를 생성하는 공식 CSG의 단순하지만 어리석은 예를 보았습니다 (함수 본문에 바인딩되지 않은 변수 없음). 단일 기호가 주제 / 동사 일치를 지시 할 수 있기 때문에 CSG가 올바른 "영어"문자열을 생성한다고 상상할 수 있지만 추상화를 통해 변수는 일반적으로 여러 기호로 구성됩니다.

1
@BlueBomber : 감사합니다. 인도의 밤 ..N 새해 복 많이 받으세요! :)
Grijesh Chauhan

제한된 횟수 만 할 수있는 것 같습니다. (this) [ meta.scicomp.stackexchange.com/questions/156/… 에 따르면 이 질문을 삭제하고 더 적절한 장소에 다시 게시해야합니다 ...

@BlueBomber 나는 교대 플래그, 당신도 할 수 있습니다.
Grijesh Chauhan

1

(댓글을 답변으로 확장)

어쨌든 이것이 당신이 원하는 예제인지 확실하지 않습니다.

거의 모든 실제 프로그래밍 언어는 문맥에 민감합니다 (일반적인 의미에서, 예를 들어 Chomsky type-0과 type-I 문법 을 "context-sensitive"아래로 병합 하는 것은 제한되지 않은 문법문맥 보다 문맥에 더 민감하기 때문에 물론 사실입니다) -민감한 문법).

예를 들어, "변수는 사용하기 전에 선언해야합니다", "식별자는 고유해야합니다", 모두 컨텍스트가 필요합니다 (때로는 의미 컨텍스트라고도하지만 구문 기능이 포함되어 있기 때문에 오해의 소지가 있습니다). 예 : https : // www .cs.purdue.edu / homes / hosking / 502 / notes / 04-semantics.pdf

위의 예가 문맥에 민감하다는 의미 (문법 / 구문 적 의미와 의미 론적 의미)는 문맥에 대해 이야기하기 때문입니다 (앞에 나오는 것 또는 뒤에 나오는 것).

"이미 정의 된 변수" 는 변수 사용에 대한 컨텍스트 선행 입니다. "고유 식별자" 는 식별자 선언의 앞이나 뒤에 나오는 것의 문맥 입니다.

또한 참조 입니다 자바 스크립트는 문맥 자유 언어? SO에


"상황에 맞는"은 유형 1을 의미합니다.
reinierpost
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.