You are on page 1of 5

Aproximaciones para construir el analizador lxico grfico

Adhoc.-consiste en la codificacin de un programa que reconoce que no sigue formalismos propios


de la teora de autmatas. Es muy propensa a errores.
Meta-compilador.-En este caso se utiliza con un programa especial que tiene como entrada partes
de la forma (expresin regular accin). El meta-compilador genera todos los autmatas finitos.
Analizador sintctico.- Todo analizador de programacin obedece a unas reglas que describen la
estructura sintctica de los programas bien formados que aceptan.
a) Las gramticas son especificaciones sintcticas y precisas del lenguaje de programacin.
b) A partir de una gramtica se puede generar automticamente un analizador sintctico.
c) El proceso genera un autmata el anterior puede llevar a descubrir ambigedades.
d) Una gramtica proporciona una estructura lenguaje de programacin siendo ms fcil
generar cdigo y detectar errores.
e) Es ms fcil emplear y o modificar el lenguaje si esta descrito con una gramtica.

CONCEPTO DE ANALIZADOR SINTACTICO
Es el que se encarga de checar la secuencia de tokens que representa el valor de entrada en base
de una gramtica dada.

1. Incorpora acciones semnticas en las que al colocar las fases de la compilacin va
generando el cdigo lxico.
2. Informa de la naturaleza de los errores sintcticos y segn el compilador intenten
repararse de ellos.
3. Controla el flujo de tokens reconocidos ** con base a la informacin de la tabla de
smbolos.
MANEJADOR DE ERRORES SINTACTICOS
Los errores de programacin pueden ser de los siguientes tipos:

Lxicos: Son productos al escribir un mal un identificador palabra reservada o un operador
Sintctico: Generados por una expresin aritmtica o parntesis no equilibrados** algo que no va
dentro de la sintaxis.
Semnticos: Como un operador aplicado o un operando incompatible errores si una variable no
est declarada.
Logicos: Puede ser una llamada infinitamente recursiva**int int combinacin de errores
Correccion: Cuando el programa no hace lo que tiene que hacer.

ESTRATEGIAS PARA GESTIONAR LOS ERRORES

1. Ignorar el problema (panic mode): Consiste en ignorar el resto de la entrada hasta llegar a
una condicin de seguridad ** a=10; b=a*c/d**lo elimina c=a+b;
2. Recuperacin a nivel frase: Recuperar el error una vez descubierto** a=10; b=a*c/d;
c=a+b;
3. Reglas de produccin adicionales: Esto es un mecanismo que aade a la gramtica formal
que describe el lenguaje reglas de produccin para reconocer los errores mas comunes.

TIPOS DE ANALISIS SINTACTICOS

Descendentes.- Las cuales pueden ser axioma inicial y van efectuando derivaciones que reconocen
las sentencias y estas pueden ser:
a) Con retroceso b) con funciones recursivas c) gramticas ll
Ascendentes.- parten de la sentencia de entrada y van aplicando derivaciones inversas desde el
consecuente hasta el ascendente hasta llegar al axioma principal y pueden ser
a) Axioma principal b) con gramatica LR ** reutiliza las cosas programa por partes y luego las
une.
Diagramas de sintaxis
Los diagramas de sintaxis tambin conocidos como diagramas de conway es un grafo dirigido por
elementos no terminales aparecen como rectangulares y los terminales como crculos y elipses.

Diagramas de conway

1 secuencia
Checa secuencia()
{
Gettoken();
Do
{checa expresin();
If (token = ;)
{
printf(error!);
exit() ;
}
Get token();
}
While (token!=eof ());
}
2 expresin
Checaexpresion()
{
Checaexpresionsimple();
If(token===|| token==<|| token==<=|| token==!=|| token==>||
token==>=||)
{
Gettoken();
Checaexpresionsimple();
}else{
Printf(ERROR);
}
}





3 expresion simple
Checaexpresionsimple(){
If(token==-|| token==-)
{
Gettoken();
Checatermino();
While(token==+|| token==-|| token==OR)
{
Gettoken();
Checatermino();
}
}
}

4 termino
Checatermino(){
Checafactor()
While(token==*|| token==/|| token==%|| token==AND)
{
Gettoken();
Checafactor();
}

}
5 Factor
Checafactor()
{
Switch(token)
{
Case id:gettoken()
Break;
Case num:gettoken()
Break;
Case not:gettoken()
Break;
Case (:gettoken()
Checaexpresion();
If(token!=))
Printf(Error) ;
Gettoken()
Break;
}


}



Anlisis Semntico

Ademas de controlar un programa cumple con las reglas de la gramatica del lenguaje hay que
comprobar que lo que se quiere hacer tenga sentido.
Definicion dirigida por sintaxis:consiste en asociar una accin semntica o una regla de produccin
pero dicha accin no implica cuando se debe ejecutar dicha accin semntica.
Esquema de traduccin: Es igual que una definicin dirigida por sintaxis a excepto que se
suministre informacin acerca de cuando se deben ejecutar las acciones semnticas.
Scaner-> lxico
parser->sintctico,semntico.

Tabla de smbolos
Es una estructura de datos de alto rendimiento que almacena toda la informacin necesaria sobre
los identificadores de usuario
1 ejecuta chequeo semntico y genera el cdigo
Esta estructura solo permanece en memoria el tiempo de compilacin no de ejecucin.
Informacin que almacena una tabla de smbolos
a) Nomb elemento
b) Tipo elemento
c) Direccin en memoria
d) Valor del elemento
e) Numero de dimensiones
f) Tipos de parmetros formales
Nominal: el programador debe analizar y elegir que nombre darle a las variables
Estructural: Tiene que ser como se va a amanejar
Funcional: que las variables declaradas se usen

Generacion de cdigo
Se usa la reutilizacin de front end para crear otros compiladores del mismo lenguaje pero que
generan cdigo para otras plataformas.
La filosofa verstil se interpreta en tiempo de ejecucin a travs de un motor de ejecucin**JVM

CONSIDERACIONES PARA FACILITAR LA LECTURA
1.-simples,compuestas
2.-if then else, while, repeat, case.

You might also like