Foros - Stratos

Programadores => Código de la Semana => Mensaje iniciado por: nasciiboy en 08 de Abril de 2016, 05:30:17 PM

Título: lbreria de expresiones regulares en c (codigo compacto y elegante)
Publicado por: nasciiboy en 08 de Abril de 2016, 05:30:17 PM
hola que tal,  aca el codigo:

https://github.com/nasciiboy/RecursiveRegexpRaptor

creo que es la biblioteca mas simple y pequeña del tipo que ha sido escrita jamas aunque no lo he corroborado,
ni conosco suficientemente el tema si saben algo mas se agradecera la informacion.

no cuenta con deteccion de errores (c no es asi) y el soporte a caracteres 16-24-32 bits es cuestionable.
Título: Re:lbreria de expresiones regulares
Publicado por: nasciiboy en 23 de Abril de 2016, 05:40:31 AM
lista la version 1(misma direccion), se pasan de 393 lineas iniciales a 408, se agrega soporte utf8, signo especial de agrupacion con captura, reemplaso de capturas, generacion de nueva linea con captura y algo de musica al commit.
Título: Re:lbreria de expresiones regulares
Publicado por: nasciiboy en 20 de Septiembre de 2016, 05:49:51 PM
que tal, despues de unos meses trabajando en la libreria (reescribierdola de cero y modificando algunas cosas) hay una nueva vercion, esta ves incluye backreferences, ignorecase, y una peculiar forma de negar expreciones. y dos verciones de la liberira, puro ascii y utf8

lo he compilado con gcc 6.1.1 en freidora 24, creo que hay algun problema con gcc pues se producen dos errores especificamente en las pruebas  de las lineas 180 y 181. en cambio con clang version 3.8.0 cero errores.. dejo un enlace para que me hagan el favor de probar con su compilador, el comando es

   $ compilador test_ascii.c regexp3_ASCII.c

  $ a.out

https://drive.google.com/open?id=0BwlAq07XJ-Rta0lXZFRheUdjdVk

gracias
Título: Re:lbreria de expresiones regulares
Publicado por: nasciiboy en 28 de Septiembre de 2016, 04:29:43 AM
log para "la gente del futuro" : se retira el enlace del anterior comentario, el error era provocado por no inicializar una varible. compilar con gcc o clang proporciona el mismo resultado.

adicionalmente se realizo una comparacion (se tomo la prueva de pcre elaborada por [dack100][sourceforge]) con las principales librerias.

los links

https://github.com/nasciiboy/RecursiveRegexpRaptor (https://github.com/nasciiboy/RecursiveRegexpRaptor)
https://github.com/nasciiboy/RecursiveRegexpRaptor-vs-Benchmarks (https://github.com/nasciiboy/RecursiveRegexpRaptor-vs-Benchmarks)

las siguientes metas

- explicacion de construccion detallada
- buscar un reemplazo elegante tanto en sintaxis como en codigo a la "negacion de expresion"
- mejorar el rendimiento.

el ultimo proposito escapa del plantamiento inicial de la libreria, el cual consite en ser el motor  mas sencillo tanto de uso como de codigo, por lo que seria un derivado con otro nombre... a menos que.. la nueva version "encaje armonicamente" con el codigo existente...