off/2
udržují módy line/2
a lineCol/3
informaci o pozici ve vstupním textu ve formě aktuálního řádku resp.
aktuálního řádku a sloupce. Způsob zavedení těchto módů je stejný jako
v předchozích případech. Jsou vhodné především při výpisech chybových
hlášení -- lze rychle a snadno lokalizovat místo výskytu chyby.
Další z možných aplikací těchto módů je zeštíhlování seznamu úspěšných
rozkladů. V literatuře věnované strukturální analýze textu se někdy při
nedeterministickém výpočtu používá pro výběr nadějné cesty délka
dosud zpracovaného vstupu. Takový přístup můžeme díky módů vyzkoušet
v knihovně konstruktorů parserů i my. Pro tento účel je připraven
mutátor <^>
, jenž je variantou diamantu. Nevydává
však derivaci z hlavy seznamu úspěšných rozkladů, ale derivaci
s největší váhou:
<^>(P,I+TrimL):- I+L :-> P, <^>^(L,_,TrimL).Tuto derivaci hledá ve struktuře LOS pomocný predikát
<^>^
.
Získání váhy se provádí vybalením nejvnějšnějšího vhodného selektoru
(off/2
, line/2
, lineCol/3
)
pomocí predikátu pcGetWeight/2
. V případě rovnosti vah rozhoduje mezi
derivacemi jejich pořadí v seznamu úspěšných rozkladů.
Programátor může rozšířit predikát pcGetWeight/2
tak, aby
pracoval i v jeho vlastních módech.
Tento mutátor byl společně s módem off/2
použit v ukázkové
aplikaci HiLex (viz část ).
dvorka 2013-12-31