¿Qué es el formato de archivo L?
Un archivo .l es una especificación de analizador léxico en texto plano escrita en el lenguaje Lex. Define cómo una secuencia de caracteres de entrada debe dividirse en tokens, el primer paso para construir un compilador, intérprete o herramienta de procesamiento de texto.
El formato fue creado en Bell Labs en 1975 por Mike Lesk y Eric Schmidt como parte de la cadena de herramientas de Unix. Hoy en día, prácticamente todos los archivos .l son procesados por Flex (Fast Lexical Analyzer), el sucesor de código abierto de la era GNU desarrollado por Vern Paxson, aunque la sintaxis de origen sigue siendo en gran medida la misma.
Un archivo .l se divide en tres secciones separadas por líneas marcadoras %%:
- Definiciones - macros de expresiones regulares con nombre y directivas
%option. - Reglas - pares de expresiones regulares y código de acción en C que se ejecutan al coincidir.
- Código de usuario - funciones auxiliares de C opcionales que se añaden íntegramente a la salida.
Un bloque opcional %{ ... %} cerca de la parte superior inyecta declaraciones de C directamente en el escáner generado. Al ejecutar flex yourfile.l (o lex yourfile.l) se produce lex.yy.c, un archivo fuente de C autónomo que implementa el escáner como un autómata finito determinista. Esa salida se compila con un compilador de C y normalmente se vincula con un archivo de gramática Yacc/Bison para construir un procesador de lenguaje completo.
Tenga en cuenta que .l también se utiliza para archivos fuente de Lisp y fuentes de páginas de manual de troff de Unix, por lo que el contexto del archivo es importante al identificar el tipo.
Seguridad y protección
RIESGO: LOWUn fuente Lex .l es texto plano y es seguro abrirlo en un editor. La única precaución: las reglas contienen código de acción en C, y un .l malicioso podría incrustar código C dañino que se ejecute una vez compilado. Revise los archivos .l de fuentes no confiables antes de ejecutar flex y construirlos.
Detalles del formato
en pocas palabras- Archivo fuente de Lisp (.l) - Algunos dialectos/implementaciones de Lisp usan .l para el código fuente; texto plano, pero un lenguaje diferente a Lex.
- Página de manual de Unix / fuente troff (.l) - Páginas de manual de la sección-l (local) en fuente nroff/troff; documentación, no una especificación de lexer.
- Biblioteca Interleaf / WordPerfect (.l) - Archivos de biblioteca o lista heredados en sistemas de documentos antiguos; poco común.
Programas que abren archivos L
Detalles técnicos
especificación profunda| Tipo de formato | Especificación de analizador léxico en texto plano (código fuente) |
| Codificación | Texto plano ASCII / UTF-8; sin encabezado binario ni magic bytes |
| Estructura del archivo | Tres secciones separadas por `%%`: definiciones, reglas y código C de usuario |
| Sección 1 - Definiciones | Macros de expresiones regulares con nombre y directivas `%option` (ej. `%option noyywrap`) |
| Sección 2 - Reglas | Pares de patrones de expresiones regulares y bloques de código de acción en C ejecutados al coincidir |
| Sección 3 - Código de usuario | Funciones auxiliares de C opcionales copiadas íntegramente en el archivo de salida generado |
| Bloque de inyección de código C | Prólogo `%{ ... %}` cerca de la parte superior que inyecta declaraciones C en el escáner generado |
| Salida principal | `lex.yy.c`: un archivo fuente de C que implementa un escáner basado en DFA |
| Tipo MIME | `text/plain` (alias informal: `text/x-lex`) |
| Herramientas de procesamiento | `lex` (AT&T/POSIX), `flex` (GNU), `win_flex` (Windows vía WinFlexBison) |
| Tamaño típico del archivo | 1 KB - 100 KB |
| Algoritmo del escáner | Compila reglas de expresiones regulares en un autómata finito determinista (DFA) en tiempo de construcción |
| Emparejamiento común | Combinado con un archivo de gramática Yacc o Bison `.y` para construir un front-end de compilador completo |
| Soporte de plataforma | Unix, Linux, macOS de forma nativa; Windows vía MSYS2, Cygwin o WinFlexBison |
| Ambigüedad de extensión | `.l` también se usa para archivos fuente de Lisp y fuentes de páginas de manual troff de Unix; se requiere contexto del archivo |
| Lanzado | Lex, 1975 (Unix); standardized in POSIX (lex utility) |
| Última versión | Flex 2.6.4 (2017) is the de-facto current implementation reading .l files |
| Estándar abierto | Sí · libre de regalías |
| Especificación | pubs.opengroup.org |
Conversiones de L
Preguntas y respuestas de la comunidad
preguntado por usuariosAún no hay preguntas; sea el primero en preguntar sobre los archivos L.