컨텐츠 바로가기

국가기술자격

컴퓨터

운전/조종

국가자격/전문사무

국어/외국어

경제/금융/회계/물류

공인중개사/주택관리사

편입/검정고시/독학사/수시.논술대비

취업/상식/적성검사

공무원

고등고시/전문직

보건/위생/의학

기타/신규자격증

이전상품 다음 제품 보기 확대보기
추천메일 보내기 상품조르기 대량구매문의

길벗 Crafting Interpreters 로버트 나이스트롬의 인터프리터 in Java, C - 내 손으로 직접 밑바닥부터 만 (해외배송 가능상품)

기본 정보
정가 55,000원
판매가 49,500원
상품코드 P000CGJQ
배송비 무료
수량 수량증가수량감소
SNS 상품홍보
SNS 상품홍보

개인결제창을 통한 결제 시 네이버 마일리지 적립 및 사용이 가능합니다.

상품 옵션
옵션 선택

(최소주문수량 1개 이상 / 최대주문수량 0개 이하)

수량을 선택해주세요.

위 옵션선택 박스를 선택하시면 아래에 상품이 추가됩니다.

상품 목록
상품명 상품수 가격
길벗 Crafting Interpreters 로버트 나이스트롬의 인터프리터 in Java, C - 내 손으로 직접 밑바닥부터 만 수량증가 수량감소 49500 (  0)
총 상품금액(수량) : 0 (0개)
바로구매하기 장바구니 담기 SOLD OUT 관심상품등록
Crafting Interpreters 로버트 나이스트롬의 인터프리터 in Java, C - 내 손으로 직접 밑바닥부터 만들며 배우는 리얼 인터프리터와 컴파일러의 세계
로버트 나이스트롬 (지은이),이일웅 (옮긴이)길벗2023-11-30원제 : Crafting Interpreters
모든 기능을 갖춘 효율적인 스크립팅 언어를 구현하기 위해 알아야 할 모든 것을 담고 있다. 로버트 나이스트롬은 이 책에서 자신이 디자인한 작은 동적 언어인 Lox에 대해 두 가지 인터프리터를 구축한다. 첫 번째, 제이록스(jlox)는 Java 기반 인터프리터로 스캐닝, 재귀 하강을 사용한 표현식 구문 분석, 표현식, 제어 흐름, 함수 및 클로저, 클래스 및 상속을 평가한다. 아무것도 없는 밑바닥부터 시작하여 각 장의 주제를 구현해내는 모든 코드를 작성, 수정, 추가하며 설명한다.
두 번째, 씨록스(clox)는 C 기반으로 추상 구문 트리를 따라가는 느린 인터프리터 대신 스택 기반 가상 머신을 개발하며 관련 이론과 실제로 고려해야 할 사항을 다룬다. 위 두 가지를 구현하면서 비슷한 주제에 다르게 접근한다. 새로운 프로그래밍 언어를 구축하는 쉽지 않은 길을 위해, 책 전반에 걸쳐 복잡한 주제를 쉽게 이해할 수 있도록 세심하게 설명하고, 코드 역시 명확하고 따라하기 쉽게 넣고자 했다.
목차
1부 <*> 환영한다!
1장 들어가기
__1.1 왜 이런 걸 배우는가?
____1.1.1 미니 언어는 곳곳에 있다
____1.1.2 언어는 훌륭한 연습이다
____1.1.3 한 가지 더
__1.2 이 책의 구성
____1.2.1 코드
____1.2.2 스니펫
____1.2.3 어사이드
____1.2.4 연습 문제
____1.2.5 디자인 노트
__1.3 첫 번째 인터프리터
__1.4 두 번째 인터프리터
연습 문제
디자인 노트 <*> 언어 이름 짓기
2장 인터프리터 원정대
__2.1 언어의 구성 요소
____2.1.1 스캐닝
____2.1.2 파싱
____2.1.3 정적 분석
____2.1.4 중간 표현
____2.1.5 최적화
____2.1.6 코드 생성
____2.1.7 가상 머신
____2.1.8 런타임
__2.2 지름길과 대체 경로
____2.2.1 싱글 패스 컴파일러
____2.2.2 트리 탐색 인터프리터
____2.2.3 트랜스파일러
____2.2.4 JIT 컴파일
__2.3 컴파일러와 인터프리터
__2.4 여행을 떠나자!
연습 문제
3장 록스 언어
__3.1 안녕, 록스
__3.2 하이레벨 언어
____3.2.1 동적 타이핑
____3.2.2 자동 메모리 관리
__3.3 데이터 타입
__3.4 표현식
____3.4.1 산술
____3.4.2 비교와 동등성
____3.4.3 논리 연산자
____3.4.4 우선순위와 그룹핑
__3.5 문장
__3.6 변수
__3.7 제어 흐름
__3.8 함수
____3.8.1 클로저
__3.9 클래스
____3.9.1 객체 지향 언어를 추구해야 할 이유가 있을까?
____3.9.2 록스는 왜 객체 지향 언어로 만들었나?
____3.9.3 클래스냐 프로토타입이냐
____3.9.4 록스의 클래스
____3.9.5 인스턴스화 및 초기화
____3.9.6 상속
__3.10 표준 라이브러리
연습 문제
디자인 노트 <*> 표현식과 문장
2부 <*> 트리 탐색 인터프리터
4장 스캐닝
__4.1 인터프리터 프레임워크
____4.1.1 에러 처리
__4.2 렉심과 토큰
____4.2.1 토큰 타입
____4.2.2 리터럴 값
____4.2.3 위치 정보
__4.3 정규 언어와 표현식
__4.4 스캐너 클래스
__4.5 렉심 식별하기
____4.5.1 렉시컬 에러 090
____4.5.2 연산자 091
__4.6 길이가 긴 렉심
____4.6.1 문자열 리터럴
____4.6.2 숫자 리터럴
__4.7 예약어와 식별자
연습 문제
디자인 노트 <*> 암묵적 세미콜론
5장 코드 표현
__5.1 컨텍스트 자유 문법
____5.1.1 문법 규칙
____5.1.2 표기법 개선
____5.1.3 록스 표현식 문법
__5.2 구문 트리 구현
____5.2.1 무지향성 객체
____5.2.2 트리 메타프로그래밍
__5.3 트리 다루기
____5.3.1 표현식 문제
____5.3.2 비지터 패턴
____5.3.3 표현식에 비지터를 적용
__5.4 (적당히) 예쁜 출력기
연습 문제
6장 표현식 파싱
__6.1 모호함과 파싱 게임
__6.2 재귀 하향 파싱
____6.2.1 파서 클래스
__6.3 구문 에러
____6.3.1 패닉 모드 에러 복구
____6.3.2 패닉 모드 진입
____6.3.3 재귀 하향 파서 동기화
__6.4 파서 연결
연습 문제
디자인 노트 <*> 로직 vs 역사
7장 표현식 평가
__7.1 값을 표현하기
__7.2 표현식 평가
____7.2.1 리터럴 평가
____7.2.2 괄호 평가
____7.2.3 단항식 평가
____7.2.4 참과 거짓
____7.2.5 이항 연산자 평가
__7.3 런타임 에러
____7.3.1 런타임 에러 감지
__7.4 인터프리터 연결
____7.4.1 런타임 에러 리포팅
____7.4.2 인터프리터 실행
연습 문제
디자인 노트 <*> 정적 타이핑과 동적 타이핑
8장 문장과 상태
__8.1 문장
____8.1.1 문장 구문 트리
____8.1.2 문장 파싱
____8.1.3 문장 실행
__8.2 글로벌 변수
____8.2.1 변수 구문
____8.2.2 변수 파싱
__8.3 환경
____8.3.1 글로벌 변수의 인터프리팅
__8.4 할당
____8.4.1 할당 구문
____8.4.2 할당 시맨틱
__8.5 스코프
____8.5.1 중첩과 섀도잉
____8.5.2 블록 구문과 시맨틱
연습 문제
디자인 노트 <*> 암묵적 변수 선언
9장 제어 흐름
__9.1 튜링 기계(개요)
__9.2 조건부 실행
__9.3 논리 연산자
__9.4 while 루프
__9.5 for 루프
____9.5.1 디슈가링
연습 문제
디자인 노트 <*> 구문 슈가 범벅
10장 함수
__10.1 함수 호출
____10.1.1 최대 인수 개수
____10.1.2 함수 호출 인터프리팅
____10.1.3 호출 타입 에러
____10.1.4 애리티 체크
__10.2 네이티브 함수
____10.2.1 시간 측정
__10.3 함수 선언
__10.4 함수 객체
____10.4.1 함수 선언 인터프리팅
__10.5 리턴문
____10.5.1 호출에서 리턴
__10.6 로컬 함수와 클로저
연습 문제
11장 리졸빙과 바인딩
__11.1 정적 스코프
____11.1.1 스코프와 가변 환경
____11.1.2 영속적 환경
__11.2 시맨틱 분석
____11.2.1 변수 레졸루션 패스
__11.3 리졸버 클래스
____11.3.1 블록 리졸빙
____11.3.2 변수 선언 리졸빙
____11.3.3 변수식 리졸빙
____11.3.4 할당식 리졸빙
____11.3.5 함수 선언 리졸빙
____11.3.6 기타 구문 트리 노드의 리졸빙
__11.4 리졸브된 변수의 인터프리팅
____11.4.1 리졸브된 변수 액세스
____11.4.2 리졸브된 변수 할당
____11.4.3 리졸버 실행
__11.5 레졸루션 에러
____11.5.1 잘못된 리턴 에러
연습 문제
12장 클래스
__12.1 OOP와 클래스
__12.2 클래스 선언
__12.3 인스턴스 생성
__12.4 인스턴스 프로퍼티
____12.4.1 겟 표현식
____12.4.2 셋 표현식
__12.5 클래스 메서드
__12.6 this
____12.6.1 잘못된 this 용례
__12.7 생성자와 초기자
____12.7.1 init() 직접 호출
____12.7.2 init()에서 리턴
연습 문제
디자인 노트 <*> 프로토타입과 파워
13장 상속
__13.1 수퍼클래스와 서브클래스
__13.2 메서드 상속
__13.3 수퍼클래스 메서드 호출
____13.3.1 구문
____13.3.2 시맨틱
____13.3.3 잘못된 super 용례
__13.4 마무리
연습 문제
3부 <*> 바이트코드 가상 머신
14장 바이트코드 청크
__14.1 바이트코드란?
____14.1.1 AST 탐색의 문제점은?
____14.1.2 그냥 네이티브 코드로 컴파일하면?
____14.1.3 바이트코드란?
__14.2 시작하기
__14.3 명령어 청크
____14.3.1 동적 명령어 배열
__14.4 청크 디셈블링
__14.5 상수
____14.5.1 값 표현
____14.5.2 값 배열
____14.5.3 상수 명령어
__14.6 줄 정보
____14.6.1 줄 정보 디셈블링
연습 문제
디자인 노트 <*> 개발 중인 언어를 테스트
15장 가상 머신
__15.1 명령어 실행 머신
____15.1.1 명령어 실행
____15.1.2 실행 추적
__15.2 값 스택 조작기
____15.2.1 VM의 스택
____15.2.2 스택 트레이스
__15.3 산술 계산기
____15.3.1 이항 연산자
연습 문제
디자인 노트 <*> 레지스터 기반의 바이트코드
16장 온 디맨드 스캐닝
__16.1 인터프리터 시동 걸기
____16.1.1 컴파일 파이프라인 열기
____16.1.2 스캐너의 스캐닝
__16.2 한 번에 토큰 하나씩
____16.2.1 토큰 스캐닝
__16.3 록스의 렉시컬 문법
____16.3.1 공백 문자
____16.3.2 주석
____16.3.3 리터럴 토큰
__16.4 식별자와 키워드
____16.4.1 트라이와 상태 기계
연습 문제
17장 표현식 컴파일
__17.1 싱글 패스 컴파일
__17.2 토큰 파싱
____17.2.1 구문 에러 처리
__17.3 바이트코드 내보내기
__17.4 전위식 파싱
____17.4.1 토큰 파서
____17.4.2 괄호로 그룹핑
____17.4.3 단항 음수화
__17.5 중위식 파싱
__17.6 프랫 파서
____17.6.1 우선순위에 따라 파싱
__17.7 청크 덤프
연습 문제
디자인 노트 <*> 파싱은 파싱일 뿐
18장 값 타입
__18.1 태그 있는 공용체
__18.2 록스의 값과 C의 값
__18.3 동적 타입 숫자
____18.3.1 단항 부정과 런타임 에러
____18.3.2 이항 산술 연산자
__18.4 두 가지 새로운 타입
____18.4.1 논리 not과 거짓
____18.4.2 동등/비교 연산자
연습 문제
19장 문자열
__19.1 값과 객체
__19.2 구조체 상속
__19.3 문자열
__19.4 문자열 연산
____19.4.1 문자열 연결
__19.5 객체 해제
연습 문제
디자인 노트 <*> 문자열 인코딩
20장 해시 테이블
__20.1 버킷 배열
____20.1.1 로드 팩터 및 래핑된 키
__20.2 충돌 해결
____20.2.1 개별 체이닝
____20.2.2 오픈 어드레싱
__20.3 해시 함수
__20.4 해시 테이블
____20.4.1 문자열 해싱
____20.4.2 엔트리 삽입
____20.4.3 할당 및 크기 조정
____20.4.4 값 조회
____20.4.5 엔트리 삭제
____20.4.6 툼스톤 개수 세기
__20.5 문자열 인터닝
연습 문제
21장 글로벌 변수
__21.1 문장
____21.1.1 print 문
____21.1.2 표현문
____21.1.3 에러 동기화
__21.2 변수 선언
__21.3 변수 읽기
__21.4 할당
연습 문제
22장 로컬 변수
__22.1 로컬 변수 표현
__22.2 블록문
__22.3 로컬 변수 선언
__22.4 로컬 변수 사용
____22.4.1 로컬 변수 해석
____22.4.2 다른 스코프 엣지 케이스
연습 문제
23장 진격과 후퇴
__23.1 if 문
____23.1.1 else 절
__23.2 논리 연산자
____23.2.1 논리 or 연산자
__23.3 while 문
__23.4 for 문
____23.4.1 초기자 절
____23.4.2 조건절
____23.4.3 증분절
연습 문제
디자인 노트 <*> goto가 그렇게 해로울까?
24장 호출과 함수
__24.1 함수 객체
__24.2 함수 객체로 컴파일
____24.2.1 컴파일 타임에 함수 생성
__24.3 호출 프레임
____24.3.1 로컬 변수 할당
____24.3.2 리턴 주소
____24.3.3 호출 스택
__24.4 함수 선언
____24.4.1 컴파일러 스택
____24.4.2 함수 매개변수
__24.5 함수 호출
____24.5.1 인수를 매개변수에 바인딩
____24.5.2 런타임 에러 체크
____24.5.3 스택 트레이스 출력
____24.5.4 함수에서 리턴
__24.6 리턴문
__24.7 네이티브 함수
연습 문제
25장 클로저
__25.1 클로저 객체
____25.1.1 클로저 객체로 컴파일
____25.1.2 함수 선언 해석
__25.2 업밸류
____25.2.1 업밸류 컴파일
____25.2.2 업밸류 플랫화
__25.3 업밸류 객체
____25.3.1 클로저에서의 업밸류
__25.4 클로즈드 업밸류
____25.4.1 값과 변수
____25.4.2 업밸류 클로징
____25.4.3 오픈 업밸류 추적
____25.4.4 런타임에 업밸류 클로징
연습 문제
디자인 노트 <*> 루프 변수 클로징
26장 가비지 수집
__26.1 도달성
__26.2 마크-스윕 가비지 수집
____26.2.1 가비지 수집
____26.2.2 디버그 로깅
__26.3 루트 마킹
____26.3.1 불분명한 루트
__26.4 객체 참조 추적
____26.4.1 색 추상화
____26.4.2 회색 객체 워크리스트
____26.4.3 회색 객체 처리
__26.5 미사용 객체 스위핑
____26.5.1 약한 참조와 문자열 풀
__26.6 수집은 언제 하나?
____26.6.1 레이턴시와 스루풋
____26.6.2 자동 조정 힙
__26.7 가비지 수집 버그
____26.7.1 상수 테이블에 추가
____26.7.2 문자열 인터닝
____26.7.3 문자열 연결
연습 문제
디자인 노트 <*> 세대별 수집기
27장 클래스와 인스턴스
__27.1 클래스 객체
__27.2 클래스 선언
__27.3 클래스 인스턴스
__27.4 겟/셋 표현식
____27.4.1 게터/세터 표현식 해석
연습 문제
28장 메서드와 초기자
__28.1 메서드 선언
____28.1.1 메서드 표현
____28.1.2 메서드 선언 컴파일
____28.1.3 메서드 선언 실행
__28.2 메서드 참조
____28.2.1 바운드 메서드
____28.2.2 메서드 액세스
____28.2.3 메서드 호출
__28.3 this
____28.3.1 this 오용 사례
__28.4 인스턴스 초기자
____28.4.1 초기자 호출
____28.4.2 초기자 리턴값
____28.4.3 잘못된 초기자 리턴
__28.5 호출 최적화
____28.5.1 필드 호출
연습 문제
디자인 노트 <*> 참신성 예산
29장 메서드와 초기자
__29.1 메서드 상속
____29.1.1 상속 실행
____29.1.2 이상한 수퍼클래스
__29.2 수퍼클래스 저장
____29.2.1 수퍼클래스의 로컬 변수
__29.3 수퍼 호출
____29.3.1 수퍼 액세스 실행
____29.3.2 수퍼 호출을 더 빠르게
__29.4 완전한 가상 머신
연습 문제
30장 최적화
__30.1 성능 측정
____30.1.1 벤치마크
____30.1.2 프로파일링
__30.2 해시 테이블 프로빙을 더 빠르게
____30.2.1 느린 키 래핑
__30.3 NaN 박싱
____30.3.1 숫자는 무엇이고, 숫자가 아닌 것은 무엇인가?
____30.3.2 조건부 지원
____30.3.3 숫자
____30.3.4 nil과 true/false
____30.3.5 객체
____30.3.6 Value 함수
____30.3.7 성능 평가
__30.4 다음 도착지는?
연습 문제
4부 <*> 부록
A1장 록스의 전체 문법
__A1.1 구문 문법
____A1.1.1 선언
____A1.1.2 문장
____A1.1.3 표현식
____A1.1.4 유틸리티 규칙
__A1.2 렉시컬 문법
A2장 제이록스의 AST 생성기로 만든 자바 클래스 목록
__A2.1 표현식
____A2.1.1 할당 표현식
____A2.1.2 이항 표현식
____A2.1.3 호출 표현식
____A2.1.4 겟 표현식
____A2.1.5 그룹핑 표현식
____A2.1.6 리터럴 표현식
____A2.1.7 논리 표현식
____A2.1.8 셋 표현식
____A2.1.9 super 표현식
____A2.1.10 this 표현식
____A2.1.11 단항 표현식
____A2.1.12 변수 표현식
__A2.2 문장
____A2.2.1 블록문
____A2.2.2 클래스 문장
____A2.2.3 표현문
____A2.2.4 함수 문장
____A2.2.5 If 문
____A2.2.6 print 문
____A2.2.7 return 문
____A2.2.8 변수 문장
____A2.2.9 while 문
B장 예제 코드 실습 안내 by 옮긴이
____B.1.1 시스템 요구 사항
____B.1.2 압축 파일 해제
____B.1.3 환경 변수(PATH)에 컴파일러 경로 추가
____B.1.4 개발 환경(Eclipse) 실행
____B.1.5 맺음말
찾아보기

