antlr visitor pattern(방문자 패턴)

ozon1000의 이미지

안녕하세요! 이번에 처음 antlr을 사용하게 된 초보자입니다.

antlr의 방문자 패턴이라는 것을 정확하게 알고싶은데, 제가 아직 잘 몰라서 그런지 모르겠으나 속 시원한 관련 홈페이지를 아직 찾지 못했습니다.

혹시 많은 선배님들, 괜찮은 서적이나 링크 알고계신것이 있으시면 알려주시면 공부하는데 큰 도움이 될 것 같습니다.
읽어주셔서 감사드립니다.!!!

...!의 이미지

antlr이 방문자 패턴을 사용하는 파서를 만들어주기는 하지만 방문자 패턴이 antlr 고유의 방식인 것은 아닙니다. 방문자 패턴은 일반적으로 사용되는 디자인 패턴 중 한 가지입니다. "디자인 패턴 (https://en.wikipedia.org/wiki/Software_design_pattern)"은 프로그래밍에서 흔히 사용되는 문제 해결 전략에 이름을 붙인 것을 말합니다. 같은 이름의 책 (https://en.wikipedia.org/wiki/Design_Patterns)에서 유래한 단어입니다. 프로그래밍 패러다임에 따라 문제 해결 전략이 달라지기 때문에 함수형 디자인 패턴, OOP 디자인 패턴 등으로 구분해서 부르기도 하지만, 아무 수식어 없이 그냥 디자인 패턴이라고 하면 보통 OOP 적인 문제 해결 전략을 말합니다.

제 생각에는 visitor pattern을 바로 공부하는 것보다 strategy pattern, observer pattern, visitor pattern의 순서로 공부하는 것이 더 좋을 것 같습니다. 사실 파서 구현을 위해 선택할 수 있는 전략은 visitor pattern 뿐만 아니라 strategy pattern, observer pattern도 가능하고 그 쪽이 더 이해하기는 쉽습니다. visitor pattern은 single/multiple dispatch와 상속에 대한 충분한 이해를 필요로합니다.

디자인 패턴에 대한 책, 웹 사이트는 아주 아주 많습니다만 뭘 추천해야할 지는 모르겠군요. 그렇다고 직접 설명하자니 들여야할 시간 때문에 엄두가 안나네요. 일단 각 패턴에 대한 위키피디아 항목에서부터 시작해서 이리 저리 찾아보시면 될 것 같습니다.

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.