Algoritmus 4:

Výběr parseru v alternativní kompozici v módu ll1/4.

Vstup:     Množina DFOLLOW a výhled .
Výstup:     Seznam úspěšných rozkladů získaný aplikací parseru $P$.
Metoda:  

  1. Proveď mělké zanoření přes všechny bezprostředně následující varianty kombinátorů alternativní kompozice. Získáš tak množinu všech alternativ, jež přicházejí v úvahu pro pokračování v rozkladu.

  2. Použij mód first/0 pro výpočet množin jednotlivých alternativ.

  3. Ověř, zda mezi množinami došlo ke konfliktu, tj.:

    V případě kolize přejdi do 6, jinak pokračuj krokem 4.

    Vytvoř fragment tabulky a ulož jej dle parametrů selektoru pro pozdější použití ve zvolené reprezentaci.

  4. Jestliže:

    potom a přejdi do 7, v opačném případě pokračuj v 5.

  5. Protože množina , která by obsahovala symbol neexistuje, pokus se o $\varepsilon$-přechod. Nejvýše jedna z alternativ může obsahovat ve své množině FIRST prázdný řetězec (ověřeno v kroku 3). Pokud:

    proveď výpočet množiny DFOLLOW dle [*]. Jestliže:

    pak a přejdi do 7, v opačném případě neexistuje alternativa umožňující pokračování ve výpočtu a rozklad musí být ukončen -- krok 6.

    Vzájemná disjunktnost celé DFOLLOW a množin FIRST se vzhledem k časové složitosti této operace neověřuje.

  6. Chyba -- pokus se vyhledat ve vnořeném selektoru pozici ve vstupním textu a vypiš chybové hlášení.
  7. Aplikuj parser $P$.

Pokud je v selektoru módu povoleno ukládání, první spuštění parseru sice ještě není příliš rychlé, ale při dalších jeho aplikacích se již jejich abstraktní interpretace provádí jen výjimečně a využívají se při ní již dříve získaná data.

dvorka 2013-12-31