000 | 00944camccc200301 k 4500 | |
001 | 000000807740 | |
005 | 20100805074825 | |
007 | ta | |
008 | 030220s2002 ulka b 001a kor | |
020 | ▼a 8979142153 ▼g 13560 : ▼c \23000 | |
035 | ▼a KRIC08498885 | |
040 | ▼a 211046 ▼c 211046 ▼d 211046 ▼d 211009 | |
041 | 1 | ▼a kor ▼h eng |
049 | 1 | ▼l 111237967 ▼f 개가 ▼l 121069746 ▼f 과학 ▼l 121069747 ▼f 과학 |
082 | 0 4 | ▼a 005.4/3 ▼2 21 |
090 | ▼a 005.43 ▼b 2002g | |
100 | 1 | ▼a Levine, John R. |
245 | 1 0 | ▼a Lex와 yacc / ▼d 존 레빈 ; ▼e 토니 매이슨 ; ▼e 더그 브라운 [공]저 ; ▼e 임백준 역. |
246 | 0 3 | ▼a 컴파일러 제작 도구의 혁명 렉스와 야크 철저 분석 |
246 | 1 9 | ▼a Lex & yacc |
260 | ▼a 서울 : ▼b 한빛미디어 , ▼c 2002. | |
300 | ▼a 481 p. : ▼b 삽도 ; ▼c 26 cm. | |
500 | ▼a 부록으로 'AT & T 렉스 '등 수록 | |
504 | ▼a 참고서적( p. 473-474)과 색인수록 | |
700 | 1 | ▼a 임백준, ▼e 역 |
700 | 1 | ▼a Mason, Tony |
700 | 1 | ▼a Brown, Doug |
소장정보
No. | 소장처 | 청구기호 | 등록번호 | 도서상태 | 반납예정일 | 예약 | 서비스 |
---|---|---|---|---|---|---|---|
No. 1 | 소장처 중앙도서관/제2자료실(3층)/ | 청구기호 005.43 2002g | 등록번호 111237967 | 도서상태 대출가능 | 반납예정일 | 예약 | 서비스 |
No. 2 | 소장처 과학도서관/Sci-Info(1층서고)/ | 청구기호 005.43 2002g | 등록번호 121069746 | 도서상태 대출가능 | 반납예정일 | 예약 | 서비스 |
No. 3 | 소장처 과학도서관/보존서고5(동양서)/ | 청구기호 005.43 2002g | 등록번호 121069747 | 도서상태 대출가능 | 반납예정일 | 예약 | 서비스 |
No. 4 | 소장처 세종학술정보원/과학기술실(5층)/ | 청구기호 005.43 2002g | 등록번호 151141186 | 도서상태 대출가능 | 반납예정일 | 예약 | 서비스 |
No. | 소장처 | 청구기호 | 등록번호 | 도서상태 | 반납예정일 | 예약 | 서비스 |
---|---|---|---|---|---|---|---|
No. 1 | 소장처 중앙도서관/제2자료실(3층)/ | 청구기호 005.43 2002g | 등록번호 111237967 | 도서상태 대출가능 | 반납예정일 | 예약 | 서비스 |
No. | 소장처 | 청구기호 | 등록번호 | 도서상태 | 반납예정일 | 예약 | 서비스 |
---|---|---|---|---|---|---|---|
No. 1 | 소장처 과학도서관/Sci-Info(1층서고)/ | 청구기호 005.43 2002g | 등록번호 121069746 | 도서상태 대출가능 | 반납예정일 | 예약 | 서비스 |
No. 2 | 소장처 과학도서관/보존서고5(동양서)/ | 청구기호 005.43 2002g | 등록번호 121069747 | 도서상태 대출가능 | 반납예정일 | 예약 | 서비스 |
No. | 소장처 | 청구기호 | 등록번호 | 도서상태 | 반납예정일 | 예약 | 서비스 |
---|---|---|---|---|---|---|---|
No. 1 | 소장처 세종학술정보원/과학기술실(5층)/ | 청구기호 005.43 2002g | 등록번호 151141186 | 도서상태 대출가능 | 반납예정일 | 예약 | 서비스 |
컨텐츠정보
줄거리
1장. 렉스와 야크
컴파일러나 인터프리터를 만들때 렉스와 야크를 사용하는 이유와 그 방법에 대해 개괄적으로 살펴보고, 간단한 렉스와 야크 애플리케이션을 몇 개 보여준다. 또한 이 책에서 사용하는 기본적인 용어들을 설명한다.
2장. 렉스 이용하기
렉스를 사용하는 방법에 대해 설명한다. 파일에 저장된 단어의 수를 세고, 프로그램의 명령어 스위치와 인자를 분석하고, C 프로그램으로 통계를 뽑는 렉스 애플리케이션을 개발해본다.
3장. 야크 이용하기
완전한 기능을 갖춘 데스크탑용 계산기를 개발하기 위해 렉스와 야크를 이용하는 예제를 보여준다.
4장. 메뉴 생성 언어
메뉴 생성기를 개발하기 위해 렉스와 야크를 사용하는 예를 보여준다.
5장. SQL 파싱
관계형 데이터베이스 언어로 사용되는 SQL 문법 전체를 해석하는 파서(parser)를 개발한다.
6장. 렉스 명세서 참조 / 7장. 야크 문법 참조
렉스 및 야크 프로그래머가 사용할 수 있는 기능과 옵션에 대해 자세히 설명한다. 6장부터 9장까지는 렉스와 야크에 이미 익숙한 프로그래머가 새로운 렉스와 야크 애플리케이션을 개발할 때 참조할 수 있는 기술적인 정보를 제공한다.
8장. 모호성과 충돌
야크가 주어진 문법을 정확하게 해석할 수 없게 하는 모호성과 충돌에 대해서 설명한다. 다음으로, 그러한 문제를 지적하여 고칠 수 있는 방법을 알아본다.
9장. 에러 보고와 복구
컴파일러 혹은 인터프리터 개발자가 컴파일러에 입력되는 내용에서 잘못을 발견하거나 인식하여, 이를 적절하게 보고할 수 있는 방법에 대해서 논의한다.
정보제공 :

