---
# System prepended metadata

title: hw4 - Kompilatorer (del 1)

---

# 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/)