---
# System prepended metadata

title: 'Homework 4 - Kompilatorer Del 1: Parsers'

---

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