Top

컴파일러 만들기 [컴퓨터 프로그램의 구조와 원리]

  • 지은이유종원
  • ISBN : 9791161755564
  • 20,000원
  • 2021년 08월 30일 펴냄
  • 페이퍼백 | 236쪽 | 188*235mm
  • 시리즈 : 프로그래밍 언어

책 소개

요약

현대 소프트웨어는 하드웨어의 성능 발전에 힘입어 많은 부분에서 추성화된 덕택에 코딩에 입문하기도 쉬워졌고 원하는 프로그램을 만들기도 쉬워졌다. 하지만 컴퓨터를 더 잘 이해하고 싶고 프로그래밍을 더 잘 하고 싶은 사람들에게는 불투명한 벽이 생긴 셈이다. 이 책은 그 어떤 다른 도구나 라이브러리를 사용하지 않고 인터프리터, 컴파일러, 가상머신을 직접 구현해 보며 추상화라는 벽 뒤에서 실제로 일어나고 있는 일들을 이해할 수 있도록 돕는다.

이 책에서 다루는 내용

◆ 소스 코드 문자열 분석 방법
◆ 소스 코드의 구조 분석 방법
◆ 인터프리터 구현 방법
◆ 컴파일러 구현 방법
◆ 가상머신 구현 방법
◆ 가비지 컬렉터 구현 방법
◆ 어셈블리로 배우는 컴퓨터의 동작 방식

이 책의 대상 독자

◆ 컴퓨터를 더 잘 알고 싶고 프로그래밍을 더 잘하고 싶은 사람
◆ 인터프리터, 컴파일러, 가상머신을 만들어보고 싶은 사람
◆ 나만의 프로그래밍 언어를 만들어보고 싶은 사람

이 책의 구성

◆ 1장: 이 책을 학습하는 데 필요한 내용을 다룬다.
◆ 2장: 소스 코드의 문자열을 분석하는 방법을 다룬다.
◆ 3장: 소스 코드의 구조를 분석하는 방법을 다룬다.
◆ 4장: 소스 코드를 실행하는 인터프리터의 구현 방법을 다룬다.
◆ 5장: 목적 코드를 생성하는 방법을 다룬다.
◆ 6장: 목적 코드를 실행하는 가상 머신의 구현 방법을 다룬다. 또한 동적 메모리를 관리하기 위해 마크 앤 스윕이라는 가비지 컬렉터도 간단하게 구현해본다.
◆ 부록: 어셈블리를 통해 컴퓨터의 동작 방식을 알아본다. CPU의 레지스터와 메모리를 직접 조작해 계산해보고 함수도 호출해본다.
◆ 자료: 이 책은 온전히 동작하는 예제 코드를 제공한다. 2장부터 6장까지 각 장에서 다루는 어휘 분석기, 구문 분석기, 인터프리터, 코드 생성기, 가상 머신 프로젝트를 제공한다.

저자/역자 소개

지은이 소개

유종원

코딩 교육 열풍이다. 대부분의 학원과 기관이 단기간, 결과물, 취업을 목표로 한다. 짧은 시간 내에 유행하는 프로그래밍 언어와 최신 프레임워크의 사용법을 배우고 결과물을 만들어 취업하는 것을 목표로 한다. 이래서는 수료를 목표로 버티는 것도 고난이겠지만, 취업한 후에도 같은 고난이 반복된다. 그저 고통만이 반복되는 것은 코딩이 아니다. 코딩은 목표를 이루기 위해 끊임없이 문제와 해결 방안을 찾아 시도해보는 퍼즐과 같다. 그 과정은 기대와 설렘, 실망과 좌절의 반복이겠지만, 그 끝에는 모든 것을 상쇄하고도 남는 커다란 성취감과 보람이 찾아온다. 코딩을 하기 위해 필요한 것은 프로그래밍 언어의 해박한 문법 지식도, 최신 프레임워크의 사용법도 아니다. 가장 기본이 되는 것은 생각하는 능력과 이를 바탕으로 생각을 코드로 표현하는 능력이다. 컴파일러를 만드는 이 책은 코딩의 기본을 다지기 위한 마지막 단계다. 생각을 코드로 표현할 수 있는 능력을 갖췄다면, 코드가 무엇인지 그리고 어떻게 동작하는지를 알아야 할 단계다. 꼭 컴파일러를 만들어 봐야만 알 수 있는 것은 아니겠지만, 이것보다 확실한 방법이 또 어디 있겠는가. 돌아가지 말고 컴파일러를 만들어 본 적이 없다면 반드시 경험해 보기 바란다. 컴파일러까지 만들어 봤다면 앞으로 무엇을 하든 순조롭게 나아갈 수 있는 탄탄한 기본기를 갖춘 셈이다. 자부심을 가져도 좋다. 이 책을 시작으로 코딩을 제대로 익힐 수 있는 강의 제작이나 서적 집필을 계획하고 있다. 코딩을 하는 모든 사람이 코딩의 본질을 파악하고 즐겁게 코딩을 했으면 하는 바람이다.

