Sunteți pe pagina 1din 8

ANALIZADOR LEXICO

EDUARDO ESCALLON AGUILAR CRISTIAN IVAN SARABIA PRENS MURPHY HORTA CAMARGO VII SEMESTRE

INGENIERIA DE SISTEMAS

JOAQUIN SILVA ROMERO DOCENTE

CORPORACION UNIVERSITARIA RAFAEL NUEZ CARTAGENA DE INDIAS 2011

INTRODUCCION El siguiente compilador, es realizado en java, con el fin de que solo acepte letras, nmeros, operadores o los parntesis, con el fin de estudiar y comprender la funcionalidad de un compilador, sus caractersticas y su forma de verificar que el cdigo que se escriba corresponda con el lenguaje y los autmatas estipulados para el funcionamiento del compilador.

OBJETIVOS General: Realizar un compilador que a travs de sus 3 analizadores; lxico, sintctico y semntico pueda verificar que segn un lenguaje estipulado un cdigo este correcto. Especficos: Desarrollar un analizador lxico Desarrollar un lenguaje y unos autmatas para el analizador lxico Obtener la lista de errores del analizador lxico Desarrollar un analizador sintctico Desarrollar la lista de errores del analizado sintctico Desarrollar un analizador semntico Desarrollar la lista de errores del analizador semntico

Lenguaje: {a-z}| {A-Z}|{0-9}|{=,+,-,*,/,(,)} ANALIZADOR LEXICO GRAMTICA Variable: [a-z][A-Z] |<variable><variable>| Digito: [0-9] |<digito><digito>| Operador: +|-|*|/|=|(|)

LISTA DE ERRORES: No se acepta caracteres que no sean letras, nmeros los siguientes smbolos + - * / ( ) =

Nota: Debe colocar espacio obligatoriamente despus de cada identificacin.

ANALIZADOR SINTACTICO GRAMATICA: Expresin: (<variable>|<digito>| )(<operador>)(<variable>|<digito>| <Expresin>) Asignacin: (<variable>)(=)(<Expresin>)

LISTA DE ERRORES: Error sintctico de orden de los caracteres que se digitaron

AUTOMATAS Autmata solo nmeros

Q0

Q1 Q1

Cudrupla:

Q= {Q0, Q1} TE= {0-9} S= (Q0, Q1) = [0-9] (Q1,Q1) = [0-9] Q0= Q0 F= Q1

Autmata letras maysculas y minsculas

Q0

Q1 Q1

Cudrupla: Q= {Q0, Q1} TE= {[A-Z] |[a-z]} S= (Q0, Q1) = [A-Z] |[a-z] (Q1, Q1) = [A-Z] |[a-z] Q0= Q0 F= Q1

Autmata operadores [+|-|*|/|=|(|)]

Q0

[+|-|*|/|=|(|)]

Q1 Q1

Cudrupla: Q= {Q0, Q1} TE= {+|-|*|/|=|(|)} S= (Q0, Q1) = [+|-|*|/|=|(|)] (Q1, Q1) = [+|-|*|/|=|(|)] Q0= Q0 F= Q1

Autmata caracteres [(|)]

Q0

[(|)]

Q1 Q1

Cudrupla: Q= {Q0, Q1} TE= {(|)} S= (Q0, Q1) = [(|)] (Q1, Q1) = [(|)] Q0= Q0 F= Q1

CONCLUSIN Recordemos que un compilador lo componen se compone de varios anlisis entre ellos: anlisis lxico, anlisis sintctico y anlisis semntico; cada uno de estos anlisis se encarga de cumplir una funcin especfica en el compilador, nuestro objetivo es crear un compilador que realice estos tres anlisis, hasta el momento solo realiza el anlisis lxico esta es la primera parte de nuestro compilador, la idea es implementar los dos anlisis restantes para que sea un compilador completo. Nuestra primera parte del compilador actualmente es el anlisis lxico o analizador lxico, el cual se encarga de hacer un anlisis lineal agrupando la los caracteres en componentes lxicos; los espacios en blanco entre cada carcter son eliminados durante este anlisis. Nuestras expresiones regulares denotan un conjunto de secuencia de smbolos validos que se construyeron a partir del alfabeto del lenguaje que definimos, en nuestro compilador para este caso la primera parte que es el anlisis lxico existen validaciones y restricciones por llamarlas de algn modo, estas restricciones no hacen parte del lenguaje ya definido; por eso al momento de que nuestro compilador realice o empiece a hacer el anlisis lxico mostrara errores a aquellos caracteres que no estn definidos; realizamos una representacin grafica de los autmatas que nuestro compilador valida. Podemos decir que nuestro objetivo de la primera fase se ha cumplido pues nuestro compilador realiza como primera medida un anlisis lxico, como arriba mencionamos lo que buscamos es la

creacin de un compilador con sus tres analizadores pero hasta el momento se cumpli con la realizacin del analizador lxico pues este era el objetivo de nuestra primera fase la creacin de este anlisis y fue cumplido. En nuestro analizador lxico, se puede observar que este se encarga de la parte de verificacin para todos aquellos caracteres que son vlidos para el compilador, y la lista de errores que corresponde a aquellos caracteres que no son permitidos, que no son validos en el lenguaje que manejamos, este anlisis se realiza o se obtiene verificando paso por paso todos y cada uno de los caracteres digitados por el usuario, verifica si se encuentran entre algn grupo de los caracteres permitidos, en nuestro caso los grupos permitidos son todas las letras del alfabeto espaol, estas las definimos de la siguiente forma *A.Z+ *az+ tanto maysculas como minsculas y lo que indica es que son todas las letras por ejemplo (abcdef, ghijklLLmnopq etc.), todos los nmeros a los que definimos de la siguiente forma *09+ que lo que indica que lo que se va a validar son los nmeros por ejemplo (1234567890), y los operadores que los definimos de la siguiente manera [+|-|*|/|=|(|)] lo que indica que valida los operadores siguientes +, -, *, /, (, ), = y si el carcter digitado no se encuentra en nuestros este lenguaje simplemente lo coloca en una lista de errores, y lo muestra al usuario diciendo cuales son los caracteres que no se permiten. En la vida tambin tenemos validaciones, as que podramos comparar en cierto modo un compilador con las restricciones que cotidianamente tenemos, en este sentido podramos decir que en la vida tambin tenemos compiladores y en el caso del anlisis lxico del compilador que verifica o valida caracteres definidos en el lenguaje, en nuestra vida aunque no lo aceptemos tenemos un lenguaje definido que quizs en muchos aspectos no son validados, por ejemplo en el caso de las creencias religiosas, o en la parte racial. Por ejemplo, encontramos en la cotidianidad que para poder ingresar a algunos trabajos debes tener ciertas preferencias o distinciones, entonces podramos denominar esas preferencias como el lenguaje que ya se encuentra definido y al que debemos ser compatibles, simplemente al que debemos pertenecer.

S-ar putea să vă placă și