책소개
렉스와 야크는 주로 컴파일러나 인터프리터 개발자가 사용하는 도구이지만, 효율적인 입력처리와 구문 분석및 파싱을 원하는 모든 응용프로그래머 또한 유용하게 사용이 가능하다. 이 책은 lex와 yacc에 대한 가이드북으로 효율적인 입력 처리와 구문 분석및 파싱에 관한 내용을 제공한다.
개정판에는 새롭게 추가된 내용과 예제들을 담았고, 추가적으로 4장과 5장을 메뉴 컴파일러와 SQL문법을 구현하는데 할애했다. 부록에는 렉스와 야크에 대한 레퍼런스, 다양한 오류 해결방법, 유닉스와 MS-DOS에 사용할 수 있는 주요 버전들에 대한 정보를 담았다.
다음 내용들을 담고 있다.
정보제공 :

저자소개
더그 브라운(지은이)
1976년 일리노이 대학교에서 전기공학으로 석사학위를 받았으며, 현재 오리건주에 있는 배버톤사의 고문 겸 계약자이다. 1977년 이후로 회로 시뮬레이션, 합성, 테스트를 위한 소프트웨어 개발을 애 왔다. 저서로는 <lex & yacc, 2nd Edition>(1992, 공저) 등이 있다.
존 레빈(지은이)
현재 유닉스와 컴파일러에 관한 글을 쓰고 강의를 하며 컨설팅을 하고 있다. 유닉스 버젼 로터스 1-2-3와 노턴 유틸리티를 만드는 작업에 참여한 바 있으며 IBM RT PC용 AIX 설계자 중 한 사람이다. 1984년에 예일 대학에서 컴퓨터 과학 박사학위를 받았다.
토니 매이슨(지은이)
현재 분산 시스템 소프트웨어를 개발하는 회사인 트랜자르크사의 AFS 개발 팀 멤버다. 그전에는 스탠포드 대학의 분산 시스템 그룹에서 분산 운영체제와 데이터 통신 분야에서 일한 바 있다. 1987년 시카고 대학에서 수학 학사학위를 받았다.
임백준(옮긴이)
서울대학교에서 수학을 공부하고, 미국으로 건너가 인디애나 주립대학교에서 컴퓨터과학을 공부했어요. 중학교 시절 8비트 컴퓨터와 베이식 언어를 접하며 프로그래밍에 대한 재미를 알게 되었습니다. 지금은 맨해튼의 스타트업 회사에서 분산 처리, 빅데이터, 머신러닝과 관련된 프로그램을 개발하면서, 여러 매체에 글을 기고하고, 팟캐스트 방송 〈나는 프로그래머다〉 호스트로 활약하고 있습니다. 지은 책으로 《임백준의 대살개문》 《누워서 읽는 알고리즘》 《팟캐스트 나는 프로그래머다 1,2》 등이 있습니다. 현재, 미국 뉴저지에서 아내와 두 딸과 함께 살고 있습니다. baekjun.lim@gmail.com

