은 ---> 아래의 문법을 고려 구문 분석 문자열을 인쇄하려면,구문 감독 정의
S->SaS|bB
B->AcB| ε
A->dAd| ε
위의 문법을 구문에게 지시 정의를 작성하는 인쇄 해석되는 문자열 문자열 'bddcab'에 대한 주석이 달린 구문 분석 트리를 구성하십시오.
해결책 :
지금 문법 위에 재 작성 우리는이 :
S->S1aS2
S->bB
B->AcB1
B-> ε
A->dA1d
A-> ε
(The numbers 1 and 2 following the non-terminal actually denote subscripts. And the subscripts in above grammar denote instances of the non-terminal.)
의미 규칙에 따라 위의 문법.
Productions Semantic Rules
S->S1aS2 S.val=S1.val+a.lexval + S2.val { print S.val }
S->bB S.val=b.lexval + B.val { Print S.val}
B->AcB1 B.val=A.val+c.lexval + B1.val
B-> ε
A->dA1d A.val=d.lexval + A1.val + d.lexval
A-> ε
** The '+' operator is merely for concatenation.
이 해결책은 괜찮습니까? 나는 그것이 정확하지 않을지도 모른다는 느낌이 들었다.
다음은 주석이 달린 구문 분석 트리입니다.
당신이 옳습니다. 잘 했어 ! 그리고 네, 주석이 달린 나무에 대해서도 문제가 있습니까? 나는 방금 합성 된 속성에 의존했다. 상속 된 속성을 사용해야합니까? 이 경우 상속 된 속성을 사용하기 위해서는 전체 문법을 왼쪽이 아닌 재귀 적으로 변경해야한다고 생각합니다. – Jiwan