Algoritmus 5:

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

Vstup:     Množina DFOLLOW, výhled a varianta kombinátoru alternativní kompozice .
Výstup:     Seznam úspěšných rozkladů získaný aplikací množiny parserů $P$.
Metoda:  

  1. Proveď mělké zanoření přes všechny bezprostředně následující kombinátory alternativní kompozice $V$ (vzhledem k možnému výskytu kolizí v dalších krocích má použití variant kombinátoru alternativní kompozice se zkráceným vyhodnocením smysl). 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. Z parserů, jejichž množiny mají neprázdný průnik, vytvoř alternativní kompozice pomocí kombinátoru $V$ -- získáš tak množinu . Množiny parserů z jsou již disjunktní.

    V případech, kdy došlo ke kolizi, vypiš varování společně se symbolem, který ji způsobil.

    Dle parametrů selektoru vytvoř fragment tabulky (se sloučenými kolizními alternativami) a ulož jej pro pozdější použití ve zvolené reprezentaci.

  4. Jesliže:

    potom .

  5. Pokus se o $\varepsilon$-přechod (alternativy, které obsahovaly ve své množině prázdný řetězec byly sloučeny v kroku 3). Pokud:

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

    pak .

  6. Pokud:

    pokračuj krokem 8. Jinak neexistuje alternativa pro pokračování ve výpočtu a rozklad musí být ukončen -- pokus se vyhledat ve vnořeném selektoru pozici ve vstupním textu a vypiš chybové hlášení. Konec.

  7. Aplikuj parsery z množiny $P$ a výsledky ulož do seznamu úspěšných rozkladů.
Mód pseudoll1/4 lze tedy použít k zrychlení rozkladu libovolného knihovního parseru. Jeho použití není vázáno na žádná omezení kladená na analyzovaný jazyk, jako tomu bylo v případě ll1/4.

V této kapitole se nám podařilo pomocí původní programovací techniky módů implementovat do knihovny kombinátorů parserů schopnost provádět deterministickou syntaktickou analýzu, která má z hlediska praktické použitelnosti největší význam.

Navíc byl připraven mód pro spuštění libovolného parseru vytvořeného v knihovně v pseudodeterministickém módu, jenž umožňuje provádět podstatně efektivnější strukturální analýzu textu než při jinde běžně používáné klasické analýze s návratem.

dvorka 2013-12-31