Lex
Lex je program pro generování lexikálních analyzátorů , obvykle používaný ve spojení s generátorem analyzátoru yacc . Lex původně napsali Eric Schmidt a Mike Lesk a je standardním generátorem lexerů na operačních systémech Unix a je součástí standardu POSIX . Lex čte vstupní proud popisující lexikální analyzátor a vydává zdrojový kód v programovacím jazyce C.
Struktura vstupního souboru
Struktura souboru lex je podobná jako u souboru yacc; soubor je rozdělen do tří bloků, oddělených řádky, každý obsahuje dvě procenta znaků:
Definiční blok
%%
Blok pravidel
%%
Blok kódu C
- Definiční blok obsahuje makra a hlavičkové soubory. Zde je také povoleno napsat libovolný C kód - ten se zkopíruje do výsledného souboru.
- Blok pravidel je nejdůležitější částí; popisuje vzory a spojuje je s hovory. Vzory jsou regulární výrazy . Když analyzátor uvidí text, který odpovídá vzoru, spustí zadaný kód.
- Blok kódu obsahuje příkazy C a funkce, které se zkopírují do vygenerovaného souboru. Očekává se, že tyto příkazy budou obsahovat kód volaný pravidly v předchozím bloku. Pro složité analyzátory může být vhodnější umístit tento kód do samostatného souboru, který je zahrnut ve fázi kompilace.
Viz také
Odkazy