본문/내용
1. 서론
이 프로젝트는 간단한 프로그래밍 언어를 위한 컴파일러를 구현하는 것을 목표로 했다. 구현한 컴파일러는 렉시컬 분석, 구문 분석, 중간 코드 생성, 최적화, 그리고 코드 생성 단계를 거친다. 우리는 이러한 각 단계를 설계하고 구현하는 과정에서 다양한 어려움과 그 해결 방안을 경험했으며, 그 결과를 이 보고서에 자세히 기술하고자 한다. 프로젝트를 통해 컴파일러의 동작 원리를 깊이 있게 이해하고 실제 구현 경험을 쌓았다. 특히, 복잡한 구조의 프로그램을 처리하는 과정에서 발생하는 예외 상황들을 처리하는 방법을 배우는 데 중점을 두었다.
렉시컬 분석기는 Flex를 이용해 구현했다. 입력 소스 코드를 토큰으로 분리하는 과정에서, 특히 주석 처리와 문자열 리터럴 처리에 어려움을 겪었다. 주석 내부에 특수 문자가 포함될 경우 발생하는 오류를 해결하기 위해 정규 표현식을 수정하고, 문자열 리터럴 내부의 이스케이프 시퀀스 처리를 위한 별도의 함수를 추가했다. 결과적으로 모든 종류의 토큰을 정확하게 인식하는 분석기를 구현할 수 있었다. 단위 테스트를 통해 99% 이상의 정확도를 확인했다.
구문 분석기는 Bison을 사용하여 …