목차

목차
  • 1장. 시작하며
  • 1.1 프로그래밍 언어
  • 1.2 컴파일러
  • 1.3 예제 컴파일러
  • 1.4 마치며

  • 2장. 어휘 분석
  • 2.1 어휘와 토큰
  • 2.2 어휘 분석기
  • 2.2.1 소스 코드 문자열
  • 2.2.2 어휘의 시작 문자
  • 2.2.3 숫자 리터럴의 시작 문자
  • 2.2.4 문자열 리터럴의 시작 문자
  • 2.2.5 식별자와 키워드의 시작 문자
  • 2.2.6 연산자와 구분자의 시작 문자
  • 2.2.7 숫자 리터럴 어휘
  • 2.2.8 문자열 리터럴 어휘
  • 2.2.9 식별자와 키워드 어휘
  • 2.2.10 연산자와 구분자 어휘
  • 2.3 마치며

  • 3장. 구문 분석
  • 3.1 구문 트리와 노드
  • 3.2 문 분석기
  • 3.2.1 선언 영역
  • 3.2.2 함수의 정의
  • 3.2.3 본문
  • 3.2.4 변수의 선언
  • 3.2.5 본문의 식
  • 3.2.6 식
  • 3.2.7 대입 연산자
  • 3.2.8 논리 or 연산자
  • 3.3 마치며

  • 4장. 인터프리터
  • 4.1 구문 트리 순회
  • 4.2 구문 트리 실행기
  • 4.2.1 엔트리 포인트 함수 호출
  • 4.2.2 함수
  • 4.2.3 print문
  • 4.2.4 데이터 타입
  • 4.2.5 문자열 리터럴
  • 4.2.6 산술 연산
  • 4.2.7 논리 연산
  • 4.2.8 변수의 선언과 참조
  • 4.2.9 for문
  • 4.2.10 if문
  • 4.2.11 continue문
  • 4.2.12 함수 호출
  • 4.2.13 함수호출 인자
  • 4.2.14 return문
  • 4.2.15 내장 함수
  • 4.2.16 배열 리터럴
  • 4.2.17 원소값 참조
  • 4.2.18 원소값 변경
  • 4.3 마치며

  • 5장. 코드 생성
  • 5.1 명령어와 목적 코드
  • 5.2 코드 생성기
  • 5.2.1 엔트리 포인트 함수 호출
  • 5.2.2 함수
  • 5.2.3 print문
  • 5.2.4 문자열 리터럴
  • 5.2.5 산술 연산자
  • 5.2.6 식의 결과값
  • 5.2.7 논리 or 연산자
  • 5.2.8 변수 선언
  • 5.2.9 변수 참조
  • 5.2.10 for문
  • 5.2.11 if문
  • 5.2.12 continue문
  • 5.2.13 함수 호출
  • 5.2.14 배열 리터럴
  • 5.2.15 원소값 참조
  • 5.2.16 원소값 수정
  • 5.3 마치며

  • 6장. 가상 머신
  • 6.1 스택 프레임과 콜 스택
  • 6.2 코드 실행기
  • 6.2.1 실행과 종료
  • 6.2.2 함수의 주소
  • 6.2.3 함수 호출
  • 6.2.4 메모리 할당
  • 6.2.5 문자열 리터럴
  • 6.2.6 콘솔 출력
  • 6.2.7 return문
  • 6.2.8 덧셈 연산
  • 6.2.9 논리 or 연산
  • 6.2.10 변수 참조
  • 6.2.11 for문과 if문
  • 6.2.12 내장 함수
  • 6.2.13 배열 리터럴
  • 6.2.14 원소값 참조
  • 6.2.15 원소값 변경
  • 6.2.16 가비지 컬렉터
  • 6.3 마치며

  • 7장. 부록: 어셈블리
  • 7.1 레지스터 머신
  • 7.1.1 식의 계산
  • 7.1.2 흐름 제어
  • 7.1.3 함수의 호출과 종료
  • 7.1.4 함수 호출 인자
  • 7.1.5 매개변수와 지역변수
  • 7.2 마치며

도서 오류 신고

도서 오류 신고

에이콘출판사에 관심을 가져 주셔서 고맙습니다. 도서의 오탈자 정보를 알려주시면 다음 개정판 인쇄 시 반영하겠습니다.

오탈자 정보는 다음과 같이 입력해 주시면 됩니다.

(예시) p.100 아래에서 3행 : '몇일'동안 -> 며칠동안