Dokumentační komentář predikátu

Za otevíracím tokenem komentáře následuje až po konec řádku signatura predikátu. Signatura se skládá z funktoru a v případě, že je arita predikátu větší než 0, rovněž z uzávorkovaného seznamu názvů parametrů oddělených čárkami. Argumenty musejí být jména proměnných platná v jazyce Prolog, kterým musí předcházet jeden ze znaků '+', '-' nebo '?' dle módu, ve kterém se nacházejí:

$+$ 		...vstupní parametr

$-$ ...výstupní parametr
$?$ ...vstupně výstupní parametr
Signatura není ukončena tečkou, ale oddělovačem nového řádku. Komentář může obsahovat sekce Text, Arg, Example.
Sekce Text je určena pro detailní popis predikátu. Uvnitř sekce text mohou být řádky formátovány pomocí následujících znaků na jejich počátku:
p    ...    nový odstavec.
v    ...    prostředí verbatim (LATEX) resp. <pre> (HTML). Pokud za sebou takto formátované řádky následují jsou spojeny
Sekce Arg: za klíčovým slovem je uvedeno jméno argumentu ze signatury predikátu. Následují řádky s detailním popisem predikátu.
Sekce Example: řádek s klíčovým slovem zůstává prázdný. Sekce pokračuje výpisem příkladu. Obsah této sekce je uzavřen v prostředí verbatim (LATEX) resp. <pre> (HTML).

Ukažme si nakonec příklad dokumentačního komentáře predikátu:

/** 	expression(+Operators, +Evaluator, ?Wrapper)
Text:   Parser výrazů obsahujících unární i binární operátory 
        s libovolným počtem priorit. 
p       Z uživatelského zápisu je vygenerován parser, který je         
        následně použit pro rozklad vstupního textu. Dále je 
        pro zpracování v době rozkladu specifikován 
        vyhodnocovač.
Arg:    Operators:
        Výčet přípustných operátorů je seznam seznamů definic 
        jednotlivých operátorů. Definice jednoho operátoru je 
        uložena  ve struktuře, jejíž funktor udává typ
        asociativity (xf, yf, fx, fy, xfx, xfy, yfx, yfy),
        první argument je token ve vstupním textu a druhý
        parametr funktor fce, která se má použít při
        vyhodnocování. Definice operátorů o stejné precedenci
        jsou sdruženy v jednom seznamu. Seznamy operátorů
        o stejné precedenci jsou konečně uloženy v celkovém
        výčtu,  zde jsou seřazeny od nejvyšší precedence
        k nejnižší.
p       Například:
v               [[yfx("+",'+'),yfx("-",'-')],
v                [yfx("*",'*'),yfx("/",'/'),yfx("//",'//')],
v                [fx("!",'!')]]
Arg:    Evaluator
        Jméno predikátu, který má provádět vyhodnocování.
Example:
        ?- expression([[yfx("+",'+'),yfx("-",'-')],
        |              [yfx("*",'*'),yfx("/",'/')],
        |              [xfy("^",'^')]],
        |              arieval,
        |              quickS("3^2^2+2*3^6-7/8*9")+L).
*/
a jak bude vysázen v rámci LATEXové dokumentace:
expression/3 expression(+Operators,+Evaluator,?Wrapper)

Parser výrazů obsahujících unární i binární operátory s libovolným počtem priorit.

Z uživatelského zápisu je vygenerován parser, který je následně použit pro rozklad vstupního textu. Dále je pro zpracování v době rozkladu specifikován vyhodnocovač.
Operators: Výčet přípustných operátorů je seznam seznamů definic jednotlivých operátorů. Definice jednoho operátoru je uložena ve struktuře, jejíž funktor udává typ asociativity (xf, yf, fx, fy, xfx, xfy, yfx, yfy), první argument je token ve vstupním textu a druhý parametr funktor fce, která se má použít při vyhodnocování. Definice operátorů o stejné precedenci jsou sdruženy v jednom seznamu. Seznamy operátorů o stejné precedenci jsou konečně uloženy v celkovém výčtu, zde jsou seřazeny od nejvyšší precedence k nejnižší.

Například:

[[yfx("+",'+'),yfx("-",'-')],
[yfx("*",'*'),yfx("/",'/'),yfx("//",'//')],
[fx("!",'!')]]

Evaluator: Jméno predikátu, který má provádět vyhodnocování.

Příklad:
 ?- expression([[yfx("+",'+'),yfx("-",'-')],
 |              [yfx("*",'*'),yfx("/",'/')],
 |              [xfy("^",'^')]],
 |              arieval,
 |              quickS("3^2^2+2*3^6-7/8*9")+L).

dvorka 2013-12-31