Análisis Sintáctico Capítulo 4 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
Analizador Sintáctico Analizador Léxico Analizador sintáctico Tabla de Símbolos Componente Léxico (Token) GetNextToken() Programa Fuente Arbol de Análisis Sintáctico Resto de Etapa Inicial Código Intermedio
Errores Léxicos Escribir mal algo (fi en lugar de if) Sintácticos Paréntesis no equilibrados If sin Then Semáticos Llamada a función con parámetros de tipo incorrecto Lógicos Recursión infinita Run time error
Errores Sintácticos Objetivos Informar de los errores con claridad Lugar donde ocurrió el error Recuperarse de los errores Varias estrategias No retrasar el análisis en programas correctos
Programa ejemplo Program impmax(input, output); Var x, y : integer; Function max(i: integer; j: integer) : integer; {devuelve el máximo de los enteros i y j} Begin if i > j then max := i else max := j End; Begin readln(x,y); writeln(max(x,y)) End.
Estrategias de recuperación de errores En modo de pánico A nivel de frase De producciones de error De corrección global
En modo de pánico Se descubre el error Se desechan símbolos de entrada Se llega a un componente de sincronización ; end loop then Se debe definir cuáles se usarán Puede desechar gran parte de la entrada Garantiza recuperación
A nivel de frase Identificar prefijo para la entrada restante Ejemplo If  while  not true then ... Entrada restante: not true then... Prefijo identificable: if Corrección:  if not true then ... Difícil de implementar
Producciones de error Se identifican patrones de error Se incluyen producciones para esos patrones Si la producción se usa... Corregir en reglas semánticas Modificar la gramática
Corrección Global Identificar todas las posibles variaciones Evaluar la mínima Utilizarla

Cap4 Analisis Sintactico

  • 1.
    Análisis Sintáctico Capítulo4 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.
    Analizador Sintáctico AnalizadorLéxico Analizador sintáctico Tabla de Símbolos Componente Léxico (Token) GetNextToken() Programa Fuente Arbol de Análisis Sintáctico Resto de Etapa Inicial Código Intermedio
  • 3.
    Errores Léxicos Escribirmal algo (fi en lugar de if) Sintácticos Paréntesis no equilibrados If sin Then Semáticos Llamada a función con parámetros de tipo incorrecto Lógicos Recursión infinita Run time error
  • 4.
    Errores Sintácticos ObjetivosInformar de los errores con claridad Lugar donde ocurrió el error Recuperarse de los errores Varias estrategias No retrasar el análisis en programas correctos
  • 5.
    Programa ejemplo Programimpmax(input, output); Var x, y : integer; Function max(i: integer; j: integer) : integer; {devuelve el máximo de los enteros i y j} Begin if i > j then max := i else max := j End; Begin readln(x,y); writeln(max(x,y)) End.
  • 6.
    Estrategias de recuperaciónde errores En modo de pánico A nivel de frase De producciones de error De corrección global
  • 7.
    En modo depánico Se descubre el error Se desechan símbolos de entrada Se llega a un componente de sincronización ; end loop then Se debe definir cuáles se usarán Puede desechar gran parte de la entrada Garantiza recuperación
  • 8.
    A nivel defrase Identificar prefijo para la entrada restante Ejemplo If while not true then ... Entrada restante: not true then... Prefijo identificable: if Corrección: if not true then ... Difícil de implementar
  • 9.
    Producciones de errorSe identifican patrones de error Se incluyen producciones para esos patrones Si la producción se usa... Corregir en reglas semánticas Modificar la gramática
  • 10.
    Corrección Global Identificartodas las posibles variaciones Evaluar la mínima Utilizarla