Deterministické parsery

V tomto odstavci vše, co jsme si v této kapitole připravili, konečně spojíme a vytvoříme mód ll1/4, ve kterém budou parsery provádět deterministickou syntaktickou analýzu jazyků generovaných LL(1) gramatikami.

Selektor módu ll1/4 má následující signaturu:

kde jednotlivé parametry mají následující význam:

Options
je parametr s volbami módu, který obsahuje tři parametry Algorithm, DbfFirst zřetězené v tomto pořadí operátorem ^/2:
Algorithm
určuje způsob výpočtu množiny DFOLLOW viz [*].
Dbf
rozhoduje o tom, zda se mají jednou vypočtené množiny FIRST ukládat pro pozdější použití či nikoli.
First
určuje způsob reprezentace množin FIRST v rozkladové tabulce uvnitř kombinátoru alternativní kompozice.
cond:
reprezentace množin FIRST seznamem podmínek.
enum:
množina FIRST reprezentovaná výčtem, jednotlivý výhled je párován s parserem, který se má v případě tohoto výhledu použít.
bst:
rozkladová tabulka reprezentovaná binárním vyhledávacím stromem, ve kterém je klíčem pro vyhledávání aktuální výhled. Pro tento výhled se pak najde odpovídající parser z původní alternativní kompozice.
set:
množina FIRST reprezentovaná výčtem výhledů, pro který se má daný parser použít.
LookAhead
obsahuje výhled parseru ve vstupním textu.
DFOLLOW
je parametr pro přenos průběžně vypočítávané dynamické množiny FOLLOW, je inicializován příznakem konce vstupu.
Selector
je selektor vnořeného módu dle obrázku [*]
Spouštění parseru v tomto módu se typicky provádí pomocí predikátu invokeLL1.

Pro mód ll1/4 jsou rozhodující procedury variant kombinátorů alternativní kompozice, ve kterých se provádí rozhodnutí o pokračování výpočtu dle aktuálního výhledu. V průběhu rozkladu využívá ll1/4 módy empty/0first/0 pro abstraktní interpretaci parseru s cílem vytvoření rozkladové tabulky. V kombinátoru alternativní kompozice se při volbě vhodné alternativy postupuje dle následujícího algoritmu:



Subsections
dvorka 2013-12-31