liberación , un xerador de analizador léxico gratuíto para linguaxes C e C++. Lembremos que re2c foi escrito en 1993 por Peter Bambulis como un xerador experimental de analizadores léxicos moi rápidos, diferenciándose doutros xeradores pola velocidade do código xerado e unha interface de usuario inusualmente flexible que permite que os analizadores se integren de forma sinxela e eficiente nun programa existente. base de código. Desde entón, o proxecto foi desenvolvido pola comunidade e segue a ser unha plataforma para experimentos e investigacións no campo das gramáticas formais e das máquinas de estados finitos.
A preparación para o lanzamento levou case un ano enteiro. A maior parte do tempo, coma sempre, dedicouse a desenvolver un marco teórico e escribir
artigos"«.
Os algoritmos descritos no artigo están implementados na biblioteca experimental libre2c
(a creación da biblioteca e as probas de rendemento está desactivada por defecto e habilita a opción de configuración "--enable-libs"). A biblioteca non pretende ser competidora de proxectos existentes como RE2, senón como plataforma de investigación para o desenvolvemento de novos
algoritmos (que logo se poden usar en re2c ou noutros proxectos). Tamén é conveniente desde o punto de vista de probar, medir o rendemento e crear enlaces a outros idiomas.
Principais novidades na versión re2c 1.2:
- Engadiuse un novo método simplificado para comprobar o final dos datos de entrada ("regra EOF"). Para iso, engadiuse a configuración "re2c:eof".
permítelle seleccionar o carácter do terminal,
e unha regra especial “$”, que se activa se o lexer
alcanzou con éxito o final dos datos de entrada.
Históricamente, re2c ofrece unha selección de varios métodos de verificación para
fin de entradas que varían en limitación, eficacia e sinxeleza
aplicacións. O novo método está deseñado para simplificar a escritura de código, mentres
aínda que segue sendo eficaz e amplamente aplicable. Vellos camiños
aínda funcionan e poden ser preferidos nalgúns casos. - Engadida a posibilidade de incluír ficheiros externos mediante unha directiva
"/*!include:re2c "file.re" */", onde "file.re" é o nome do ficheiro que se vai incluír. Re2c busca ficheiros no directorio do ficheiro incluído,
así como na lista de camiños especificados mediante a opción “-I”.
Os ficheiros incluídos poden incluír outros ficheiros.
Re2c ofrece ficheiros "estándar" no directorio "include/".
proxecto - espérase que alí se acumulen definicións útiles
expresións regulares, algo así como a biblioteca estándar.
Ata agora, a petición dos traballadores, engadiuse un ficheiro con definicións de categorías Unicode. - Engadida a posibilidade de xerar ficheiros de cabeceira con arbitrario
contido usando as opcións "-t --type-header" (ou apropiadas
configuracións) e novas directivas "/*!header:re2c:on*/" e
"/*!header:re2c:off*/". Isto pode ser útil nos casos en que
cando re2c necesita xerar definicións de variables, estruturas e macros,
usado noutras unidades de tradución. - Re2c agora comprende os literais UTF8 e as clases de caracteres en expresións regulares.
Por defecto, re2c analiza expresións como "∀x ∃y" como
secuencia de caracteres ASCII de 1 bit "e2 88 80 78 20 e2 88 83 79"
(códigos hexadecimales) e os usuarios teñen que escapar dos caracteres Unicode manualmente:
"\\u2200x \\u2203y." Isto é moi inconveniente e inesperado para moitos
usuarios (como demostran constantes informes de erros). Entón agora
re2c ofrece a opción "--codificación de entrada {ascii | utf8}",
que permite cambiar o comportamento e analizar “∀x ∃y” como
"2200 78 20 2203 79". - Re2c agora permite usar bloques re2c normais no modo "-r --reuse".
Isto é conveniente se o ficheiro de entrada contén moitos bloques e só algúns deles
necesita ser reutilizado. - Agora podes configurar o formato de avisos e mensaxes de erro
usando a nova opción "--location-format {gnu | msvc}". Móstrase o formato GNU
como "filename:line:column:", e o formato MSVC como "filename(line,column)".
Esta función pode ser útil para os amantes de IDE.
Tamén se engadiu unha opción "--verbose", que mostra unha breve mensaxe de vitoria se ten éxito. - Mellorouse o modo de "compatibilidade" con flex - corrixíronse algúns erros de análise e
precedencia incorrecta do operador en casos raros.
Históricamente, a opción "-F --flex-support" permitíache escribir código
mesturado en estilo flex e estilo re2c, o que dificulta un pouco a análise.
O modo de compatibilidade Flex raramente se usa no código novo,
pero re2c segue a admitilo para compatibilidade con versións anteriores. - Agora aplícase o operador de resta de clase de caracteres "/".
antes de expandir a codificación, o que permite empregala nun maior número de casos,
se se usa unha codificación de lonxitude de caracteres variable (por exemplo, UTF8). - O ficheiro de saída agora créase atomicamente: re2c crea primeiro un ficheiro temporal
e escribe o resultado nel, e despois cambia o nome do ficheiro temporal á saída
unha operación. - A documentación foi completada e reescrita; en particular, engadíronse outras novas
capítulos sobre
и .
A nova documentación recóllese no formulario
con exemplos (as mesmas fontes aparecen na páxina de manual e na documentación en liña).
Fixéronse malos intentos para mellorar a lexibilidade do sitio nos teléfonos. - Desde o punto de vista dos desenvolvedores, re2c adquiriu un subsistema máis completo
depuración O código de depuración agora está desactivado nas compilacións de versións e
pódese activar usando a opción de configuración "--enable-debug".
Fonte: opennet.ru
