Extended BNF

k_bell·2024년 10월 9일

프로그래밍언어론

목록 보기
7/8

EBNF는 기존 BNF에서 작성이 불편한 부분들을 개선하고 기능을 확장한 것이다. 그러나 기존의 BNF와 표현력의 차이는 존재하지 않는다.

EBNF의 새로운 문법

[ ] (optional) : [ ] 는 옵셥을 의미한다. 아래의 예시를 살펴보자.

BNF) <if> -> if(<expr>)<statement> | if(<expr>)<statement> else<statement>

EBNF) <if> -> if(<expr>)<statement>[else <statement>]

else는 옵션이므로 [ ]를 이용해 나타낼 수 있다.

( ) : 두 개의 연산자 중 하나를 선택해야 하는 경우.

BNF) <term> -> <term> * <factor> | <term> / <factor>

EBNF) <term> (*|/) <factor>

{ } : 0번 이상의 반복.

BNF) <number> -> <number><digit> | <digit>

EBNF) <number> -> <digit>{<number>}

<digit>의 중복을 제거하고 표현할 수 있다. { }안의 구문은 안 나와도 되고, 1번 이상 반복되도 되기 때문이다.

0개의 댓글