Lex
Lex er et program til generering af leksikalske analysatorer , som normalt bruges sammen med yacc - parsergeneratoren . Lex blev oprindeligt skrevet af Eric Schmidt og Mike Lesk og er standard lexer-generatoren på Unix -operativsystemer og er inkluderet i POSIX -standarden . Lex læser inputstrømmen, der beskriver den leksikalske analysator, og udsender kildekode i programmeringssproget C.
Input filstruktur
Strukturen af lex-filen ligner strukturen af yacc-filen; filen er opdelt i tre blokke, adskilt af linjer, der hver indeholder to procent tegn:
Definitionsblok
%%
Regelblok
%%
C-kodeblok
- Definitionsblokken indeholder makroer og header-filer. Det er også tilladt at skrive enhver C-kode her - den vil blive kopieret til den resulterende fil.
- Regelblokken er den vigtigste del; den beskriver mønstre og forbinder dem med opkald. Mønstre er regulære udtryk . Når parseren ser tekst, der matcher mønsteret, udfører den den angivne kode.
- Kodeblokken indeholder C - sætninger og funktioner, der kopieres ind i den genererede fil. Disse udsagn forventes at indeholde kode kaldet af reglerne i den foregående blok. For komplekse analysatorer kan det være mere praktisk at placere denne kode i en separat fil, der er inkluderet i kompileringsstadiet.
Se også
Links