어휘 분석기 작성의 기초를 어디서 배울 수 있습니까?


86

어휘 분석기를 작성하는 방법을 배우고 싶습니다. 내 대학 과정에는 파서 (및 함께 진행할 어휘 분석기)를 작성해야하는 과제가 있었지만 이것은 지침이나 피드백 (마크 이상)없이 우리에게 주어 졌기 때문에 실제로 많은 것을 배우지 못했습니다.

이 주제를 검색 한 후에는 내가있는 곳보다 몇 걸음 앞서 있다고 느끼는 영역에 초점을 맞춘 상당히 진보 된 글만 찾을 수 있습니다. 좀 더 복잡한 언어를 토큰 화하는 것을 조사하기위한 기초로 사용할 수있는 매우 간단한 언어에 대한 어휘 분석기를 작성하는 기본에 대한 토론을 원합니다.

이 단계에서는 모범 사례 나 최적화 기술에는 관심이 없지만 필수 사항에 초점을 맞추는 것을 선호합니다. 시작하는 데 유용한 리소스에는 어떤 것이 있습니까?

답변:


73

기본적으로 어휘 분석기를 작성하는 두 가지 주요 접근 방식이 있습니다.

  1. 이 작은 튜토리얼을 추천 합니다 .
  2. lex 와 같은 렉서 생성기 도구를 사용합니다 . 이 경우 선택한 특정 도구에 대한 자습서를 읽는 것이 좋습니다.

또한 LLVM 문서 에서 Kaleidoscope 튜토리얼 을 추천하고 싶습니다 . 간단한 언어의 구현을 통해 실행되며 특히 작은 어휘 분석기를 작성하는 방법을 보여줍니다. 튜토리얼의 C ++ 및 Objective Caml 버전이 있습니다.

주제에 대한 고전 교과서는 컴파일러 : 원리, 기법 및 도구로 도 알려진 드래곤 북입니다. 그러나 이것은 아마도 "상당히 진보 된 쓰기"의 범주에 속할 것입니다.


4
Kaleidoscope 튜토리얼은 저에게이 질문에 정말로 답한 부분이었습니다.
Robert Byers

손으로 LL (1) 파서를 작성하는 방법에 대한 자세한 내용은 this answer를 참조하십시오 .
jchook 19

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.