Vad är filformatet L?
En .l-fil är en specifikation för en lexikalisk analysator i klartext skriven i språket Lex. Den definierar hur en inström av tecken ska delas upp i tokens - det första steget i att bygga en kompilator, tolk eller ett textbehandlingsverktyg.
Formatet skapades vid Bell Labs 1975 av Mike Lesk och Eric Schmidt som en del av Unix-verktygskedjan. Idag bearbetas praktiskt taget alla .l-filer av Flex (Fast Lexical Analyzer), den öppna källkods-efterföljaren från GNU-eran utvecklad av Vern Paxson, även om källkodssyntaxen förblir i stort sett densamma.
En .l-fil är uppdelad i tre sektioner separerade av %%-markeringar:
- Definitioner - namngivna regex-makron och
%option-direktiv - Regler - par av reguljära uttryck och C-kod (actions) som körs vid en matchning
- Användarkod - valfria hjälpfunktioner i C som läggs till ordagrant i utdata
Ett valfritt %{ ... %}-block nära toppen injicerar C-deklarationer direkt i den genererade scannern. Genom att köra flex dinfil.l (eller lex dinfil.l) skapas lex.yy.c, en fristående C-källkodsfil som implementerar scannern som en deterministisk finit automat. Denna utdata kompileras med en C-kompilator och länkas vanligtvis med en Yacc/Bison-grammatikfil för att bygga en komplett språkprocessor.
Observera att .l även används för Lisp-källkodsfiler och Unix troff-manualsidor, så filens sammanhang är viktigt vid identifiering.
Säkerhet & trygghet
RISK: LOWEn .l Lex-källkod är klartext och säker att öppna i en redigerare. Den enda varningen: reglerna innehåller C-kod, och en skadlig .l-fil kan innehålla skadlig C-kod som körs när den väl kompilerats. Granska .l-filer från okända källor innan du kör flex och bygger dem.
Formatdetaljer
i ett nötskal- Lisp-källkodsfil (.l) - Vissa Lisp-dialekter/implementeringar använder .l för källkod; klartext, men ett annat språk än Lex.
- Unix manualsida / troff-källkod (.l) - Sektion-l (lokala) manualsidor i nroff/troff-källkod; dokumentation, inte en lexerspecifikation.
- Interleaf / WordPerfect-bibliotek (.l) - Äldre biblioteks- eller listfiler i äldre dokumentsystem; sällsynt.
Program som öppnar L-filer
Tekniska detaljer
djup specifikation| Formattyp | Specifikation för lexikalisk analysator i klartext (källkod) |
| Kodning | ASCII / UTF-8 klartext; ingen binär header eller filsignatur |
| Filstruktur | Tre sektioner separerade av `%%`: definitioner, regler och användar-C-kod |
| Sektion 1 - Definitioner | Namngivna regex-makron och `%option`-direktiv (t.ex. `%option noyywrap`) |
| Sektion 2 - Regler | Par av reguljära uttryck och C-kodblock som körs vid matchning |
| Sektion 3 - Användarkod | Valfria C-hjälpfunktioner som kopieras ordagrant till den genererade utdatafilen |
| C-kodsinjektionsblock | `%{ ... %}`-prolog nära toppen injicerar C-deklarationer i den genererade scannern |
| Primär utdata | `lex.yy.c` - en C-källkodsfil som implementerar en DFA-baserad scanner |
| MIME-typ | `text/plain` (informellt alias: `text/x-lex`) |
| Bearbetningsverktyg | `lex` (AT&T/POSIX), `flex` (GNU), `win_flex` (Windows via WinFlexBison) |
| Typisk filstorlek | 1 KB - 100 KB |
| Scanner-algoritm | Kompilerar regex-regler till en deterministisk finit automat (DFA) vid byggtid |
| Vanlig kombination | Kombineras med en `.y` Yacc- eller Bison-grammatikfil för att bygga en komplett kompilator-frontend |
| Plattformsstöd | Unix, Linux, macOS inbyggt; Windows via MSYS2, Cygwin eller WinFlexBison |
| Filändelsens tvetydighet | `.l` används även för Lisp-källkodsfiler och Unix troff-manualsidor - filkontext krävs |
| Släppt | Lex, 1975 (Unix); standardized in POSIX (lex utility) |
| Senaste version | Flex 2.6.4 (2017) is the de-facto current implementation reading .l files |
| Öppen standard | Ja · royaltyfri |
| Specifikation | pubs.opengroup.org |
L-konverteringar
Frågor & svar
frågat av användareInga frågor än - bli den första att fråga om L-filer.