Was ist das L-Dateiformat?
Eine .l-Datei ist eine in der Sprache Lex verfasste Klartext-Spezifikation für einen lexikalischen Analysator. Sie definiert, wie ein Eingabestrom von Zeichen in Token zerlegt werden soll - der erste Schritt beim Bau eines Compilers, Interpreters oder Textverarbeitungswerkzeugs.
Das Format wurde 1975 in den Bell Labs von Mike Lesk und Eric Schmidt als Teil der Unix-Toolchain entwickelt. Heute werden praktisch alle .l-Dateien von Flex (Fast Lexical Analyzer) verarbeitet, dem quelloffenen Nachfolger aus der GNU-Ära, der von Vern Paxson entwickelt wurde, wobei die Quellsyntax weitgehend gleich geblieben ist.
Eine .l-Datei ist in drei Abschnitte unterteilt, die durch %%-Markierungslinien getrennt sind:
- Definitionen - benannte Regex-Makros und
%option-Direktiven - Regeln - Paare aus regulären Ausdrücken und C-Aktionscode, die bei einer Übereinstimmung ausgeführt werden
- Benutzercode - optionale C-Hilfsfunktionen, die wortwörtlich an die Ausgabe angehängt werden
Ein optionaler %{ ... %}-Block im oberen Bereich fügt C-Deklarationen direkt in den generierten Scanner ein. Das Ausführen von flex yourfile.l (oder lex yourfile.l) erzeugt lex.yy.c, eine eigenständige C-Quelldatei, die den Scanner als deterministischen endlichen Automaten implementiert. Diese Ausgabe wird mit einem C-Compiler kompiliert und typischerweise mit einer Yacc/Bison-Grammatikdatei verknüpft, um einen vollständigen Sprachprozessor zu erstellen.
Beachten Sie, dass .l auch für Lisp-Quelldateien und Unix-troff-Manpage-Quellen verwendet wird, daher ist der Dateikontext bei der Identifizierung des Typs entscheidend.
Sicherheit
RISIKO: LOWEine .l Lex-Quelle ist Klartext und kann sicher in einem Editor geöffnet werden. Die einzige Vorsicht: Die Regeln enthalten C-Aktionscode, und eine bösartige .l-Datei könnte schädlichen C-Code einbetten, der nach dem Kompilieren ausgeführt wird. Überprüfen Sie .l-Dateien aus nicht vertrauenswürdigen Quellen, bevor Sie flex ausführen und sie kompilieren.
Formatdetails
kurz gefasst- Lisp-Quelldatei (.l) - Einige Lisp-Dialekte/Implementierungen verwenden .l für Quellcode; Klartext, aber eine andere Sprache als Lex.
- Unix Manpage / troff-Quelle (.l) - Abschnitt-l (lokale) Handbuchseiten im nroff/troff-Format; Dokumentation, keine Lexer-Spezifikation.
- Interleaf / WordPerfect Bibliothek (.l) - Veraltete Bibliotheks- oder Listendateien in älteren Dokumentensystemen; selten.
Programme zum Öffnen von L-Dateien
Technische Details
technische Spezifikation| Format-Typ | Klartext-Spezifikation für lexikalische Analysatoren (Quellcode) |
| Kodierung | ASCII / UTF-8 Klartext; kein binärer Header oder Magic Bytes |
| Dateistruktur | Drei Abschnitte, getrennt durch `%%`: Definitionen, Regeln und Benutzer-C-Code |
| Abschnitt 1 - Definitionen | Benannte Regex-Makros und `%option`-Direktiven (z. B. `%option noyywrap`) |
| Abschnitt 2 - Regeln | Paare aus regulären Ausdrücken und C-Aktionscodeblöcken, die bei Übereinstimmung ausgeführt werden |
| Abschnitt 3 - Benutzercode | Optionale C-Hilfsfunktionen, die wortwörtlich in die generierte Ausgabedatei kopiert werden |
| C-Code-Injektionsblock | Der `%{ ... %}`-Prolog im oberen Bereich fügt C-Deklarationen in den generierten Scanner ein |
| Primäre Ausgabe | `lex.yy.c` - eine C-Quelldatei, die einen DFA-basierten Scanner implementiert |
| MIME-Typ | `text/plain` (informelles Alias: `text/x-lex`) |
| Verarbeitungswerkzeuge | `lex` (AT&T/POSIX), `flex` (GNU), `win_flex` (Windows via WinFlexBison) |
| Typische Dateigröße | 1 KB - 100 KB |
| Scanner-Algorithmus | Kompiliert Regex-Regeln zur Build-Zeit in einen deterministischen endlichen Automaten (DFA) |
| Häufige Kombination | Kombiniert mit einer `.y` Yacc- oder Bison-Grammatikdatei, um ein Compiler-Frontend zu bauen |
| Plattformunterstützung | Unix, Linux, macOS nativ; Windows via MSYS2, Cygwin oder WinFlexBison |
| Mehrdeutigkeit der Endung | `.l` wird auch für Lisp-Quelldateien und Unix-troff-Manpages verwendet - Dateikontext erforderlich |
| Veröffentlicht | Lex, 1975 (Unix); standardized in POSIX (lex utility) |
| Neueste Version | Flex 2.6.4 (2017) is the de-facto current implementation reading .l files |
| Offener Standard | Ja · lizenzgebührenfrei |
| Spezifikation | pubs.opengroup.org |
L-Konvertierungen
Community Q&A
von Nutzern gefragtNoch keine Fragen - stellen Sie die erste Frage zu L-Dateien.