Lex
Lex är ett program för att generera lexikalanalysatorer , som vanligtvis används i kombination med yacc- parsergeneratorn . Lex skrevs ursprungligen av Eric Schmidt och Mike Lesk och är standardgeneratorn för lexer på Unix -operativsystem och ingår i POSIX- standarden . Lex läser ingångsströmmen som beskriver den lexikaliska analysatorn och matar ut källkod i programmeringsspråket C.
Indatafilstruktur
Strukturen för lex-filen liknar den för yacc-filen; filen är uppdelad i tre block, åtskilda av rader som innehåller två procent tecken vardera:
Definitionsblock
%%
Regelblock
%%
C-kodblock
- Definitionsblocket innehåller makron och rubrikfiler . Det är också tillåtet att skriva valfri C-kod här - den kommer att kopieras till den resulterande filen.
- Regelblocket är den viktigaste delen; den beskriver mönster och associerar dem med samtal. Mönster är reguljära uttryck . När parsern ser text som matchar mönstret, exekverar den den angivna koden.
- Kodblocket innehåller C - satser och funktioner som kopieras till den genererade filen. Dessa satser förväntas innehålla kod som anropats av reglerna i föregående block. För komplexa analysatorer kan det vara bekvämare att placera denna kod i en separat fil som ingår i kompileringsstadiet.
Se även
Länkar