Algoritmus kterym postupuje gperfovy rozpoznavac je jednpduchy:
int iitmaji v tabulce stejnou pozici a vubec to fungovat nebude...Je tu samozdrejme prepinac ktery algoritmus trochu rozsiri a kdyz jsou tyto kolize vyzkousi proste vsechny mozna slova(tedy int i iit a podle toho vrati spravny vysledek. tato situace nastesti vetsinou nevznikne.
nejjednodusi zdrojak pro gperf je prosty seznam slov vygeneruje to potom ceckovsky zdrojak kde je tabulka a funkce in_word_set ktera kdyz se zavola in_word_set(text,delka) vrati 0 kdyz nic nenalezla nebo cislo. gperf ale umi trochu vic:jeho zdrojak se muze skladat z:
Deklarace %% Klicova slova %% nejakej ceckovskej kodDeklarace je dobra kdyz k cislo klicovyho slova chcete vedet jeste neco treba prioritu operatoru nebo coslo tokeny prob bisona prvni polozka musi byt char * z textem treba:
struct slovo {char *text;int token;}; %% int,258 char,259 float,FLOATatd...potom se muzete odvolavat na polozky struktury a prace je prijemnejsi gperf ma samozdrejme hafo prepinacu-jestli generovat kod pro c,c++,gnu,ansi c atd
Proti fklexovi je to strasne jednoducha vec ale pokud vam jde o rychlost nebo mate nejakej problem co ve flexovi nejde je to super! taky vygenerovanej zdrojak je samostatnej a muze se dodavat rovnou v distribuci nebo pouzivat pod dosem
Tento soubor je soucasti rozsahle sbirky skolicek na http://www.ucw.cz/~hubicka/skolicky
Take si muzete prohlidnout jeji puvodni textovou podobu
Nebo mi mailnout na hubicka@ucw.cz
Copyright (C) Jan Hubicka 1995