Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Analisis Lexico Ii

1,418 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
  • Be the first to comment

  • Be the first to like this

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>

×