jueves, 19 de junio de 2008

Autómata finito




Una expresión regular es la forma de describir un lenguaje , la forma de construirlo es por medio de un diagrama que contenga la información necesaria para analizar la cadena, este diagrama tendrá forma de grafo dirigido.

La cadena será leida de izquierda a derecha, para dar a conocer que la cadena es aceptada, se debe establecer un estado de aceptación y también se deben establecer estados de no aceptación para determinar el análisis de las cadenas que no permanezcan al lenguaje.

Analizar una cadena es recorrer los caminos del grafo; dependiendo del carácter que esta siendo analizado se elige un camino a recorrer. Cuando se acepta una cadena como miembro del lenguaje se llega a un estado de aceptación (encerados en un circulo) por lo que, todos los caminos que lleven a un estado de aceptación constituyen palabras pertenecientes a el lenguaje.

Reconocimiento de los componentes léxicos




Todas las expresiones se consideran posibles tokens. El token manager consume el numero máximo de caracteres de la cadena de entrada que coincida con alguna de las expresiones regulares. Esto es, el token manager prefiereel match mas largo que sea posible. Si existieran múltiples matches (de la misma longitud), se elige la expresión regular que ocurre antes en el archivo de la gramática.

Luego de reconocer una expresión regular, se ejecuta la acción léxica asociada, si es que la hay. Todas las variables y métodos declarados en el token manager están disponibles para ser usadas, además de otras variables y métodos adicionales. Inmediatamente ejecutadas las acciones, el token manager cambia su estado al estado de la necesidades del usuario.


miércoles, 11 de junio de 2008

Especificaciones De Componentes Léxicos



Las especificaciones del componente léxico son:


El alfabeto; son representados por el conjunto finitos de símbolos.
o Cadena sobre un alfabeto, que es la secuencia finita de los símbolos de este alfabeto.
o Cadena vacía
o Operacionales con cadenas; concatenación y exponenciación
o Lenguaje; representado por el conjunto de cadenas sobre un alfabetoOperaciones de lenguaje; la unión, concatenación, cerradura de Kleene (cierre *)y cerradura positiva (Cierre +)

Manejo de buffer de entrada




Utiliza 2 buffer de entrada resultara útil cuando es necesario un pre-análisis en la entrada para identificar los componentes léxicos, después se introducen algunas técnicas básicas para encontrar la velocidad del analizador léxico, como es el uso de centinelas que sirven para marcar el final de buffer, hay tres métodos general de implantar un léxico:


· Utilizar un generador de analizadores léxicos, como el compilador LEX
· Escribir el analizador léxico en un lenguaje convencional de programación
· Escribir léxico en lenguaje ensamblador y manejarlo explícitamente lectura de entrada.


Parejas de buffer


1. Texto de lenguaje fuente
2. Traductor
3. Texto de lenguaje traductor
4. Programa objeto
5. Compilador
6. Programa fuente
7. Mensaje error
8. Programa fuente
9. Analizador léxico
10. Analizador sintáctico
11. Analizador semántico
12. Generación del código intermedio
13. Optimización de código
14. Generador del código
15. Programa objeto
16. Manejo de errores
17. Manejo de tabla de símbolos
18. Analizador léxico
19. Analizador sintáctico
20. Tabla de símbolos
21. Componente léxico

Funcionamiento




El analizador léxico es la primera fase de un compilador, su funcionamiento consiste en llevar las primeras caracteres de entrada y elaborar como salida una secuencia de caracteres léxicos que utilizan un analizador sintáctico pasar hacer el análisis.

Existen 4 funciones principales para un analizador léxico, grafico que va hallando cada token en forma consecutiva, esta pueden ser:

· Utilidades de caracteres y manejo de líneas
· Prueba de predicado
· Acciones
· Errores

ANÁLISIS LÉXICO




3.1 Definición

Se encarga de buscar los componentes léxicos o palabras que componen el programa fuente , según las reglas de entrada.

En la fase de análisis léxico se leen los caracteres del programa fuente y se agrupan en cadenas que representan los componentes léxicos, cada componente léxico es una secuencia lógicamente coherente de caracteres relativa a un identificador, una palabra reservada, un operador o un carácter de puntuación. A la secuencia de caracteres que representa el componente léxico se le llama lexema. En el caso de los identificadores creados por el programador no solo se genera un componente léxico, sino que se genera otro lexema en la tabla de símbolos.

sábado, 7 de junio de 2008

Forma de Backus-Naur

EL Backus-Naur form (BNF) también conocido como Backus-Naaur formalism,Backus normal form o Panini-Backus Form; es una meta sintaxis usada para expresar gramáticas libres de contexto: es decir, una manera formal de describir lenguajes formales. El BNF se utiliza extensamente como notación para las gramáticas de los lenguajes de programación de la computadora, de los sistemas de comando y de los protocolos de comunicación, así como una notación para representar partes de las gramáticas de la lengua natural.