메뉴 바로가기 검색 및 카테고리 바로가기 본문 바로가기

한빛출판네트워크

한빛랩스 - 지식에 가능성을 머지하다 / 강의 콘텐츠 무료로 수강하시고 피드백을 남겨주세요. ▶︎

IT/모바일

낯설은… 그러나 효율적인…

한빛미디어

|

2003-01-07

|

by HANBIT

8,771

저자: 김영익

이 책은 아마도 그동안 읽어본 한빛 도서 중에 가장 낯선(?) 책이 아닐까 싶다. 렉스(lex)와 야크(yacc)는 컴파일러 개발이나 파서 등을 이용하는데 사용되는 도구이다. 필자는 자바 개발자이기 때문에 C 코드를 사용하는 도구를 사용하는데 익숙치 않다. 자바 진영에서는 대부분의 파서가 이미 제공되거나(XML 파서) 토크나이저 클래스를 이용하여 직접 개발을 하기 때문이 아닐까 싶다. 책을 살펴 보면서 예전에 컴파일러 과목을 듣던 아련한 기억도 되살리게 된 계기가 되었다. 그럼 이제부터는 『lex와 yacc, 개정판』의 각 장을 하나씩 자세하게 살펴보도록 하겠다.


lex와 yacc, 개정판

참고 도서

lex와 yacc, 개정판
존 레빈, 토니 매이슨, 더그 브라운


1장. 렉스와 야크
1장은 준비운동이다. 렉스와 야크에 들어 가기 전에 간단한 기본 개념과 사용법에 대해서 설명한다.

2~3장. 렉스, 야크 이용하기
본격적으로 렉스와 야크를 간단한 영문법을 인식하거나 C 소스 분석기, 계산기를 예로 설명한다.

4장. 메뉴생성언어
윈도우 프로그램에서는 보기 힘든 콘솔 메뉴를 생성하는 법을 배운다.

5장. SQL 파싱
이번 개정판에서 새로 추가된 부분이다. 여태 SQL을 사용하는 법을 익히느라 힘들었는데, 이제는 파싱까지...

6장. 렉스 명세서 참조/7장. 야크 문법 참조
6, 7장은 렉스와 야크가 어떻게 구성되어 있는지 어떠한 문법을 사용하는지 보여준다. 고급 기능을 사용하려면 참고해야 할 것이다.

8장. 모호성과 충돌
인간 대 인간의 언어는 문법이 약간 틀려도 대충 의미 전달이 가능하나 기계는 그렇지 못하다. 렉스와 야크를 사용하면서 그런 모호함이 어떤 것이 있으며 충돌을 해소 하는 법을 알려준다.

9장. 에러 보고와 복구
렉스와 야크를 사용하면서 에러 처리하는 법에 대해 설명한다.

부록
이 책은 부록 부분에 상당한 볼륨을 두었다. 각각의 유닉스 버전에 따른 렉스와 야크의 차이점을 설명하기도 하고 본문에 나온 예제 코드도 실려 있다.
역시 첨에도 낯설다고 말했듯이 이 책은 초보 개발자나 컴파일러 같은 컴퓨터 공학 이론이 없는 독자들에겐 무리라고 생각이 든다. 당연히 C 프로그램은 어느 정도 이해가 가능해야 한다. 컴파일러 수업을 들으면서 농땡이 치던 것이 후회스러울 정도이다. 개인적으로 아무리 잘 설명한다 하더라도 잘 그린 그림 하나가 낫다고 생각하는데, 이 책은 그림이 너무 없어 보인다. 간결한 그림으로 쉽게 이해할 수 있었으면 하는 바람이다.

각 장의 뒤에는 연습 문제가 있는데, 답이 없어서 아쉽다. 나처럼 머리가 나쁜 독자는 연습 문제와 열심히 씨름을 한 후에도 정답인지 아닌지 알 길이 없다. 그렇다고 해서 이 책이 좋은 책이 아니라는 것은 절대 아니다. 옆에 있는 다른 개발자에게 물었더니 렉스와 야크를 사용하면 대부분의 업무에서 상당 부분 효율을 얻을 수 있다고 한다. 그동안 개발을 해오면서 상당 부분이 텍스트를 파싱하고 처리하는 그런 일이란 것을 알기에 가만히 고개를 끄덕였다.
TAG :
댓글 입력
자료실

최근 본 상품0