Skip to content

Instantly share code, notes, and snippets.

@brokenpylons
Last active June 4, 2024 21:41
Show Gist options
  • Save brokenpylons/1c764a59340c6dab67a01b8ebfbb9018 to your computer and use it in GitHub Desktop.
Save brokenpylons/1c764a59340c6dab67a01b8ebfbb9018 to your computer and use it in GitHub Desktop.
DG:
1. Prepišeš produkcije X_0 -> X_1 ... X_n v obliko:
X_0 -- zgornja vrstica
/ | \
X_1...X_n -- spodnja vrstica
2. Dodaš atribute za vsak neterminal, podedovane na levo, pridobljene na desno.
podedovani a b c
pridobljeni x y z
a b c X x y z
3. Dodaš povezave iz atributne gramatike.
DG* in IO:
1. Prepišeš DG, to je začetno stanje DG*.
2. Za IO napišeš vse neterminale in dodaš atribute (na začetku je brez povezav).
3. Prepišeš vse povezave iz zgornjih vrstic DG* v IO.
4. Prepišeš vse povezave iz IO v spodnje vrstice DG*.
5. Za vsako verigo povezav iz podedovanega atributa a v pridobljeni atribut x za neterminal X dodaš povezavo iz a v x v IO.
6. Dokler je mogoče dodati še kakšno povezavo greš nazaj na 4.
Pogledaš, če je kje cikel v DG* (za vsako posamezno produkcijo).
Vrstni red:
1. Vse atribute in povezave iz DG* prepišeš v en graf.
2. Najdeš topološko soltiranje.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment