2023. 3. 24. 02:21ㆍCS/Compiler
1. 컴파일러-컴파일러
컴파일러 컴파일러(Compiler-compiler)는 컴파일러를 만들기 위한 컴파일러를 의미한다.
일반적으로 컴파일러는 어떠한 프로그래밍 언어로 쓰인 원시 코드(source code)를 분석 파일(object file)로 변환하는 기능을 하는 프로그램을 의미하지만 그 컴파일러를 만들려면 엄청난 기술적 구현 능력과 고생이 요구된다.
그래서 컴파일러 그 자체 또는 컴파일러가 제공하는 구문 분석 기능을 자동으로 만드는 프로그램으로 컴파일러 컴파일러를 고안하여 개발하였다.
출처 : https://ko.wikipedia.org/wiki/컴파일러_컴파일러
2. 어휘 분석기 생성기
가. Lex
Lex는 컴퓨터 과학 분야에서 구문 분석기인 Yacc와 같이 널리 쓰이는 어휘 분석기이다.
Lex는 에릭 슈미트와 마이크 레스크가 만든 것으로, 대부분의 유닉스 시스템의 구문 분석 표준으로 사용되고 있고, 그 정의는 POSIX 표준에 명시되어 있다.
Lex는 어휘 분석기를 읽어와서, Lexer를 만든 뒤 이를 C 언어로 만들어진 소스 코드의 형태로 출력한다.
출처 : https://ko.wikipedia.org/wiki/Lex
나. flex
flex는 《fast lexical analyzer generator》의 줄임말로 lex의 기능을 개선한 자유 소프트웨어이다.
주로 bison과 쌍을 이루어 구문 분석기를 만드는 데 사용된다. flex를 이용하면 C로 구문 분석 코드를 만들 수 있다.
출처 : https://ko.wikipedia.org/wiki/Flex_(어휘분석기)
2. 파서 생성기
가. Yacc
컴퓨터 소프트웨어인 Yacc는 유닉스 시스템의 표준 파서 생성기이다.
이름은 "또다른 컴파일러 컴파일러"란 재귀적인 뜻의 영어 Yet Another Compiler Compiler의 약자에서 왔다.
파서(parser)란 컴파일러의 일부분으로 입력의 의미부를 구분해 주는 역할을 하며, Yacc는 배커스-나우르 표기법(BNF)으로 표기된 문법을 주면 그것에 따르는 파서를 만들 수 있는 C언어 코드를 만들어 준다.
Yacc가 만들어내는 파서와 더불어 어휘 분석기(lexical analyzer)가 필요하기 때문에 Lex나 flex 같은 어휘 분석기 생성기가 같이 쓰인다.
출처 : https://ko.wikipedia.org/wiki/Yacc
나. bison
bison은 GNU 파서 생성기로 yacc를 개선하고 대체하기 위해 만들어졌다.
이 프로그램 도구는 LALR 방식으로 작성된 문법을 처리하고 해석하여 C코드로 만들어 준다.
문법 정의 프로그램인 lex 또는 flex와 함께 사용되곤 한다.
출처 : https://ko.wikipedia.org/wiki/GNU_bison
3. MinGW
MinGW(과거 이름: mingw32)는 마이크로소프트 윈도우로 포팅한 GNU 소프트웨어 도구 모음이다.
MinGW는 윈도우 API를 구현할 수 있는 헤더 파일들을 가지고 있으며 이로써 개발자들이 GCC를 사용할 수 있다.
시그윈 포팅을 사용할 경우 컴파일한 프로그램 결과물이 유닉스 계통의 기능을 가상으로 구현하는 런타임에 의존하는 반면, MinGW의 경우 이러한 기능에 의존하지 않고 마이크로소프트 윈도우 기반 프로그램들을 만들 수 있다.
가상머신이나 Cygwin보다 가벼워서 저사양의 컴퓨터에서 GCC만 사용하고 싶을 때 설치하면 된다.
여기에 추가로 몇 가지 옵션을 더하면 컴파일러 개발에 필요한 flex와 bison도 함께 설치할 수 있다.
학교 실습실의 컴퓨터가 Windows라 MinGW를 통해서 flex와 bison 그리고 gcc까지 설치하도록 하겠다.
출처 : https://ko.wikipedia.org/wiki/MinGW
가. MinGW 다운로드 및 설치
다운로드한다.
이때 MinGW-64는 패키지 선택 기능이 없다고 하니 64bit 컴퓨터에서도 MinGW를 설치하자.
다운로드 후 mingw-get-setup.exe
을 실행한다.
install
누르기
설치 위치를 변경할 수 있다.
설치가 마무리 되면 continue
를 누른다.
installation manager에서 우리가 해야 할 일이 있다.
- mingw-developer-toolkit
- mingw-32-base
- mingw-32-gcc-g++
- msys-base
위 4개 패키지를 선택하고 installation
→ Apply changes
→ Apply
를 선택한다.
나. 환경설정
설정한 설치 위치에 MinGW
폴더가 생성되었다.
실습 때마다 폴더 경로를 입력하기 귀찮으니깐 해당 경로를 환경변수에 등록하겠다.
경로를 복사해서 제어판 → 시스템 → 고급 시스템 설정 → 환경 변수
로 들어간다.
그냥 window + r
→ sysdm.cpl ,3
로 들어가면 빠르다.
시스템 변수에 새로 만들기로 들어가서 아까 복사해둔 경로를 추가한다.
시스템 변수 중 PATH
를 고르고 편집을 누른다.
%MINGW_HOME%\bin
, %MINGW_HOME%\msys\1.0\bin
를 PATH
에 추가한다.
다. 설치 확인
cmd에서 정상적으로 설치가 된 것인지 확인하자.
gcc --version
flex --version
bison --version
실습 준비 완료!
'CS > Compiler' 카테고리의 다른 글
[Compiler] Scanner 구현 과정 (0) | 2023.03.31 |
---|---|
[Compiler] 유한 상태 기계 (0) | 2023.03.31 |
[Compiler] 형식 언어, 정규 수식 (0) | 2023.03.24 |
[Compiler] 구문 분석, 의미 분석, 코드 최적화 소개 (0) | 2023.03.15 |
[Compiler] 문법의 분류 (0) | 2023.03.15 |