컴파일러를 만든다면 한땀한땀...직접 코드를 넣어야 하는걸까? N개의 언어를 사용할 수 있고, M개의 컴퓨터에서 동작하게 하려면 우리는 NxM개의 컴파일러를 작성해야 한다. 완전 무리..!
하지만 우리에게는 컴파일러 자동화 도구, 컴파일러 생성기가 있습니다. (컴파일러의 컴파일러)
컴파일러 생성기는 컴파일러의 전 과정이나 각 단계를 자동 생성하는 도구들을 말한다.
컴파일러 생성기
컴파일러 생성기는 목적 기계에 대한 기계 표현을 입력으로 받아서 하나의 컴파일러를 출력하게 된다.
이렇게 출력된 컴파일러는 소스 프로그램을 입력으로 받아 목적 기계의 코드로 번역하는 컴파일러이다.
Lexical Analyser Generator
어휘 분석기 생성기는 어휘분석기를 자동생성하는 도구이다.
토큰에 대한 표현을 입력으로 받아 해당 형태의 토큰을 찾는 어휘 분석기를 만든다.
이때 사용하는 토큰 표현 방식으로는 정규 표현을 많이 사용한다.
대표적인 어휘 분석기 생성기는 Lex를 들 수 있다.
LEX
입력 스트림에서 정규 표현으로 기술된 토큰들을 찾아내는 프로그램을 작성하는데 유용한 도구이다.
Parser Generator System (PGS)
구문분석기(파서) 생성기는 언어의 문법 표현으로부터 파서를 제어하는 파싱 테이블을 생성한다.
파서는 이 테이블을 이용해 주어진 문장에 대한 문법적인 검사를 하고,
다음 단계에서 필요한 sementic information(tree)을 만든다.
대표적인 PGS는 Stanford PGS, Wisconsin PGS, YACC를 들 수 있다.
'Computer Science > Compiler' 카테고리의 다른 글
[Compiler] 12. Symbol Table (1) (0) | 2024.03.26 |
---|---|
[Compiler] 02. 형식 언어 (1) - 언어 (0) | 2024.03.12 |
[Compiler] 01. 컴파일러 개론 (2) - 일반 컴파일러 구조 (0) | 2024.03.06 |
[Compiler] 01. 컴파일러 개론 (1) - 번역기 (0) | 2024.03.06 |