cc lex.yy.c -lfl a je hotovo
%% username printf( "%s", getlogin() );%% znamena zacatek pravidel pred nej muzete psat normalni ceckarskej zdrojak treba includy nebo nejaky ty funkce
username je klicove slovo co se bude vyhledavat..vsechno ostatni pujde na vystup beze zmeny
to printf je akce co se provede-napise username
doufam ze jste uz uhadli ze tento program projde text a vsechny username nahradi uzivatelskymi jmeny.Myslim ze flex sam od sebe program opatri mainem ale kdyz chcete nejaky parametry apod tak je jeste treba udelat vlastni main to se dela takto:
za cast rules(konec naseho prikladu) napisete dalsi %%
a pak normalni kod:
%% main() {printf("zacatek meho sqeleho skorotexu\n"); yyflex();/*uhadli jste!zde se vola funkce flexu a vsechno se provede*/ printf("Doufam ze program se vam libil a nezapomenete poslat $60 autorovi\n"); }samozdrejme za main muze delat i neco rozumnyho..treba ze u prvnich %% si nadefinujete promenou v pravidle username ji inkrementujete a na konci printfnete pocet vyskytu nebo neco tak nejak. Hledane slovo muze byt naprikald i \n a tak muzete treba citat pocet radek. Takze napsat wc ve flexovi je hracka ne 5 radek
Dalsi moznosti
flex toho samozdrejme umi mnohem mnohem vic napriklad v prvni casti
nadefinujete typ DIGIT:
DIGIT[0-9]a potom rules:
{DIGIT}+ printf("Cislo:%s",yytext);vypise pred vsechny cisla v textu Cislo: takze naprikal 112 11 bude
Cislo:112 Cislo:11Takze udelat rozbor nejakeho jazyka treba cecka je hrackou..kdyz ne uz tak uplne trivialni. Rozebirat tyto komplikovanejsi moznosti flexu uz v tomto clanku nebudu ale nakonec to nejlepsi:
do kodu pravidla se da vlozit i return z nejakym cislem takze se to hodi na rozebirani konfiguraci ktera obsahuji ruzna slova co neco delaji..proste se vzdycky zavola yyparse a podle navratovaho kodu se zjisti co je tam za klicove slovo a neco se provede..to se dela tak dlouho dokud se nedostanete na konec.
Flexu se bohate vyuziva ve spojeni z yyacc a bisonem. Tim se pak daji delat analyzatory textu-interpretrvyrazu , basicu nebo jineho jazyka velmi rychlou a efektivni cestou..kdyz tenhle post zaujme a nikdo jiny to neudela hodil bych nejake to mensi info o bisonu priste
Tak honem bezte k pocitaci a napiste si nejakej flex programek Je to super!! dobre informace o flexu v linuxu se da najit prikazem info /m flex je tam pekne intro kde je muj priklad a jeste nejake dalsi podobny program ale v shellu je awk o kterym by se tu taky dalo napsat doufam ze me bude nekdo nasledovat a ze se neco noveho dozvim
Tento soubor je soucasti rozsahle sbirky skolicek na http://paru.cas.cz/~hubicka/skolicky
Take si muzete prohlidnout jeji puvodni textovou podobu
Nebo mi mailnout na hubicka@ucw.cz
Copyright (C) Jan Hubicka 1995