Selektory módů hrají v celém mechanismu klíčovou roli. Určují totiž
způsob výpočtu uvnitř jednotlivých procedur. Selektor je
jednoznačný identifikátor módu, který vybírá v definici
daného parseru resp. konstruktoru správnou klauzuli určenou pro
daný mód. Tvůrce parseru pak může pro jednotlivé případy definovat
různé chování parseru dle aktuálního módu, jenž je určen právě selektorem.
Klauzuli se vstupní částí vstupně/výstupního termu, která se unifikuje
se všemi selektory budeme nazývat implicitní cestou výpočtu
nebo klauzulí implicitní.
Z vnějšku, tj. z pohledu programátora, postačí vytvoření jediné instance
parseru. Použitím různé kombinace selektorů pak bude možné získávat
nové módy a tím parsery s novými vlastnostmi, bez nutnosti jakýchkoli
zásahů do zdrojového kódu.
Nejdříve rozšíříme konvenci rozhraní parserů z části
tak, že selektor bude zapouzdřovat vstup ve formě vstupně/výstupního
termu a další selektory budou moci být do sebe navzájem vnořovány.
Způsob vnoření bude zpravidla pro jednotlivé selektory specifický --
viz obrázek
na straně
.
Modifikujme tedy rozhraní parserů následovně:
kde
je selektor některého z módů a
je buď běžný parametr
nebo vnořený selektor. Hloubka vnoření jednotlivých selektorů může
být obecně libovolná.
dvorka
2013-12-31