https://llvm.org/docs/tutorial/
LLVM tutorial chapter 3를 보고 공부한 내용을 블로그로 정리해 보았다.

2장에서 parser, lexer로 구축한 AST를 LLVM IR로 변환하는 과정을 chapter 3 에서 다루었다.

모든 표현식 노드들의 공통 부모 클래스
codegen()은 AST를 LLVM IR로 변환해 주는 함수Value는 SSA값을 나타내는 클래스SSA정적 단일 할당 레지스터로, 재할당이 불가능NumberExprAST는 "1.0"과 같은 숫자 리터럴을 표현하는 AST노드
TheContext : LLVM 전체 작업의 Context로, 메모리나 타입 시스템 등을 관리Builder : LLVM 명령어를 만드는 도우미 클래스로 SSA 형식의 명령어를 만들고, 어디에 넣을지 위치를 추적TheModule은 함수와 전역 변수를 포함하는 LLVM 구조체LogError : 코드 생성 중에 발견된 오류를 보고하는데 사용하는 메소드
숫자 상수를 LLVM IR로 변환
ConstatntFP : 부동소수점 상수를 표현하는 클래스

변수를 LLVM IR로 변환

산술연산 AST를 LLVM IR 명령어로 생성
재귀적으로 AST를 탐색하며 LLVM IR로 변환
CreateUIToFP : bool 타입을 double 타입으로 변환

AST로 표현된 함수 호출부를 LVLM IR 명령어로 변환

함수 프로토타입을 LLVM IR로 변환
def foo(x y)...
함수 프로토타입

함수 전체를 LLVM IR로 변환
NameValues에 등록