배송정보

  • 배송 방법 : 택배
  • 배송 지역 : 전국지역
  • 배송 비용 : 무료
  • 배송 기간 : 1일 ~ 2일
  • 배송 안내 :

교환및 반품정보

교환 및 반품이 가능한 경우
- 상품을 공급 받으신 날로부터 7일이내 단, 포장을 개봉하였거나 포장이 훼손되어 상품가치가 상실된 경우에는 교환/반품이 불가능합니다.
- 공급받으신 상품 및 용역의 내용이 표시.광고 내용과
  다르거나 다르게 이행된 경우에는 공급받은 날로부터 3월이내, 그사실을 알게 된 날로부터 30일이내

교환 및 반품이 불가능한 경우
- 고객님의 책임 있는 사유로 상품등이 멸실 또는 훼손된 경우. 단, 상품의 내용을 확인하기 위하여
  포장 등을 훼손한 경우는 제외
- 포장을 개봉하였거나 포장이 훼손되어 상품가치가 상실된 경우
- 고객님의 사용 또는 일부 소비에 의하여 상품의 가치가 현저히 감소한 경우
- 시간의 경과에 의하여 재판매가 곤란할 정도로 상품등의 가치가 현저히 감소한 경우
- 복제가 가능한 상품등의 포장을 훼손한 경우
  (자세한 내용은 고객만족센터 1:1 E-MAIL상담을 이용해 주시기 바랍니다.)

※ 고객님의 마음이 바뀌어 교환, 반품을 하실 경우 상품반송 비용은 고객님께서 부담하셔야 합니다.
  (색상 교환, 사이즈 교환 등 포함)

상품에 대해 궁금한 점을 해결해 드립니다.

게시물이 없습니다

상품문의하기 모두 보기

0