Analisis Lexico Ii

1,406 views

Published on

Continuación de la primera presentación sobre análisis léxico y análisis sintáctico, muestra cómo los árboles de análisis sintáctico se harían innecesariamente largos si se utilizaran gramáticas formales para ciertas construcciones que pueden analizarse con expresiones regulares.

Published in: Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,406
On SlideShare
0
From Embeds
0
Number of Embeds
17
Actions
Shares
0
Downloads
33
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Analisis Lexico Ii

  1. 1. Análisis Léxico Arboles de Análisis Sintáctico Recortados Leonel Morales Díaz [email_address] Copyright 2008 by Leonel Morales Díaz – Ingeniería Simple. Derechos reservados Disponible en: http://www.ingenieriasimple.com/compiladores
  2. 2. Analizar Léxico <ul><li>Arbol de Análisis Sintáctico </li></ul><ul><ul><li>x++ </li></ul></ul>Programa Instrucción Variable x ++ ¿Variable?
  3. 3. Producción de variable <ul><li>Variable -> Inicial Resto </li></ul><ul><li>Inicial -> _ | Letra </li></ul><ul><li>Resto -> Letra Resto | Especial Resto </li></ul><ul><li>Número Resto | nil </li></ul><ul><li>Letra -> [a..z] </li></ul><ul><li>Especial -> _ | - </li></ul>
  4. 4. Analizador Léxico <ul><li>Transformar no terminal en terminal </li></ul><ul><li>Programa -> Instrucción | { Rutina } </li></ul><ul><li>Rutina -> Instrucción ; Instrucción | </li></ul><ul><li>Instrucción ; Rutina </li></ul><ul><li>Instrucción -> nil | Variable ++ | Variable -- | </li></ul><ul><li>While Prueba do Programa </li></ul><ul><li>Prueba -> Variable <> 0 | Variable = 0 </li></ul><ul><li>Variable -> var </li></ul><ul><ul><li>(terminal) </li></ul></ul>
  5. 5. Analizador Léxico <ul><li>Variable -> var </li></ul><ul><ul><li>(terminal) </li></ul></ul><ul><li>Compone lexema </li></ul><ul><ul><li>“ _ammm-8ab” </li></ul></ul><ul><li>Lo transforma en var </li></ul><ul><li>El árbol sintáctico no crece más </li></ul>
  6. 6. Funciones Analizador Léxico <ul><li>Eliminar espacios </li></ul><ul><li>Eliminar comentarios </li></ul><ul><li>Constantes </li></ul><ul><li>Reconoce identificadores </li></ul><ul><li>Reconoce palabras clave </li></ul><ul><li>Palabras clave no pueden ser identificadores </li></ul>
  7. 7. Ejemplos <ul><li>Cuenta = Cuenta+ Incremento ; </li></ul><ul><li>id = id + id ; </li></ul><ul><li>id=id+id; </li></ul><ul><li>If a >= b then </li></ul><ul><li>If id mayorig b then </li></ul>
  8. 8. Tabla de símbolos <ul><li>Registrar todo los id </li></ul><ul><li>Funciones: </li></ul><ul><ul><li>Inserta(s,t) </li></ul></ul><ul><ul><ul><li>s es la cadena (Cuenta = ...) </li></ul></ul></ul><ul><ul><ul><li>t es el componente léxico (id) </li></ul></ul></ul><ul><ul><li>Busca(s) </li></ul></ul><ul><ul><ul><li>Verdadero si s existe en la tabla </li></ul></ul></ul><ul><ul><ul><li>Falso si s no existe </li></ul></ul></ul>
  9. 9. Tabla de símbolos <ul><li>Manejo de palabras reservadas </li></ul><ul><ul><li>char while; </li></ul></ul><ul><ul><li>int for; </li></ul></ul><ul><li>Dos opciones </li></ul><ul><ul><li>Meter todas las palabras clave en tabla </li></ul></ul><ul><ul><li>Hacer que las funciones las reconozcan </li></ul></ul>
  10. 10. Palabras reservadas <ul><li>Bien definidas desde el inicio </li></ul>

×