어휘 분석(3)
-
16 - Context-Free Grammar (CFG)
Syntax analysis를 위한 코드의 표현방법으로, BNF 표현법이라고 한다. BNF는 만든 사람이 Backus-Naur Form 이라 BNF이다. 화살표를 ::=와 같이 표기하며, Formal language랑 유사하다. ::= | ::= 'a'|'b'|'c'... |'z' ::= '0'|'1'|...|'9' 이와 같이 표현된다. 하지만 반복되는 방식을 다 적어야 하는데, 이를 개선한것이 EBNF이다. ::= ',' | 를 ::= {','} 로 표기할 수 있다. formal language의 *와 같이 한번이상부터 무한대까지 나올 수 있다는 이야기이다. Syntax Diagram 이 문법을 다이어그램으로 표기하면, 터미널일 경우 동그라미, 터미널이 아닐경우 네모로 표기한다. A ::= B | C ..
2021.07.28 -
13 - Lexical analysis
이번엔, analyzer를 통해 정제된 데이터중 ID를 Finite Automata로 변환해 보자. ID (변수명)은 첫번째가 letter이여야 하고 그 이후에는 Digit 또는 letter이여야 한다. ID to Automata 이를 오토마타로 바꾸면, 가 된다. 식으로 나타내기 위해 편의상 letter는 l로 digit은 d로 표기하도록 하자 S = lA A = lA + dA + epsilon 이 된다. A로 묶으면 A = (l + d)A + epsilon이 되고, 정리하면 A = (l + d)* 가 된다. A를 S식에 대입하면 최종으로 S = l(l + d)* 이 된다. 해석해보면 처음엔 letter, 그 이후로는 l 또는 d가 무작위로 나올 수 있다는 뜻이다. Integer to Automata ..
2021.07.21 -
12 - Lexical Tokens
Lexical Analysis는 앞서 배운 Formal Language, Regular Expression, Finite Automata 등을 이용하여 character를 분석하는 과정이다. 그 character 사이에서 이름, 키워드, 특수한 마크가 있는지 알아내야 한다. 이 부분에서 공백, 주석과 같이 처리하지 않는 부분도 걸러져야 한다. Lexical Tokens 개념 Token이란 언어에서 인식을 하는 부분을 말한다. 각각 type들이 정해져 있으며 ID는 변수명, 함수명 NUM은 정수, REAL은 실수, 각종 예약어들과 연산자들이 이에 해당한다. 반면에 주석, 전처리기와 같은 문자들은 인식을 하지 않는다 ex ) #define, #include, //aaa Two Types of Tokens 토..
2021.07.20