본문 바로가기

compiler

[컴파일러] 컴파일러: 원리, 기법, 도구 - 구문 정의와 파스 트리 구문 정의 (syntax definition) 문맥 자유 문법은 언어의 구문을 기술하기 위해 사용되며 컴파일러의 전반부를 표현하는 방법이다. 그렇다면 문맥 자유 문법(줄여서 자유 문법)은 어떻게 표현될까? 익숙한 if-else 문을 통해 자유 문법을 알아보자. if (expression) { statement } else { statement } 이 C 코드를 자유 문법으로 나타내면 다음과 같이 표현된다. - statement -> if (expression) {statement} else {statement} 화살표의 뜻은 왼쪽 문법 기호가 오른쪽 문자열을 생성한다는 뜻이다. (오른쪽 문자열로 왼쪽 문자열로) 이러한 형식을 생성 규칙(production) 이라고 한다. 문맥 자유 문법을 통해서는 의미 .. 더보기
[컴파일러] 컴파일러: 원리, 기법, 도구 - 컴파일러의 개요 컴파일러는 front end, middle end, back end의 세가지 단계로 구성되어 있다. front end: 토큰화를 위한 어휘 분석(Lexing), 파스 트리 구성을 위한 구문 분석(Parsing), 중간 코드를 위한 의미 분석 등을 처리한다. middle end: 중간 코드에 대해 프로그램의 분석과 최적화를 처리한다. back end: 각각의 CPU 아키텍처에 대해 코드 최적화를 수행하며 최종 코드를 생성한다. 먼저 우리는 front end에서 다루는 어휘 분석과 구문 분석, 그리고 의미 분석에 대해 알아볼 것이다. 컴퓨터 언어는 다음의 두가지 요소로 구성된다. - 언어의 구문(syntax of language): 프로그램의 모양 -> 코드의 모양 - 언어의 의미(semantics of l.. 더보기