# Homework 4 - Kompilatorer Del 1: Parsers ## Läxa Läxan denna vecka är att välja ett programmeringsspråk eller hitta på ett eget som uppfyller [kraven](https://hackmd.io/BmynkeDZSxaCCFxQWLISkw#Krav) nedan. Därefter ska ni skriva en grammatik för ert språk i valfri notation t.ex [BNF](https://en.wikipedia.org/wiki/Backus%E2%80%93Naur_form). Sedan ska ni skriva en parser för språket som producerar ett [AST (Abstract Syntax Tree)](https://en.wikipedia.org/wiki/Abstract_syntax_tree) från text. Ni får inte använda er av en parser generator utan den måste vara handskriven. Läxan får implementeras i vilket språk som helst. - Välj ett språk eller kom på ett eget - Detta språk måste uppfylla kraven nedan - Skriv en grammatik för språket i valfri notation - Skriv en parser för språket - Ni får inte användas en parser generator utan parsern måste vara handskriven ### Krav - Aritmetik (+, -, *, /) - Variable assignment (T.ex: a = 5 + c;) - Bara integers behöver stödjas - Output (Skriva ut tal t.ex print(a)) - OBS! endast integers är nödvändigt - If statser - Loopar (av valfri sort) #### 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. ### Utökningar i någorlunda ordning av svårigetsgrad - Funktioner - Fler typer utöver integers - Structs - Input ### Mål Ert programeringspråk ska kunna användas för att implementera ett program som genererar fibonacci talen. ## Resurser - [Slides](https://docs.google.com/presentation/d/1T87Ck_P976YHfDJylm5j-dBI0YqFumxt_J6ygKpWsRg/edit?usp=sharing) - [BNF Playground](https://bnfplayground.pauliankline.com/)