BNF → EBNF 변환 방법
BNF | EBNF |
<N> :: A | AB | <N> ::= A [B] |
<Q> :: - <num> | <num> | <Q> ::= [-] <num> |
<P> ::= <P> A | A | <P> ::= A { A } |
<X> :: <X> A | ϵ | <X> ::= { A } |
<blk> ::= begin <sts> end <sts> ::= <cmd> | cmd ; <sts> |
<blk> ::= begin <cmd> { ; <cmd> } end |
<nws> ::= + <num> | - <num> | <nws> ::= ( + | - ) <num> |
<SN> ::= + <num> | - <num> | <num> | <SN> ::= [ ( + | - ) ] <num> |
[ EBNF로 변환할 때 주의점 ]
1. 대부분의 | 는 제거된다.
2. 중복되는 요소가 하는 일이 오직 조건을 구체화하는 것이라면, 그것들은 제거된다.
3. 대부분의 재귀적 요소는 제거되고 { } 루프로 대체된다.
4. null을 뜻하는 입실론(ϵ)이 없어진다.
[ 위의 EBNF를 구문도표로 나타낸 것 ]
BNF → EBNF 변환 예시
BNF와 EBNF로 구문도표를 그릴 때
- BNF와 EBNF의 구문표현이 다를 수 있기에
각각을 구문도표로 나타내면 다른 형태로 그려질 수 있다.
예를 들어, 교재 141쪽의 그림 4-5는
identifier에 대한 EBNF 표현(141쪽)을 구문 도표로 표현한 것입니다.
identifier에 대한 BNF 표현(140쪽)을 구문 도표로 표현한다면
그림 4-5와는 다르게 그려질 것입니다.
BNF의 구문도표 표현
https://en.wikipedia.org/wiki/Syntax_diagram
반응형
'Programming > Computer Science Fundamentals' 카테고리의 다른 글
[선형대수] 4. 역행렬 (2) | 2021.11.22 |
---|---|
[선형대수] 3. 행렬연산 (0) | 2021.11.21 |
[자료구조] 2. 배열 (0) | 2021.10.04 |
[자료구조] 1. 자료구조의 개념 (0) | 2021.10.04 |
[선형대수] 1. 일차연립방정식 ~ 2. 행렬과 가우스 소거법 (0) | 2021.09.26 |
[JSP] 4. JSP 동작 원리 (0) | 2021.09.17 |
[JSP] 3. JSP 개요 (0) | 2021.09.17 |
[JSP] 2. 개발 환경 설정하기 (0) | 2021.09.17 |