16 - Context-Free Grammar (CFG)
2021. 7. 28. 20:53ㆍ개발 관련 학습정리/컴파일러 만들기 (이론)
반응형
Syntax analysis를 위한 코드의 표현방법으로, BNF 표현법이라고 한다.
BNF는 만든 사람이 Backus-Naur Form 이라 BNF이다.
화살표를 ::=와 같이 표기하며, Formal language랑 유사하다.
<id> ::= <letter> | <id><letter>
<letter> ::= 'a'|'b'|'c'... |'z'
<digit> ::= '0'|'1'|...|'9'
이와 같이 표현된다.
하지만 반복되는 방식을 다 적어야 하는데, 이를 개선한것이 EBNF이다.
<id_list> ::= <id_list> ',' <id> | <id>를
<id_list> ::= <id> {','<id>} 로 표기할 수 있다. formal language의 *와 같이
한번이상부터 무한대까지 나올 수 있다는 이야기이다.
Syntax Diagram
이 문법을 다이어그램으로 표기하면,
터미널일 경우 동그라미, 터미널이 아닐경우 네모로 표기한다.
A ::= B | C | D일 경우
로 표기할 수 있다.
반복되는 경우는,
이와 같이 표기할 수 있다.
이 다이어그램은 C언어의 변수명 구조인데,
처음엔 _ 또는 문자이고, 그 뒤로는 문자, 숫자, _ 중 하나가 나오는데 무한반복 가능하다는 뜻이다.
반응형
'개발 관련 학습정리 > 컴파일러 만들기 (이론)' 카테고리의 다른 글
18 - Top Down Parsing (1) (0) | 2021.08.05 |
---|---|
17 - Syntax Analysis (0) | 2021.08.04 |
15 - Grammar Translation (0) | 2021.07.27 |
14 - Derivation Tree (Parse Tree) (0) | 2021.07.26 |
13 - Lexical analysis (0) | 2021.07.21 |