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

[프로그래밍언어론] 9. BNF를 EBNF로 변환

by 파스텔코랄 2023. 9. 19.

변환 방법

BNF EBNF
<X> ::= A | AB <X> ::= A [B]
<X> ::= '-' <num> | <num> <X> ::= ['-'] <num>
<X> ::= {X} A | A <X> ::= A {A}
<X> ::= {X} A | ε <X> ::= {A}
<X> ::= '+'<num> | '-'<num> <X> ::= ('+' | '-')<num>
<X> ::= '+'<num> | '-'<num> | <num> <X> ::= [('+' | '-')]<num>

 

EBNF로 변환할 때 주의점

  1. 대부분의 |는 제거된다.
  2. 중복되는 요소가 하는 일이 오직 조건을 구체화하는 것이라면, 그것들은 제거된다.
  3. 대부분의 재귀적 요소는 제거되고 { } 루프로 대체된다.
  4. null을 뜻하는 입실론(ε)이 없어진다.

 

변환 예시

  • BNF 표현
    • <int 선언문> ::= int <변수들> ;
    • <변수들> ::= <변수> | <변수>, <변수들>
  • EBNF 표현
    • <int 선언문> ::= int <변수> { , <변수> } ;

 

참고
https://en.wikipedia.org/wiki/Syntax_diagram

 

Syntax diagram - Wikipedia

From Wikipedia, the free encyclopedia Visual description of context-free grammar Syntax diagrams (or railroad diagrams) are a way to represent a context-free grammar. They represent a graphical alternative to Backus–Naur form, EBNF, Augmented Backus–Na

en.wikipedia.org

 

댓글