yacc 와 lex 에 대해서 공부하고 싶습니다. 도와주세요 ㅠ

bkc625의 이미지

안녕하세요

이번에 pcap 라이브러리를 보다가 BPF 에 대해서 조사하게 되었습니다.

소스코드를 보던 중 yacc 와 lex 를 이용해서 c 파일을 만들었더라구요..

yacc 와 lex 에 대해선 아무것도 몰라 이래저래 검색하던중

국내 유일한 서적이라고 하는 오라일리에서 나온 책을 검색해봤는데.. 혹평 이더라구요..

배경설명도 부실하고 예제의 결과물도 없고 심지어 예제도 틀린것이 있다고..

회사일이라 빨리 습득을 해서 진행을 해야하는데 마냥 시간이 주어지지도 않아서..

여러분들이 알고 계신 좋은 사이트나 도움 될만한 것들을 부탁드립니다. ㅠ

뎃글이 많아지고 추후 어떤이들이 yacc lex 라는 키워드로 검색했을때 이 글이 나올테고 저 처럼 헤메시는 분들에게 도움이 되길 바랍니다. :)

klenui의 이미지

lex 와 yacc 그 자체는 딱히 공부할 것이 없습니다... 오라일리 책도 전반부 간단한 설명과 후반부 예제(SQL등)으로 구성되어 있던 것으로 기억하는데..
딱히 할말이 없어서 그럴 겁니다.

parser generator 자체에 관심이 있으시다면 lex & yacc 보다는 자바쪽의 antlr로 접근해 보시길 권해드립니다.
보다 깔끔한(?) 코드와 문서들이 있어서 공부하시기 나을겁니다.

jick의 이미지

일반적으로 yacc와 lex를 쓴다면 십중팔구 호환제품(?)인 GNU bison과 flex를 쓰게 될 텐데요, 그냥 해당 프로젝트 웹사이트에 가셔서 bison manual, flex manual을 다운받아서 첨부터 끝까지 (혹은 필요한 부분만) 읽어보시면 됩니다. 별로 길지도 않고 잘못된 부분도 없고 가장 믿을만한 문서일 듯합니다. (뭐, 물론 영어의 압박...이 있을 수 있겠습니다만. -_-)

예전에 일하던 회사에서는 파서를 만들어야 해서 팀원들이 bison, flex 매뉴얼을 제본해서 한부씩 갖고 있었죠. 꽤 유용하더군요.

다만 yacc 혹은 bison이 어떻게 동작하는지 제대로 이해하려면 LALR 파서에 대한 기본적인 지식이 필요한데, 대학교에서 컴파일러 수업을 들으셨다면 좋지만 아니라면 컴파일러 관련 교재를 한권 사셔서 읽어보시는 게 제일 좋은데 그러면 이해하는 데만 한두 달 걸릴 거라서... 으음...;;

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.