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.
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.
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
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...