Sierra circular
Una sierra circular es una sierra eléctrica que utiliza un disco o una cuchilla dentada o abrasiva para cortar diferentes materiales mediante un movimiento... (leer más)
Lex es un programa informático que genera analizadores léxicos ("scanners" o "lexers").
Lex se usa comúnmente con el generador de analizadores yacc. Lex, originalmente escrito por Mike Lesk y Eric Schmidt y descrito en 1975, es el generador de analizador léxico estándar en muchos sistemas Unix, y se especifica una herramienta equivalente como parte del estándar POSIX.
Lex lee un flujo de entrada que especifica el analizador léxico y escribe el código fuente que implementa el analizador léxico en el lenguaje de programación C.
Además de C, algunas versiones antiguas de Lex podían generar un lexer en Ratfor.
Aunque originalmente se distribuyó como software propietario, algunas versiones de Lex ahora son de código abierto. Las versiones de código abierto de Lex, basadas en el código propietario original, ahora se distribuyen con sistemas operativos de código abierto como OpenSolaris y Plan 9 de Bell Labs. Una popular versión de código abierto de Lex, llamada flex, o el 'analizador léxico rápido', no se deriva de la codificación propietaria.
La estructura de un archivo Lex es intencionalmente similar a la de un archivo yacc: los archivos se dividen en tres secciones, separadas por líneas que contienen solo dos signos de porcentaje, de la siguiente manera:
El siguiente es un archivo Lex de ejemplo para la versión flexible de Lex. Reconoce cadenas de números (enteros positivos) en la entrada y simplemente los imprime.
- Sí. Sección de definición ***/%{}/* C code to be copied verbatim */#include Identificado.h%}%% - Sí. Sección ***/ /* [0-9]+ coincide con una cadena de uno o más dígitos */[0-9]+ {} /* yytext es una cadena que contiene el texto emparejado. */ printf()"Ver un entero: %sn", Yytext); }.Silencion {} /* Ignora a todos los demás personajes. */ }%%- Sí. C Code section ***/int principal()vacío){} /* Llame al lexer, luego déjelo. */ Yylex(); retorno 0;}
Si esta entrada se da a flex
, se convertirá en un archivo C, lex.yy.c
. Esto se puede compilar en un ejecutable que coincide y produce cadenas de enteros. Por ejemplo, dada la entrada:
abc123z.
el programa imprimirá:
Vi un entero: 123 Vi un entero: 2 Vi un entero: 6
Lex y los generadores de analizadores, como Yacc o Bison, suelen usarse juntos. Los generadores de analizadores utilizan una gramática formal para analizar un flujo de entrada, algo que Lex no puede hacer con expresiones regulares simples, ya que Lex se limita a autómatas de estado finito simples.
Por lo general, es preferible tener un analizador, uno generado por Yacc, por ejemplo, que acepte un flujo de tokens (un "flujo de tokens") como entrada, en lugar de tener que procesar un flujo de caracteres (un "character-stream") directamente. Lex se usa a menudo para producir un flujo de tokens de este tipo.
El análisis sin escáner se refiere al análisis del flujo de caracteres de entrada directamente, sin un lexer distinto.
make es una utilidad que se puede usar para mantener programas que involucren a Lex. Make asume que un archivo que tiene una extensión de .l
es un archivo fuente Lex. La macro interna make LFLAGS
se puede usar para especificar las opciones de Lex que make invocará automáticamente.
Una sierra circular es una sierra eléctrica que utiliza un disco o una cuchilla dentada o abrasiva para cortar diferentes materiales mediante un movimiento... (leer más)
Wine es una capa de compatibilidad gratuita y de código abierto que tiene como objetivo permitir que el software de aplicación y los juegos de computadora... (leer más)
En agricultura, una rastra es un implemento agrícola utilizado para la labranza superficial. Se utiliza después del arado para romper y alisar la superficie... (leer más)