Book/Concepts of Programming Language 2

4. Lexical and Syntax Analysis

4.1 Introduction 컴파일러 설계의 필수 단계컴파일러를 제대로 배우려면 한 학기 정도의 집중적인 설계·구현 경험이 필요하다.그 과정의 첫 파트가 어휘 분석(lexical analysis)·구문 분석(syntax analysis)이다.특히 구문 분석기(parser)는 컴파일러의 “심장” 역할을 하며, 이후 단계인 의미 분석기(semantic analyzer)와 중간 코드 생성기가 파서의 결과에 의존한다.⇒ 핵심 개념: 컴파일 파이프라인에서 파서가 전체 흐름을 주도한다.프로그래밍 언어 교재에서 컴파일러 단원을 다루는 이유문법(grammar)의 자연스러운 응용: 3장에서 배운 BNF 등 문법 이론을 실제로 쓰는 가장 직접적인 예시가 파서 설계이다.응용 범위의 확장성: 컴파일러를 쓰지 않는 프로그램(..

Chapter3: Describing Syntax and Semantics

3.1 Introduction (서론) 프로그래밍 언어를 간결하면서도 이해하기 쉽게 기술하는 작업은 매우 어렵지만, 그 언어의 성공을 위해 반드시 필요하다.과거 ALGOL 60과 ALGOL 68이라는 언어는 매우 간결하고 형식적인 설명을 사용했으나, 당시 사람들에게 익숙하지 않은 새로운 표기법(notation) 때문에 오히려 이해하기가 어려웠고 그 결과 두 언어 모두 널리 받아들여지지 못했다. 반대로, 어떤 언어는 너무 간략하고 비형식적인 설명 때문에 조금씩 다른 여러 방언(dialect)이 생겨 혼란이 발생하기도 했다. 언어를 설명하는 과정에서 중요한 어려움 중 하나는 이 언어 설명을 읽고 이해해야 하는 사람들이 매우 다양하다는 점이다. • 초기 평가자(initial evaluators)언어의 초기 평..