# Homework 4 - Kompilatorer Del 2: Backend Denna delen av läxan handlar om att implementera semantic analysis av era språk samt en backend. Denna backend kan vara i form av att kompilera till något annat språk såsom t.ex C eller generera maskinkod direkt. Om ni vill generera maskinkod kan ni använda er av något bibliotek som QBE, LLVM eller Cranelift. Ni har till och med nästa övning **(1 November)** på er att göra färdigt er kompilator eller interpreter. ## Läxa 1. Skriv färdigt era parsers 2. Implementera semantic analysis * Variabler defninerade * Typer korrekt (Om ni har typer) * Etc.. 3. Implementera en backend till er kompilator ### Alternativ 1 (Kompilator): Kompilera till maskinkod själv eller genom t.ex LLVM eller Cranelift. ### Alternativ 2 (Transpiler): Kompilera till ett annat språk som i sin tur går att kompilera (t.ex C) ## Resurser * [LLVM Guide](https://mukulrathi.com/create-your-own-programming-language/llvm-ir-cpp-api-tutorial/) Genomgång av LLVM IR och LLVMs API * [Officiell tutorial från LLVM](https://llvm.org/docs/tutorial/MyFirstLanguageFrontend/LangImpl03.html) * [QBE compiler backend](https://c9x.me/compile/), QBE är mycket mer simpelt än LLVM * [Self-guided kurs i kompilatorer från cornell (handlar mycket om optimering)](https://www.cs.cornell.edu/courses/cs6120/2023fa/self-guided/) * [Slides](https://docs.google.com/presentation/d/1UdzhkKBtsImnXBwrR7XlmceULV-YJmWSC-JESBN0Log/edit?usp=sharing)