오토마타와 컴파일러 01 - 유한 오토마타
유한 오토마타가 무엇이고, 왜 컴파일러를 이해하기 위해 여기서부터 시작해야 하는지
유한 오토마타와 형식 언어부터 컴파일러 구현까지
언어 처리 이론과 실제 컴파일러 구현 사이의 연결을 함께 보고 싶은 독자.
유한 오토마타가 무엇이고, 왜 컴파일러를 이해하기 위해 여기서부터 시작해야 하는지
정규 표현식이 유한 오토마타와 어떻게 동치이며, 정규 언어의 경계는 어디인가
정규 언어의 한계를 넘어서는 문맥 자유 문법의 구조와 역할
유한 오토마타에 스택을 추가하면 어떤 계산 능력을 얻게 되는가
컴파일러가 왜 여러 단계로 나뉘며, 각 단계는 어떤 역할을 하는가
소스 코드를 토큰으로 쪼개는 어휘 분석기의 원리와 오토마타 이론이 실제로 적용되는 지점
재귀 하강 파서와 LL(1) 파싱의 원리, 그리고 하향식 접근법의 강점과 한계
시프트-리듀스 파싱과 LR 파서의 원리, 그리고 파서 생성기가 동작하는 방식
파스 트리와 AST의 차이, AST 노드 설계, 그리고 컴파일러 프론트엔드와 백엔드를 잇는 다리
파서가 잡지 못하는 오류를 의미 분석이 어떻게 잡아내는지, 그리고 타입 검사가 프로그램의 안전성을 보장하는 원리
컴파일러가 왜 중간 표현을 거치는지, 그리고 최적화가 어떻게 프로그램을 더 빠르게 만드는지
최적화된 중간 표현이 실제 기계어로 변환되는 과정과, 오토마타 이론에서 시작하여 컴파일러 구현까지 이어지는 여정의 마무리