속성 문법

Attribute grammar

속성 문법은 의미 정보 처리로 형식 문법을 보완하는 형식적인 방법입니다.시맨틱 정보는 문법의 종단비단말 심볼과 관련속성에 기억된다.속성 값은 문법 생성과 관련된 속성 평가 규칙의 결과입니다.속성을 사용하면 추상 구문 트리의 모든 위치에서 다른 [1]위치로 제어되고 공식적인 방식으로 정보를 전송할 수 있습니다.

각 의미 함수는 하나의 생산 규칙에서만 발생하는 심볼의 속성을 다룬다. 의미 함수 파라미터와 그 결과는 모두 하나의 특정 규칙에서 나온 심볼의 속성이다.시멘틱 함수가 규칙 왼쪽에 있는 기호의 속성 값을 정의하는 경우 이 속성은 합성된 것으로 불리며, 그렇지 않은 경우 [2]상속된 으로 불립니다.따라서 합성 Atribut은 해석 트리 위로 의미 정보를 전달하는 역할을 하는 반면 상속된 Atribut은 상위 노드에서 구문 트리로 값을 전달할 수 있습니다.

산술 표현의 평가와 같은 간단한 응용 프로그램에서 속성 문법은 간단한 방법으로 구문 분석 외에 수행되는 전체 태스크를 기술하기 위해 사용될 수 있습니다; 예를 들어, 컴파일러와 같은 언어 번역 도구를 구성할 때, 그것은 의미 검사를 검증하기 위해 사용될 수 있습니다.구문 정의에 의해 명시적으로 부여되지 않은 언어의 규칙을 나타내는 문법.또한 구문 트리를 특정 머신의 코드로 직접 변환하거나 중간 언어로 변환하기 위해 파서 또는 컴파일러에 의해 사용될 수도 있습니다.

역사

속성 문법은 도널드 크누스피터 웨그너[3]의해 발명되었다.도날드 크누스가 전체적인 개념에 대한 공로를 인정받았지만, 피터 웨그너는 크누스와 대화하는 동안 유전적인 속성을 발명했습니다.일부 초기 아이디어는 IMP의 저자인 에드거 T. "네드" [4]아이언스의 작품으로 거슬러[3] 올라간다.

다음은 정수의 곱셈과 덧셈으로 이루어진 언어를 설명할 수 있는 문맥이 없는 간단한 문법이다.

ExprExpr + Term Expr → 기간 → 기간 * 요인 기간 → 요인 요인 → "(" Expr "") 요인정수

다음 속성 문법은 문법에 쓰여진 식의 결과를 계산하기 위해 사용될 수 있습니다.이 문법은 합성된 값만 사용하므로 S 속성 문법입니다.

Expr1Expr2 + 기간 [Expr1.value = Expr2.value + Term.value ] Expr기간2 [Expr.value = 기간.value11 = 기간요인 [값 = 요인2 = ]"

합성 속성

합성속성은 자녀의 속성값에서 계산된다.하위 값을 먼저 계산해야 하므로, 이것은 상향 [5]전파의 예입니다.합성 속성을 공식적으로 정의하려면 G n { G = \ V _ { } 、_ { t , S \ } g g g 。

  • n \ 은 단자 이외의 기호 세트입니다.
  • t\ 단자 기호 세트입니다.
  • P 프로덕션 세트입니다.
  • S 구분 기호 또는 시작 기호입니다.

다음으로 비터미널 A A 문자열과 속성 a(\a가 지정되면 다음 3가지 이 모두 충족되면 A 합성된 속성이 됩니다.

  • P { A \ P} (, A { A \ 문법의 규칙 중 하나임)
  • n ... n i n: i V { = \ _ { } \ _ { n \i, in : \ _ { ( V { n } \ } ) ( V _ { )
  • ( ) , j . m) { A .=f ( \ { _ { { m a {m 1、 ...,속성의 ue는 규칙 본문의 기호에서 일부 값에 적용되는 f f이다.

상속된 속성

해석 트리의 노드에서의 상속된 속성은 부모 또는 형제자매의 속성값을 사용하여 정의된다.상속된 속성은 표시되는 컨텍스트에 대한 프로그래밍 언어 구조의 의존성을 표현하는데 편리합니다.예를 들어, 상속된 속성을 사용하여 ID가 할당의 왼쪽 또는 오른쪽에 표시되는지 추적하여 ID의 주소 또는 값이 필요한지 여부를 결정할 수 있습니다.합성 속성과 달리 상속된 속성은 부모 및/또는 형제로부터 값을 가져올 수 있습니다.다음 제작과 같이

S → ABC

여기서 A는 S, B 및 C에서 값을 얻을 수 있습니다.B는 S, A 및 C에서 값을 얻을 수 있습니다.마찬가지로 C는 S, A 및 B에서 값을 얻을 수 있습니다.

특수한 유형의 속성 문법

  • L 속성 문법: 상속된 속성은 추상 구문 트리의 왼쪽에서 오른쪽으로 1회 트래버설로 평가할 수 있습니다.
  • LR 속성 문법: 상속된 속성상향식 구문 분석에서도 평가할 수 있는 L 속성 문법.
  • ECLR 속성 문법: LR 속성 문법의 서브셋으로, 동등성 클래스를 사용하여 상속된 속성의 평가를 최적화할 수 있습니다.
  • S 속성 문법: 합성 속성만 사용하고 상속된 속성은 사용하지 않는 단순한 속성 문법 유형

「 」를 참조해 주세요.

레퍼런스

  1. ^ Knuth 1968, 페이지 134
  2. ^ Knuth 1968, 페이지 132
  3. ^ a b D.E. Knuth:속성 문법의 기원.속성문법과 적용에 관한 국제회의의 진행(1990), LNCS, vol. 461, 1~12.
  4. ^ "Main".
  5. ^ Knuth 1968, 130페이지
  • 어트리뷰트 문법을 소개하는 오리지널 페이퍼: , backup

외부 링크