Vous êtes sur la page 1sur 3

Jonathan Francisco Salvador Morataya SM141289 03L

Analizador Lxico

El analizador sintctico (parser) es el que utiliza los primeros componentes del analizador
lxico el cual utiliza los tokens creados para dar una representacin intermedia en forma de
rbol describiendo la estructura gramatical del flujo de los tokens y que este sea vlido. Esto
hace que los analizadores sintcticos construyan una derivacin por la izquierda o por la
derecha del programa fuente, el cual son los recorridos determinados del rbol.

Las funciones son


- Comprobar que sea sintcticamente correcto y rechazar lo incorrecto.
- Sirve de gua para el proceso de traduccin.
- Generar cdigo intermedio
- Acceder a la tabla de smbolos.

CLASIFICACIN:
La tarea esencial de un analizador es determinar si una determinada entrada puede ser
derivada desde el smbolo inicial, usando las reglas de una gramtica formal, entre las cuales
tenemos:

Analizador sintctico descendente (Top-Down-Parser): un analizador puede empezar con el


smbolo inicial e intentar transformarlo en la entrada, intuitivamente esto sera ir dividiendo
la entrada progresivamente en partes cada vez ms pequeas, de esta forma funcionan los
analizadores LL, un ejemplo es el javaCC.
Analizador sintctico ascendente (Bottom-Up-Parser): un analizador puede empezar con la
entrada e intentar llegar hasta el smbolo inicial, intuitivamente el analizador intenta
encontrar los smbolos ms pequeos y progresivamente construir la jerarqua de smbolos
hasta el inicial

Manejo de errores sintcticos Si un compilador tuviera que procesar slo programas


correctos, su diseo e implantacin se simplificaran mucho. Pero los programadores a
menudo escriben programas incorrectos, y un buen compilador debera ayudar al
programador a identificar y localizar errores. Es ms, considerar desde el principio el manejo
de errores puede simplificar la estructura de un compilador y mejorar su respuesta a los
errores

Los errores en la programacin pueden ser de los siguientes tipos:


- Lxicos, producidos al escribir mal un identificador, una palabra clave o un operador.
- Sintcticos, por una expresin aritmtica o parntesis no equilibrados.
- Semnticos, como un operador aplicado a un operando incompatible.
- Lgicos, puede ser una llamada infinitamente recursiva.
Jonathan Francisco Salvador Morataya SM141289 03L

El manejo de errores de sintaxis es el ms complicado desde el punto de vista de la creacin


de compiladores. Nos interesa que cuando el compilador encuentre un error, se recupere y
siga buscando errores. Por lo tanto el manejador de errores de un analizador sintctico debe
tener como objetivos:
- Indicar los errores de forma clara y precisa. Aclarar el tipo de error y su localizacin.
- Recuperarse del error, para poder seguir examinando la entrada.
- No ralentizar significativamente la compilacin.

Gramatica Chomsky

- Definicin (Gramticas sensibles al contexto o de Tipo 1)

Llamaremos gramtica sensible al contexto a toda G = (V, , Q0, P) gramtica tal que todas
las producciones de P son del tipo siguiente:

A , donde A V y , , ( V) , 6= .

Un lenguaje sensible al contexto es un lenguaje generado por una gramtica libre de


contexto.

- Definicin (Gramticas Libres de Contexto o de Tipo 2)

Llamaremos gramtica libre de contexto a toda G = (V, , Q0, P) gramtica tal que todas las
producciones de P son del tipo siguiente:

A , donde A V y ( V) .

Un lenguaje libre de contexto es un lenguaje generado por una gramtica libre de contexto

- Definicin (Gramticas Regulares o de Tipo 3)

Definiremos las gramticas con producciones lineales del modo siguiente:


Llamaremos gramtica lineal por la izquierda a toda G := (V, , Q0, P) gramtica tal que todas
las producciones de P son de uno de los dos tipos siguientes:

A a, donde A V y a {}.
A aB, donde A, B V y a {}
Jonathan Francisco Salvador Morataya SM141289 03L

Supongamos que queremos definir el lenguaje que solo acepta programas donde las
variables hayan sido especificadas. Por simplicidad supongamos que solo vamos a utilizar
programas con una sola variable.

Boolean a
a=true
Es un programa vlido,
pero Boolean a
b=true
no lo es.

Una posible gramtica (solo en el caso de los identificadores estn formados por las letras
a,b) :

S Boolean CD=true,
C aCA|bCB|, D
AD aD, BD bD
Aa aA, Ab bA
Ba aB, Bb bB

Definicin (Gramticas de Tipo 0)


Llamaremos gramtica de tipo 0 a toda G = (V, , Q0, P) gramtica tal que todas las
producciones de P son del tipo siguiente:

, donde , ( V) .

Vous aimerez peut-être aussi