Porovná dva nebo více souborů se syntakticky anotovaným textem. Vhodné pro testování úspěšnosti parseru nebo pro porovnávání výsledků dvou a více různých parserů.
porovnat.pl analyza.csts
Porovná soubor analyza.csts se souborem obsahujícím vzorovou
(správnou) analýzu. Cesta ke vzorovému souboru je uvedena
v konfiguračním souboru parser.ini
:
test = /home/zeman/data/test.a
Na standardní výstup vypíše hlášení, ve kterém místo o rozdílech hovoří o chybách.
Do tzv. rozdílového souboru opíše ze souboru analyza.csts ty věty, které obsahovaly alespoň jednu chybu, tj. alespoň jedno slovo zavěšené jinak než ve vzorovém souboru. Jako cesta ke složce s rozdílovým souborem se použije cesta "prac" z konfiguračního souboru. Jméno rozdílového souboru v této složce je dáno konfiguračním parametrem "rozdil":
prac = /home/zeman/programy/parser/pracovni
rozdil = rozdil.csts
V případě, že vzorový a testovaný soubor neobsahují stejný počet vět nebo že některé jejich věty neobsahují shodný počet slov, chování programu není definováno.
porovnat.pl a.csts b.csts
Porovná syntaktické anotace v souborech a.csts a
b.csts. V každém souboru se musí rozhodnout, kterou anotaci
vybere, pokud je jich tam více. Nejdříve hledá ruční anotaci značkou
<g>
, a pokud žádnou nenajde, tak strojovou
<MDg>
(s libovolnou hodnotou atributu
src
). U druhého souboru se snaží nevzít stejnou anotaci
jako u prvního. Pokud je v obou souborech <g> i
<MDg>, vezme z prvního <g> a z druhého
<MDg>. Pokud ani v jednom není <g>, snaží se ve
druhém najít <MDg> s jiným src. Ale když to nejde, vezme
zavděk tím, co je. Dostane-li program jako první parametr cestu ke
vzorovému souboru, bude se chovat velmi podobně, jako kdyby byl
zavolán pouze s parametrem b.csts.
Zdroj anotace, který se má brát z každého souboru, se výše zmíněným způsobem stanovuje podle prvního slova souboru. Na vybrané anotaci se pak trvá i u ostatních slov, i kdyby ji neobsahovala.
Hlášení na standardním rozdílu hovoří o počtu rozdílů, nikoli chyb.
Rozdílový soubor obsahuje všechny anotace (nejen syntaktické) ze
souboru a.csts a dále ty anotace ze souboru b.csts, které se
v a.csts nevyskytly. Anotací se má na mysli SGML/CSTS
značka. Pokud se tedy v obou souborech vyskytl stejný SGML prvek
se stejnými atributy (např. <MDg src="dz">
), ale
různým textem uvnitř prvku (za počáteční SGML značkou), vypíše se
pouze verze ze souboru a.csts.
porovnat.pl a.csts b.csts ... x.csts
Podobné jako u dvou parametrů, hlášení obsahuje počet slov shodně zavěšených v každé podmnožině souborů (např. slova zavěšená shodně v a.csts a b.csts, ale odlišně v c.csts). Všechny soubory se porovnávají proti vzoru, na nějž vede odkaz z parser.ini.
Rozdílový soubor se nevytváří.
Ve všech výše uvedených případech lze zdroj stanovit zkratkami "g"
(ruční anotace), nebo "mdg" (strojová anotace), popř. rozšířenou o
identifikaci programu (např. "mdgdz" odpovídá SGML značce
<MDg src="dz">
). Tyto zkratky lze předat dvěma níže
předvedenými způsoby. První je názornější, ale druhý neklade překážky
linuxovému doplňování jmen souborů na příkazovém řádku
tabulátorem. Pokud zkratka není rovna "g" ani nezačíná na "mdg",
automaticky se na jejím začátku předpokládá "mdg". Obě níže uvedená
volání tedy říkají totéž:
porovnat.pl mc=mc.csts mdgdz=dz.csts
porovnat.pl -mdgmc mc.csts -dz dz.csts