# hw4 - Kompilatorer (del 1) Skapa ett offentligt repo i organistationen med namnet `[kth-id]-compiler` Definiera ett programmeringsspråk (eller sno ett) och beskriv syntaxen på [BNF](https://en.wikipedia.org/wiki/Backus%E2%80%93Naur_form) (eller liknande). Denna vecka ska ni skriva en Parser som bygger ett [AST (Abstract Syntax Tree)](https://en.wikipedia.org/wiki/Abstract_syntax_tree) från source-code i ert språk. (Ni får inte användas en parser generator utan parsern måste vara handskriven) **Tips:** skriv en funktion för att printa ut AST:n. ## Krav Ert språk bör hantera: - Aritmetik (+, -, *, /) - Variable assignment - Bara integers behöver stödjas - Output (Skriva ut tal t.ex print(a)) - OBS! endast integers är nödvändigt - If-statser (eller liknande conditionals) - Loopar (av valfri sort) ### Mål Ert programeringspråk ska kunna användas för att implementera ett program som genererar fibonacci talen. #### Funktionella språk Om ni vill implementera ett funktionellt språk är det också tillåtet, då kan ni såklart behöva byta vissa krav. Så länge programmet kan implementera fibonacci är det okej. ## Resurser - [BNF Playground](https://bnfplayground.pauliankline.com/) - [slides](https://docs.google.com/presentation/d/1VLF94OharEuVYwoC7xxA-LolV_c3j1VzkTsAJ1GjWiY/edit?usp=sharing) - [Bra bok om kompilatorer](https://www3.nd.edu/~dthain/compilerbook/) - [Relativt enkelt bibliotek för kodgenerering](https://c9x.me/compile/)