변환 방법
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로 변환할 때 주의점
- 대부분의 |는 제거된다.
- 중복되는 요소가 하는 일이 오직 조건을 구체화하는 것이라면, 그것들은 제거된다.
- 대부분의 재귀적 요소는 제거되고 { } 루프로 대체된다.
- 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
'프로그래밍언어론' 카테고리의 다른 글
[프로그래밍언어론] 11. 이름(Name), 바인딩(Binding) (1) | 2023.10.10 |
---|---|
[프로그래밍언어론] 10. 추상 구문 트리(AST)를 EBNF로 변환 (1) | 2023.10.10 |
[프로그래밍언어론] 8. BNF, EBNF (0) | 2023.09.19 |
[프로그래밍언어론] 7. Syntax vs. Semantics vs. Pragmatics (0) | 2023.09.19 |
[프로그래밍언어론] 6. 컴파일러와 인터프리터 (0) | 2023.09.11 |
댓글