textX zadaci

u izradi

Prof. dr Igor Dejanović (igord at uns ac rs)

Kreirano 2020-12-20 Sun 18:16, pritisni ESC za mapu, m za meni, Ctrl+Shift+F za pretragu

Sadržaj

1 Instalacija

  • Kreirati i aktivirati Python virtuelno okruženje:

    $ mkdir JSD
    $ cd JSD
    $ python -m venv venv
    $ source venv/bin/activate     # (venv\Scripts\activate.bat na Windows-u)
    
  • Instalirati textX sa dev zavisnostima:

    $ pip install textx[dev]
    

2 Robot primer

2.1 Uvod

  • Analizirati robot primer
  • Vizualizovati robot meta-model i primere modela. Isprobati i dot i plantUML vizualizacije.
  • Uključiti debug mod i analizirati izlaz

2.2 for petlje u Robot jeziku

Doraditi robot primer tako da omogući for petlje oblika:

for i in 5..10
    up 2
    right i
end

2.3 if iskazi u robot jeziku

Doraditi robot primer tako da omogući if iskaze:

if x > 5
    up 1
end

gde x i y variable predstavljaju tekuću poziciju robota. Posle if iskaza navodi se Bulov izraz sa standardnim operatorima <,>,>=,<=, !=, ==, and, or, not

3 Expression primer

3.1 Uvod

  • Analizirati expression primer
  • Vizualizovati expression meta-model i primere modela
  • Uključiti debug mod i analizirati izlaz

3.2 Pozivi funkcija u expression jeziku

U expression primeru omogućiti pozive standardnim matematičkih funkcija iz math modula.

a = 10;
b = 2 * a + 17;

5 * sin(a + sqrt(b + 50)) - 3 / 18

4 DSL - uslov -> akcija

Napraviti textX gramatiku za parsiranje sledećeg jezika:

action notify_quota_approaching https://somesite.com/api/v1/notify?user={user_id}

on user.current_usage >= 0.8 * max_quota trigger notify_quota_approaching with user_id = user.id
  • U prvom delu se definišu moguće akcije. Svaka akcija počinje ključnom rečju action, ima ime i REST URL koji se poziva (šalje se HTTP GET)
  • Akcija može imati parametre - user_id u primeru
  • Pravila kada se akcija poziva se definišu sa on ... trigger... with iskazima gde se definiše:
    • Logički izraz koji, ukoliko je zadovoljen, dovodi do akcije. Ovaj iskaz može imati standardne logičke operatore and, or, not kao i aritmetčko poređenje <,>, <=, >=, ==, !=.
    • Akcija koju je potrebno pozvati navodi se posle ključne reči trigger
    • Posle ključne reči with navode se vrednosti parametara poziva akcije, razdvojeni zarezima. with deo je opcion.
  • I akcija i on pravila može biti više