Sie sind auf Seite 1von 6

Instituto Tecnolgico Superior de Zapopan

Automatas II Analizador Sintactico


Nombre del alumno: Rodolfo Javier Melin Ruiz No control:09011293

Introduccion:
Un analizador sintctico (o parser) es una de las partes de un compilador que transforma su entrada en un rbol de derivacin.
1

El anlisis sintctico convierte el texto de entrada en otras estructuras (comnmente rboles), que son ms tiles para el posterior anlisis y capturan la jerarqu a impl cita de la entrada. Un anali!ador l"xico crea to#ens de una secuencia de caracteres de entrada y son estos to#ens los que son procesados por el anali!ador sintctico para construir la estructura de datos, por ejemplo un rbol de anlisis o rboles de sintaxis abstracta. El anlisis sintctico tambi"n es un estado inicial del anlisis de frases de len$uaje natural. Es usado para $enerar dia$ramas de len$uajes que usan flexin $ramatical, como los idiomas romances o el lat n. %os len$uajes &abitualmente reconocidos por los anali!adores sintcticos son los len$uajes libres de contexto. 'abe notar que existe una justificacin formal que establece que los len$uajes libres de contexto son aquellos reconocibles por un autmata de pila, de modo que todo anali!ador sintctico que recono!ca un len$uaje libre de contexto es equivalente en capacidad computacional a un autmata de pila. %os anali!adores sintcticos fueron extensivamente estudiados durante los a(os )* del si$lo ++, detectndose numerosos patrones de funcionamiento en ellos, cosa que permiti la creacin de pro$ramas $eneradores de anali!adores sintticos a partir de una especificacin de la sintaxis del len$uaje en forma ,ac#us-.aur por ejemplo, tales como yacc, /.U bison y 0ava ''.

Desarrollo:
Definiciones:
1ifndef 2E34.4'45.E678 1define 2E34.4'45.E678 2

1include 9stac#: usin$ namespace std; typedef enum to#en<7id=*,7eof , 7real, 7nat, 7mas, 7menos, 7i$ual, 7asi$, 7pd, 7pi, 7pcoma, 7condi,7div, 7mul, 7not, 7menor>,7dif, 7mayor, 7mayor>, 7menor, 7mayor4>, 7menor4>, 7comid, 7comis, 7amp,7or,7and,7dia4, 7be$in,7end,7octal,7true,7false, 7&exa,7dpuntos,7num, 7error=?*@ Ao#en; typedef enum $eneradores <body = B**,eseq,eseqC,assin$,quest,questC,prop, propC,clause,clauseC,rel,relC,exp,expC, term,termC,fact@ /enerador; extern c&ar Dcad; extern int lineas; extern stac# 9 int : pila; int predecir(int, int); bool is.um(int);

EEFeconocedores bool Gsp(); to#en a4den(); to#en a.um(); to#en aFel(int (D) (int ,c&ar)); bool reconoce(int (D)(int,c&ar)); 3

bool reconoce(c&ar ); bool eof(); void error();

EEreconocedor bool anali!ar(); EEvoid anali!ar(); 1endif

Hain 1include 9cstdlib: 1include 9iostream: 1include Idefiniciones.&I 1include Iarc&ivo.&I

usin$ namespace std;

int main(int ar$c, c&ar Dar$vJK)< c&ar arc&ivoJL*K; cout99IMN I;cin::arc&ivo; cOrc&ivo(arc&ivo); 4

if (anali!ar()) cout99Iarc&ivo sintacticamente correctoI99endl; EEanali!ar(); dOrc&ivo(); system(IpauseI); return E+4A76U''E66; @

Reconocedores
#include <iostream> #include <string.h> #include "archivo.h" #include "transiciones.h" #include "definiciones.h" using namespace std; char *cad !char * "malloc !#"; )"*egin"+"end"+"or"+"and"+"not"+"true"+"false",;

char reservadas$%&$'(& int lineas #;

*ool is-o.en!char "; void o*tener/adena!char c") int n datos!";

free !cad"; if !c if !c 012" n33; 45n4"n66;

cad

!char *" malloc!n3#";

fgets !cad+n+7"; ,

Sintactico
#include <iostream> #include <stac.> #include "definiciones.h" using namespace std; stac.<int> pila; 88888888888888888888888888888888888888888888888888888888888888888888888888888888 *ool is9um!int t") if !t :nat ;; t :octal ;; t :real ;; t :he<a"

return true; return false; ,

/onclusiones: 'on esta prctica lo$ramos entender como es el proceso de anlisis sintctico con respecto de una $ramtica cuidando sus re$las de sintaxis. 2estacando que si le

Das könnte Ihnen auch gefallen