2012-01-27 24 views
5

A veces, sería conveniente tener una función altamente optimizada para la búsqueda de expresiones regulares en lugar de incluir una biblioteca que genere analizadores en tiempo de ejecución. ¿Hay un generador de analizador que se ajuste a dicho rol?Generador del analizador de expresiones regulares

Idealmente, sería:

  • crear una única función C
  • generar un DFA que corresponde a la expresión regular dada
  • ser tan eficiente como KMP o Boyer-Moore en casos sencillos

Respuesta

6

Aquí está la lista de herramientas que todos se adapten a sus necesidades:

  1. Lex/Flex es quizás el herramienta más conocida para construir analizadores de expresiones regulares. Lex es útil en muchos escenarios, pero puede imponer demasiada sobrecarga para aplicaciones de análisis simples debido a un ciclo de procesamiento pesado que impone un modelo de "extracción" de flujo y búfer de entrada. Fue diseñado para analizar archivos completos en lugar de cadenas simples.

  2. . Es un preprocesador que genera reconocedores basados ​​en C a partir de expresiones regulares. Las máquinas de estado generadas se ejecutan muy rápido y se integran fácilmente en cualquier programa, sin dependencias.

  3. Ragel State Machine Compiler. Otro preprocesador que genera código FSM a partir de notación de lenguaje regular de alto nivel (la expresión regular es un caso de esta definición). Funciona para una variedad de idiomas (C, C++, Objective-C, D, Java y Ruby), puede ejecutar acciones de usuario en diferentes eventos de FSM, etc. Además, puede generar definición de máquina de estado en formato de Graphviz para visualización de estados y transiciones.

5

Lex y Flex son realmente compiladores de expresiones regulares a C.

+0

De alguna manera, pensé en ellos como tokenizadores exclusivos. –