본문 바로가기
공부/프로그래밍 언어론

[프로그래밍 언어론] 10. 구문론2

by 맑은청이 2021. 4. 14.
728x90
반응형

 

 

syntax  나타내는 방법 문법 

가장 작은 계층 정규(reg),CFG,CSF,UG

 

Context-Free Grammar (N,T,P,S) 비단말기호, 단말기호, 생성규칙, 시작기호


Derivation -> Parse Tree (시간)

 

Derivation

 

시각화 Parse Tree

 

Ambiguity

Grammar 의 결합순서등을 잘못 이해하면 모호해짐 

parse tree 가 여러 개 나옴 -> 모호 

 

아래의 parser는 <expr>+<expr>*<expr> 을 통해서 중복되는 parse tree가 만들어짐 

왼쪽 그래프 같은 경우에 35, 오른쪽 그래프는 23 결과도 다르게 나옴 


모호성을 없애는 방법 

Associativity 를 넣음, 같은 수준에서 만들 수 있기 때문에 모호성이 생김

왼쪽 오른쪽 둘다 트리를 만들 수 있는 게 아니라 한쪽만 넣을 수 있게 한다.

아래에서 곱하기 같은 경우 깊이 2 에서만 할 수 있음 term 에서만 만들 수 있기 때문임  

이런 기술을 precedence cascading 이라고 부름 

Association

 

Precedence cascading


Extended BNF(EBNF)

 

 

옵션, 선택, 반복

 

Power(EBNF) = Power(BNF)

 

 

문법이 모호하면 parser tree도 모호하다. 

BNF 에 Alternative, optional, repetitions 을 넣은게 EBNF

728x90
반응형