반응형
1. 개념 정의
BNF는 문법 규칙을 재귀적 구조로 명시하는 형식 문법 표기법이다.
모든 반복, 선택, 그룹 구조를 비단말 기호와 재귀 규칙만으로 표현해야 한다.
반면 EBNF는 BNF를 확장한 표기법으로,
반복·선택·옵션 등을 **메타 기호(meta-symbol)**로 직접 표현할 수 있도록 설계되었다.
2. 표현 방식 차이
(1) BNF 방식


BNF에서는 다음과 같이 재귀를 통해 반복을 표현한다.
- <expr> → <expr> + <term>
- <expr> → <term>
특징:
- 반복 구조를 표현하려면 자기 자신을 다시 호출하는 규칙 필요
- 문법이 길어지고, 직관성이 떨어질 수 있음
- 모든 구조를 동일한 형식으로 표현 → 엄격하지만 장황함
(2) EBNF 방식


EBNF에서는 반복을 다음과 같이 간단히 표현한다.
- <expr> → <term> {(+ | -) <term>}
특징:
- { } : 0번 이상 반복
- ( ) : 그룹화
- | : 선택
즉, 재귀 없이도 반복 구조를 직접 표현 가능
3. 핵심 차이 요약
구분 BNF EBNF
| 표현 방식 | 재귀 기반 | 기호 기반 (확장 문법) |
| 반복 표현 | 재귀 필요 | {} 사용 |
| 선택 표현 | 여러 규칙으로 분리 | ` |
| 가독성 | 낮음 (장황) | 높음 (간결) |
| 사용 목적 | 이론적 정의에 적합 | 실제 언어 설계에 적합 |
4. 직관적 비교
동일한 의미를 표현하면 다음과 같다.
- BNF
→ "expr은 expr + term 이거나 term이다"
→ 구조를 풀어서 계속 정의해야 함 - EBNF
→ "term 뒤에 (+ 또는 - term)이 반복될 수 있다"
→ 사람이 읽기 쉬운 형태
5. 결론
BNF는 형식적이고 엄밀한 문법 정의에 적합하지만,
복잡한 구조에서는 표현이 장황해지는 단점이 있다.
EBNF는 이를 개선하여 반복, 선택, 그룹화를 간결하게 표현함으로써
가독성과 실용성을 크게 향상시킨 확장 문법 표기법이다.
반응형
'CS-Junior > 프로그래밍언어론' 카테고리의 다른 글
| Actual type과 Expected type은 각각 무엇인가? (0) | 2026.03.23 |
|---|---|
| BNF란 무엇인가? (0) | 2026.03.22 |