Scanner 3

[컴파일러 이론] 3. Syntax analysis, Parser, CFG, Parse Tree, AST

Syntax analysis, Parser이번글은 syntax analysis에 대해 알아보자.코딩을 할때 개발자들을 괴롭히는 syntax error 라는 에러메세지는 많이 보았을 것이다. 이번글은 이와 관련된 것이다.이전글들에서 얘기한 lexical analysis를 수행하는 scanner는 코드를 토큰들로 나눠주는 역할을 했다.이번 syntax analysis는 이 토큰들을 활용해 문법에 맞는지를 판단한다. 이 분석을 하는 친구를 Parser라고 한다.이 Parser가 하는 일을 몇가지 예를 들어보면,1. 괄호를 열면 닫는 부분이 있는지2. C언어 같은 경우 뒤에 ;을 잘 썼는지3. while 뒤에 ( )가 있어 그 안에 반복에 대한 조건문이 있는지등등 많은 문법을 검증한다.Scanner는 각 토큰을..

CS/컴파일러 2025.11.23

[컴파일러 이론] 2. FSA, DFA, NFA

2025.11.20 - [컴파일러] - [컴파일러] 1. lexical analysis, scanner, regular expression [컴파일러] 1. lexical analysis, scanner, regular expression보통 우리가 코딩을 하면 어셈블리어로 컴파일되어 기계가 알아들을 수 있게 변환된 다음 코드가 실행된다. 이 과정에서 분명 사람은 거의 영어에 가까운 언어로 코딩을 하는데, 기계가 이걸 어april2901.tistory.com 이전 글에서 RE를 사용해 각 token의 pattern을 만드는 것까지 알아봤었다.이번에는 이 pattern들을 인식하는 법을 알아보자.Finite State Automata(FSA)먼저 Finite State Automata(FSA)라는 개념에..

CS/컴파일러 2025.11.21

[컴파일러 이론] 1. lexical analysis, scanner, regular expression

보통 우리가 코딩을 하면 어셈블리어로 컴파일되어 기계가 알아들을 수 있게 변환된 다음 코드가 실행된다. 이 과정에서 분명 사람은 거의 영어에 가까운 언어로 코딩을 하는데, 기계가 이걸 어떻게 알아듣고 어셈블리어로 바꿀지 의문이 들 수 있다. 이 변환을 수행해주는 컴파일러의 원리에 대해 알아보자. 위 그림을 보면 source code가 assembly code로 변환될 때까지 꽤 많은 과정이 필요함을 볼 수 있다. 이번 글에서는 첫 단계인 Lexical Analysis에 대해 조금 살펴보자. ScannerLexical Analysis를 수행해주는 프로그램(?)의 이름을 Scanner라고도 하는데, 이름처럼 source code를 스캔하는 작업을 하기 때문이다.사람들의 언어로 예시를 들면 문장을 받아서 한 ..

CS/컴파일러 2025.11.20