juli

Páginas: 8 (1802 palabras) Publicado: 28 de abril de 2014


Contenido



Componentes del grupo
Alina Gheorghita
Cristina García
Pilar Torralbo
Tomás Restrepo
Guillermo José Hernández
Laura Reyero


Comparativa de herramientas que generan analizadores

Generadores de analizadores léxicos (scanner generators)
Lex
Tipo de analizador generado: léxico.
Código generado: C
Plataforma: Unix
Se puede usar con: Yacc
Licencia: softwarepropietario
Otras versiones: Flex (software libre)
Entrada: una tabla de expresiones regulares y fragmentos correspondientes del programa
Lex ayuda a escribir programas cuyo control de flujo es dirigido por instancias de expresiones regulares en el flujo de entrada. Es muy adecuado para las transformaciones de tipo script y para la segmentación de la entrada en la preparación de una rutina deanálisis.
El reconocimiento de las expresiones es realizado por un autómata finito determinista generado por Lex. Los fragmentos de programa escrito por el usuario se ejecutan en el orden en el que las expresiones regulares correspondientes aparecen en el flujo de entrada.

JLex
Tipo de analizador generado: léxico.
Código generado: Java
Plataforma: Multiplataforma.
Se puede usar con: CUP.Licencia: Open Source y GPL-Compatible
Otras versiones: Jflex

Flex
Tipo de analizador generado: léxico.
Código generado: C, C++ (flex++)
Plataforma: Unix
Se puede usar con: Yacc, Bison.
Licencia: software libre (BSD license).
Complejidad del analizador generado: O(n) sobre la longitud de entrada.
Un analizador léxico Flex normalmente tiene complejidad O(n) sobre la longitud de laentrada. Es decir, se realiza un número constante de operaciones para cada símbolo de entrada. Esta constante es bastante baja (GCC genera 12 Instrucciones para el bucle de reconociemiento del ATN). Nótese que la constante es independiente de la longitud del token, de la longitud de la expresión regular y del tamaño del ATN.
Sin embargo, una característica opcional de Flex puede causar la generación deun analizador con complejidad no lineal: el uso de la macro REJECT en un analizador con el potencial de reconocimiento de tokens muy largos. En este caso, el programador le pide explícitamente a flex "volver atrás e intentarlo de nuevo" después de que haya acertado alguna entrada. Esto causará que el DFA use backtracking para encontrar otros estados finales. En teoría, la complejidad en tiempo esO(n+m^2)\ge O(m^2) donde m es la longitud más larga del token (esto vuelve a ser O(n) si los tokens son "pequeños" con respecto al tamaño de la entrada). La función de REJECT no está habilitada por defecto, y sus implicaciones en el rendimiento están ampliamente documentadas en el manual de Flex .

JFlex
Tipo de analizador generado: léxico.
Código generado: Java.
Plataforma:  Multiplataforma(debe ejecutarse en una plataforma que soporte JRE/JDK 1.1 ó superior).
Se puede usar con: CUP, BYacc/J, ANTLR.
Licencia: Software libre. (GPL)
Entrada: Un archivo con extensión “.flex” que incluya las expresiones regulares del lenguaje que se quiere reconocer.
JFlex es un generador de analizador léxico, para Java, escrito en Java. También es una reescritura de la herramienta muy útil JLex.JFlex está diseñado para trabajar junto con el generador de analizador sintáctico LALR, CUP de Scott Hudson, y la modificación de Java de Berkeley Yacc BYacc/J de Bob Jamison. También se puede utilizar junto con otros generadores de analizadores sintácticos como ANTLR o como una herramienta independiente.
La lista de características se puede encontrar en su página web:http://jflex.de/features.html
Ragel
Tipo de analizador generado: léxico.
Código generado: Java, C, C++, Objective-C, D.
Plataforma: Multiplataforma.
Se puede usar con:
Licencia: Software libre. (Licencia GNU)
Entrada: Una tabla con expresiones regulares y fragmentos de código
Ragel es un compilador de máquina de estados finitos con soporte de salida para C, C #, Objective-C, D, Java, Go y el código fuente de...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Julio
  • Julio
  • Julio
  • Juliá
  • julio
  • julio
  • Julian
  • Julio

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS