Informatica

Solo disponible en BuenasTareas
  • Páginas : 22 (5270 palabras )
  • Descarga(s) : 0
  • Publicado : 13 de enero de 2011
Leer documento completo
Vista previa del texto
|

Compiladores

1 ANÁLISIS SINTÁCTICO

1.1 FUNCIÓN DEL ANALIZADOR SINTÁCTICO

1.1.1 DESCRIPCIÓN GENERAL

Según el diccionario de la Real Academia Española, la sintaxis es la “parte de la gramática que enseña a coordinar y unir las palabras para formar las oraciones y expresar conceptos.” En una segunda acepción, define sintaxis como un “conjunto de reglas que definen lassecuencias correctas de los elementos de un lenguaje de programación”. Esta última definición implica que todo lenguaje de programación tiene reglas que prescriben la estructura sintáctica de programas bien formados. Generalmente, un programa está formado por bloques. A su vez, los bloques están conformados por proposiciones, las cuales se forman a partir de expresiones, y estas últimas se forman concomponentes léxicos (tokens).

Programa bloques proposiciones expresiones componentes léxicos

Durante el capítulo de análisis léxico se vio que el analizador léxico y el analizador sintáctico (parser) trabajan en conjunto y que el analizador sintáctico obtiene una cadena de componentes léxicos que le entrega el analizador léxico (ver figura 1.1). En este punto el analizadorsintáctico comprueba que la cadena pueda ser generada por la gramática del lenguaje fuente. Se supone que el analizador sintáctico informará de cualquier error de sintaxis de manera inteligible. También debería recuperarse de los errores que ocurren frecuentemente para poder continuar procesando el resto de su entrada.

Figura 1.1: Posición del analizador sintáctico en el modelo de un compiladorLos métodos empleados generalmente en los compiladores se clasifican como descendentes o ascendentes. Como sus nombres indican, los analizadores sintácticos descendentes construyen árboles de análisis sintáctico, los cuales se describen más adelante, desde arriba (la raíz) hacia abajo (las hojas), mientras que los analizadores sintácticos ascendentes

Compiladores

comienzan en las hojas ysuben hacia la raíz. En ambos casos, se examina la entrada al analizador sintáctico de izquierda a derecha, un símbolo a la vez.

Los métodos descendentes y ascendentes más eficientes trabajan sólo con subclases de gramáticas, pero varias de estas subclases, como las gramáticas LL y LR, son lo suficientemente expresivas para describir la mayoría de las construcciones sintácticas de los lenguajesde programación. Los analizadores sintácticos implementados a mano a menudo trabajan con gramáticas LL(1). Los analizadores sintácticos para la clase más grande de gramáticas LR se construyen normalmente con herramientas automatizadas.

Se asume que la salida del analizador sintáctico es una representación del árbol de análisis sintáctico para la cadena de componentes léxicos producida por elanalizador léxico. En la práctica hay varias tareas que se pueden realizar durante el análisis sintáctico, como recoger información sobre distintos componentes léxicos en la tabla de símbolos, realizar la verificación de tipo y otras clases de análisis semántico, y generar código intermedio. No obstante, estas actividades se verán más adelante.

1.1.2 MANEJO DE ERRORES SINTÁCTICOS

Si uncompilador tuviera que procesar sólo programas correctos, su diseño e implementación se simplificarían mucho. Pero los programadores a menudo escriben programas incorrectos y un buen compilador debería ayudar al programador a identificar y localizar errores. Estos errores pueden ser de diversos tipos, por ejemplo:
Léxicos, como escribir mal un identificador, palabra clave u operador.Sintácticos, como una expresión aritmética con paréntesis no equilibrados. Semánticos, como un operador aplicado a un operando incompatible.
Lógicos, como una llamada infinitamente recursiva.

A menudo, gran parte de la detección y recuperación de errores en un compilador se centra en la fase de análisis sintáctico. Una razón es que muchos errores son de naturaleza sintáctica o se manifiestan...
tracking img