목차
목차 1장. 렉스와 야크 가장 간단한 렉스 프로그램 = 29 렉스 이용한 단어 인식 = 29 기호 테이블 = 38 문법 = 43 파서와 렉서의 의사 소통 = 45 언어 요소 분석기 = 46 야크 파서 = 48 규칙절 = 50 렉스와 야크의 실행 = 54 렉스와 손수 작성한 렉서의 비교 = 55 연습 문제 = 58 2장. 렉스 이용하기 정규 표현식 = 60 정규 표현식의 예 = 63 단어 세기 프로그램 = 67 명령행 파싱 = 74 시작 상태 = 79 C 소스 코드 분석기 = 83 요약 = 87 연습 문제 = 87 3장. 야크 이용하기 문법 = 90 재귀 규칙 = 91 이동/감소 파싱 = 92 야크에서 파싱할 수 없는 문법 = 94 야크 파서 = 95 정의절 = 96 규칙절 = 96 기호 값과 동작 = 97 렉서 = 98 간단한 파서 컴파일 및 실행 = 100 산술 표현식과 모호성 = 100 우선 순위 규칙을 사용하지 말아야 할 때 = 105 변수와 타입을 갖는 토큰 = 106 기호 값과 %union = 107 기호 테이블 = 110 함수와 예약어 = 115 기호 테이블의 예약어 = 116 교환 가능한 함수와 변수명 = 118 Make를 이용한 파서 구축 = 123 요약 = 124 연습 문제 = 125 4장. 메뉴 생성 언어 MGL 개요 = 127 MGL 개발 = 130 MGL 구축 = 142 초기화 = 146 화면 처리 = 149 종료 = 153 샘플 MGL 코드 = 156 연습문제 = 162 5장. SQL 파싱 SQL 개요 = 166 관계형 데이터베이스 = 166 관계의 구성 = 168 SQL을 사용하는 세 가지 방법 = 169 구문 검사기 = 171 렉서 = 172 에러와 메인 루틴 = 177 파서 = 178 정의 = 179 최상위 규칙 = 179 스키마 서브-언어 = 180 모듈 서브-언어 = 187 조작 서브-언어 = 189 잡동사니 = 204 구문 검사기의 사용 = 204 임베디드 SQL = 205 렉서에 가한 변경 = 206 파서에 가한 변경 = 208 보조 루틴 = 209 전처리기 이용하기 = 210 연습문제 = 211 6장. 렉스 명세서 참조 렉스 명세서의 구조 = 213 정의절 = 214 규칙절 = 214 사용자 서브루틴 = 215 BEGIN = 215 버그 = 216 모호한 미리 보기 = 216 AT&T 렉스 = 217 플렉스 = 217 문자 변환 = 218 컨텍스트 감지 = 219 왼쪽 컨텍스트 = 219 오른쪽 컨텍스트 = 221 정의(대체) = 222 ECHO = 223 Include 연산(파일의 논리적 포함) = 223 yywrap()을 이용한 파일 체인 = 224 파일 포함 구조 = 224 문자열에서 읽어들이는 입력 = 226 AT&T 렉스 = 226 플렉스 = 226 아브락사스 피시렉스 = 227 MKS 렉스 = 228 POSIX 렉스 = 228 input() = 228 내부 테이블(%N 선언) = 229 렉스 라이브러리 = 231 main( ) = 231 다른 라이브러리 루틴 = 231 행 번호와 yylineno = 232 리터럴 블록 = 232 한 프로그램에 존재하는 여러 개의 렉서 = 233 결합된 렉서 = 233 여러 개의 렉서 = 234 output() = 238 렉서가 생성한 렉서의 이식성 = 239 렉스 명세서 이식 = 239 생성된 C 렉서 이식 = 240 정규 표현식 구문 = 241 메타 문자 = 241 POSIX 확장 = 245 REJECT = 245 yylex()에서 값 리턴하기 = 246 시작 상태 = 247 unput() = 250 yyinput(), yyoutput(), yyunput() = 250 yyleng = 251 yyless() = 251 yylex() = 252 yylex() 안의 사용자 코드 = 253 yymore() = 254 yytext = 254 yytext 확장 = 255 yywrap() = 257 7장. 야크 문법 참조 야크 문법의 구조 = 259 기호 = 260 정의절 = 260 규칙절 = 261 사용자 서브루틴절 = 261 동작 = 261 규칙에 내장된 동작 = 262 내장 동작을 위한 기호 타입 = 263 사라져가는 기능 = 264 모호성과 충돌 = 264 충돌의 타입 = 264 야크에 존재하는 버그 = 266 실제 버그 = 266 무한 재귀 = 267 실제 버그가 아닌 것 = 268 끝 표시기 = 269 에러 토큰과 에러 복구 = 269 %ident 선언 = 270 상속된 속성($0) = 270 상속된 속성을 위한 기호 타입 = 272 렉서의 피드백 = 272 리터럴 블록 = 274 리터럴 토큰 = 275 야크 파서의 이식성 = 276 야크 문법 이식 = 276 생성된 C 파서 이식 = 277 우선 순위, 결합 법칙 그리고 연산자 선언 = 277 우선 순위와 결합 법칙 = 278 연산자 선언 = 279 우선 순위와 결합 법칙 이용한 충돌 해소 = 279 우선 순위의 전형적인 이용 = 280 재귀 규칙 = 280 왼쪽과 오른쪽 재귀 = 281 규칙 = 282 특수 문자 = 284 시작 선언 = 286 기호 값 = 286 기호 타입 선언 = 286 계산기 예제 = 287 명시적인 기호 타입 = 288 토큰 = 288 토큰 번호 = 289 토큰 값 = 289 %type 선언 = 291 %union 선언 = 291 여러 가지 다른 문법들 = 292 결합된 파서 = 292 여러 개의 파서 = 294 재귀적인 파싱 = 297 여러 개의 파서를 위한 렉서 = 298 y.output 파일 = 299 야크 라이브러리 = 300 main( ) = 300 yyerror( ) = 301 YYABORT = 301 YYACCEPT = 302 YYBACKUP = 302 yyclearin = 303 yydebug와 YYDEBUG = 303 YYDEBUG = 304 yydebug = 304 yyerrok = 304 YYERROR = 305 yyerror( ) = 305 yyparse( ) = 306 YYRECOVERING( ) = 307 8장. 모호성과 충돌 포인터 모델과 충돌 = 309 충돌의 타입 = 313 파서 상태 = 315 y.output의 내용 = 317 y.output 안의 충돌 재검토 = 323 충돌의 흔한 예 = 325 표현식 문법 = 325 IF-THEN-ELSE = 327 중첩 리스트 문법 = 329 충돌 해결 방법 = 330 IF-THEN-ELSE(이동/감소) = 331 루프 안에 있는 루프(이동/감소) = 334 표현식의 우선 순위(이동/감소) = 334 제한된 미리 보기(이동/감소 혹은 감소/감소) = 335 선택 사항의 중복(감소/감소) = 337 요약 = 339 연습 문제 = 340 9장. 에러 보고와 복구 에러 보고 = 342 더 나은 렉스 에러 보고 = 345 에러 복구 = 347 야크 에러 복구 = 348 에러 토큰의 위치 = 351 컴파일러 에러 복구 = 352 연습 문제 = 353 부록 A. AT&T 렉스 에러 메시지 = 357 부록 B. AT&T 야크 옵션 = 365 에러 메시지 = 366 부록 C. 버클리 야크 옵션 = 379 에러 메시지 = 380 치명적인 에러 = 380 일반적인 에러 = 381 경고 = 384 추가적인 정보를 위한 메시지 = 386 부록 D. GNU 바이손 차이점 = 388 부록 E. 플렉스 차이점 = 392 옵션 = 393 에러 메시지 = 395 렉서 예제의 플렉스 버전 = 401 부록 F. MKS 렉스와 야크 차이점 = 406 새로운 기능 = 406 부록 G. 아브락사스 렉스와 야크 차이점 = 410 새로운 기능 = 410 부록 H. POSIX 렉스와 야크 옵션 = 411 차이점 = 412 부록 I. MGL 컴파일러 코드 MGL 야크 소스 = 416 MGL 렉스 소스 = 421 지원을 위한 C 코드 = 422 부록 J. SQL 파서 코드 야크 파서 = 433 상호 참조 = 450 렉스 스캐너 = 457 지원 코드 = 461 용어 해설 = 465 참고 서적 = 473 찾아보기 = 475