Lanzamento de re2c lexer generator 1.2

tivo lugar liberación re2c, 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"Extracción eficiente de submatch POSIX en NFA«.
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 http://re2c.org/manual/manual.html#buffer-refilling заполнение буфера
    и sobre as formas de comprobar o final dos datos de entrada.
    A nova documentación recóllese no formulario
    unha guía completa dunha páxina
    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

Compre hospedaxe fiable para sitios con protección DDoS, servidores VPS VDS 🔥 Compra aloxamento web fiable con protección DDoS, servidores VPS VDS | ProHoster