본문 바로가기

Books/컴파일러 만들기 ✔️7

[컴파일러 만들기] 3장 - 구문 분석 3.0 구문 분석 - 구문 분석: 소스 코드의 구조를 분석하는 과정 (소스 코드 구조의 문과 식을 분석하는 것) - 소스 코드의 구조: 문과 식 - 문: 복합문(다른 문 포함 가능 ex. for, if 문, ...) 단일문(다른 문 포함 불가, ex. return, continue 문, ...) - 문은 식도 포함 가능 ex. if문의 조건식, return문의 반환식, ... - 문은 문과 식을 포함하고, 식은 식을 포함함 3.1 구문 트리와 노드 - 구문 트리: 소스 코드의 구조를 분석해 문과 식의 포함관계를 트리로 표현한 것 (분석된 소스 코드의 구조를 표현하는 트리 자료구조) - 구문 분석 위해 가장 먼저 해야 할 것은 구문 트리를 구성할 노드 정의 - 가장 먼저 정의할 노드 => 구문 트리의 루트.. 2021. 12. 30.
[컴파일러 만들기] 2장 - 어휘 분석 2.0 어휘 분석 - 어휘 분석: 프로그래밍 언어로 작성한 소스 코드 문자열의 어휘를 분석하는 과정 - 소스 코드 문자열: 키워드, 식별자, 연산자, 구분자, 숫자 리터럴, 문자열 리터럴 2.1 어휘와 토큰 - 가장 먼저 해야 할 일 => 소스 코드에 사용되는 어휘 정의 - 어휘의 종류를 열거형으로 나열 (열거형의 멤버 => 문자열 대신할 상수) - 소스 코드 문자열에 포함된 어휘 문자열들을 열거형의 멤버들과 연관시키기 위해 연관 데이터도 작성 - 토큰: 어휘의 종류와 문자열을 묶은 것 - ex. 키워드 for 토큰 => 문자열: 'for', 종류: Kind::For - 토큰 구조체 작성 (쌍이 되는 어휘의 종류와 문자열을 묶어 다루기 위함) - 어휘 분석의 결과는 토큰 구조체의 리스트 // Kind.h.. 2021. 12. 22.
[컴파일러 만들기] 1장 - 시작하며 1.0 시작하며 - 프로그래밍을 잘하기 위해서는? - 어떤 것이든 만들어보기! - 무엇을 만들어야 하는가? - 게임 (좋은 선택지) - 자료구조, 알고리즘, 그래픽, 사운드, 네트워크, 멀티 스레드, 객체지향, 수학 등... - 컴파일러 (권장) - 리스트, 트리, 스택, 재귀, 컴파일 타임, 런 타임, 함수 호출 규약, 프로그래밍 언어 등... - 컴퓨터와 프로그램이 동작하는 원리와 구조를 배울 수 있음 1.1 프로그래밍 언어 - 나만의 프로그래밍 언어 디자인, 실행하는 인터프리터, 컴파일러, 가상머신 제작 가능 1.2 컴파일러 - 컴파일러: 코드를 입력받아 코드를 출력하는 프로그램 (컴파일러 입장) - 입력 받은 코드 => 소스 코드 (프로그래밍 언어로 작성한 문자열 형태의 코드) - 출력 하는 코드.. 2021. 12. 20.
반응형