Přenos a distribuce dat s globálním charakterem

Poslední skupina módů je určena pro přenos dat, která se využívají v průběhu výpočtu. Ukážeme si také jak lze vytvářet uživatelské módy.

Uživatelský mód je režim parseru, jenž lze vytvořit bez zásahu do zdrojového kódu knihovny. Pro jeho zavedení je zásadní implicitní klauzule procedury item:

item(I+L):-
        deBug(modewarn,['(item) Implicit mode selector:',I+L,nl]),
        :-@ [I,L].
Díky ní se v případě selektoru módu, který se neunifikoval s žádnou z klauzulí primitiva item volá predikát:
:-@ [I,L]
který jako první parametr dostává selektor módu ke kterému před zavoláním připojí parametr $L$, v němž může být po návratu vydán seznam úspěšných rozkladů.

Definice cílového predikátu je na tvůrci módu a může být umístěna v jeho zdrojovém kódu. Je na něm, aby implementoval predikát, který má stejný funktor jako selektor a o $1$ větší aritu.

Celý postup si ukážeme na příkladu.



Subsections

dvorka 2013-12-31