Selektory

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ě:

$parser(+Arg_{1}, ..., +Arg_{n}, +Sel(Par_1, \dots, Par_n) + -LOS)$
kde $Sel$ je selektor některého z módů a $Par_i$ 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