SlideShare una empresa de Scribd logo
1 de 6
ANÁLISIS LÉXICO

                                             Erick Vilchez Agruta

                                          Elizabeth Lopez Vasquez

                                         Dora Callisaya Choquecota


                              Universidad Nacional Jorge Basadre Grohmann
                         Escuela Profesional de Ingeniería en Informática y Sistemas


                                  Emails:
                                  darknewman68@gmail.com

                                  elizalopezvasquez@gmail.com

                                  eliza.bella143@gmail.com


                   RESUMEN

El presente artículo presentaremos la información                      La    segunda      que     determina    la
detallada acerca de cómo funciona el análisis                          organización sintáctica del programa.
léxico en el entorno de compiladores, mediante el
uso de gramáticas para poder comprender la                   A lo largo de este artículo, plantearemos los
separación del lenguaje léxico del semántico,                objetivos que debe cumplir un Analizador Léxico.
entender los diagramas de transición para lo cual
se detallaran en el siguiente articulo.
                                                                1. ANALIZADOR LEXICO
                   ABSTRACT
                                                                  1.1.      OBJETIVOS
  This article presents detailed information about
      how the lexical analysis in the compiler                         Comprender la separación del análisis
   environment through the use of grammars to                          léxico del semántico
   understand the separation of lexical semantic                       Construir expresiones regulares de
 language, understanding the transition diagrams                       gramáticas regulares
     which are detailed in the following article.                      Entender los diagramas de transición
                                                                       Codificar un analizador léxico a partir de
              PALABRAS CLAVES                                          su diagrama de transición
                                                                       Entender los errores y cómo manejarlos
Analizador,    léxico,      semántico,    scanner,
compilador.
                                                                1.2.       FUNCIÓN

                                                                El análisis léxico representa el enlace entre el
                INTRODUCCIÓN                                    programa fuente y el analizador sintáctico. El
                                                                análisis léxico, por medio de un examen
Analizar un programa fuente es algo complejo por                carácter a carácter, separa el programa
ende será recomendable dividir la fase de análisis              fuente en piezas llamadas fichas que
en dos partes:                                                  representan todo lo que el programa fuente.
        La      primera     que    identifica los               1.3.       VENTAJAS
        constructores de bajo nivel del lenguaje
        (fichas) tales como variables, palabras
        llave, etiquetas y operadores.
2   Universidad Nacional Jorge Basadre G.


             La búsqueda de caracteres es lenta y al           enfatiza      el     comportamiento
             separarla de la semántica se puede                dependiente del tiempo del sistema.
             dedicar tiempo a su mejora.                       Este tipo de modelo sólo importaba
             Se logra un sistema más simple                    para una categoría de sistemas
             No se entrega más información de la               conocido como sistemas de tiempo-
             requerida al análisis semántico.                  real; como ejemplo de estos sistemas
                                                               se tienen el control de procesos,
             Por ejemplo, es más fácil analizar fichas         sistemas de conmutación telefónica,
             tales como palabras llave, identificadores        sistemas de captura de datos de alta
             y operadores en lugar de fichas que son           velocidad y sistemas de control y
             los caracteres terminales de conjunto de          mando militares.
             símbolos utilizados por el lenguaje
             (A,B,C,... etc.). La primera ficha para una       Los componentes de un DTE son:
             expresión DO WHILE será DO en lugar
             de D que el análisis puede considerar             o   ESTADOS: comportamiento del
             como parte de un lazo en lugar de un                  sistema que es observable en el
             identificador que comienza con D.                     tiempo. Los sistemas tienen un
                                                                   estado inicial, pero pueden tener
             Se hace más portátil el sistema puesto                múltiples      estados     finales
             que las peculiaridades del alfabeto de                (mutuamente excluyentes).
             entrada se pueden restringir al analizador
             léxico.                                           o   Cambios de estados: condiciones
             Existen herramientas especializadas que               y acciones.
             ayudan     en    la   construcción      de
             analizadores léxicos cuando la etapa de
             análisis léxico y semántico están
             separadas.


      1.4.       INTERACCION CON EL ANÁLISIS
                 SEMÁNTICO

      El análisis léxico puede interactuar con el
      semántico de dos formas:                             Los nodos del diagrama de estado finito
                                                           representan los estados del autómata de
             1. El analizador léxico puede realizar        estado finito y los estados los nombramos
                una pasada completa del programa           S, A y B.
                fuente antes de que el análisis
                semántico comience, las fichas son         Los arcos que llevan de un estado a otro
                guardadas en una tabla.                    indican las transiciones de estado y las
                                                           etiquetas a un lado de ellos indican la
             2. Una interacción entre el analizador        entrada que causa la transición. El estado
                léxico y semántico, el analizador          inicial es S y los nodos concéntricos
                léxico es llamado por el semántico         indican los estados finales (y aceptación
                cuando se requiere la siguiente ficha      de la entrada), en este caso B.
                del programa fuente.

      La segunda forma es el método preferido de
      operación puesto que no se requiere de
      formar una representación completa interna
      del programa fuente en la memoria. Otra
      ventaja de este método es que se pueden
      escribir distintos analizadores léxicos para el
      mismo lenguaje que varíen de acuerdo al
      método utilizado para introducir el programa a
      la máquina.

      1.5.       DIAGRAMAS DE TRANSICION

                 El Diagrama de Transición de Estado
                 (también conocido como DTE)


                                                                                     Análisis Léxico
3   Universidad Nacional Jorge Basadre G.


                                                                     sucesivos      hasta      lograr     la
                                                                     sincronización con alguna palabra
                                                                     llave conocida y válida en el lenguaje.

                                                                         1) Algunas otras acciones de
                                                                            recuperación de errores son:

                                                                         2) Borrar      los      caracteres
                                                                            extraños.
                                                                         3) Insertar     los     caracteres
                                                                            faltantes.
                                                                         4) Reemplazar       un    carácter
                                                                            incorrecto por otro correcto.
                                                                         5) Trasponer dos caracteres en
                                                                            posición equivocada.

                                                          1.8.       ALMACENAMIENTO DE ENTRADA
             Si no existe transición designada para un
             estado del diagrama, la entrada es                      Es necesario el programa fuente para
             rechazada, tal es el caso de número 12.,                poderlo analizar y entregar las fichas
             un diagrama de estado finito se llama                   al analizador semántico. Se requiere
             también aceptor determinantico de estado                en muchos casos ver mas allá del
             finito.                                                 carácter que hemos leído para saber
                                                                     si encontró un lexema o un error en la
                                                                     entrada.
      1.6.       GRAMÁTICAS   REGULARES              Y
                 EXPRESIONES REGULARES                               En general existen tres técnicas para
                                                                     codificar un analizador léxico:

             Una forma más compacta de representar                   1. Usar un programa generador tal
             las gramáticas regulares es con el uso de                  como     LEX    que     usa   las
             expresiones regulares. Las expresiones                     expresiones regulares de un
             regulares hacen uso de tres operadores                     lenguaje como base.
             (asuma que dos expresiones e1 y e2                      2. Escribir un analizador léxico en
             generan los lenguajes L1 y L2                              algún lenguaje de alto nivel.
             respectivamente):                                       3. Escribir un analizador léxico
                                                                        usando ensamblador.
             Concatenar. Definida como e1 e2={x y | x
             Є L1 y e y Є L2}                                  Una técnica muy utilizada es contar con
                                                                 una memoria provisional dividida en dos
             Alternar. Denotada como | ó +, es la unión          partes de N caracteres donde N es
             de lenguajes denotados por dos                      usualmente el número de bytes que
             expresiones por lo que e1|e2 = {x | x Є L1          pueden leerse a la vez del dispositivo de
             ó x Є L2}                                          entrada, generalmente un bloque de disco
                                                                 duro o flexible.
             Cerrar. Representada por los corchetes
             {}, denota la repetición de la expresión            Si la memoria provisional no se llena por
             cero o más veces, por lo que {e1} = {x | x          completo, se usa un carácter especial que
                                        i
             Є L1*} donde L1*= Ui=0 Є L1                         simbolice el fin del archivo.

                                                                 Se usan dos apuntadores para llevar el
      1.7.       ERRORES LEXICOGRAFICOS                          control de cada lexema que se trata de
                                                                 identificar. Si el apuntador derecho rebasa
                 Algunos tipos de errores pueden                 la mitad de la memoria provisional, un
                 reconocerse a nivel léxico, pero el             nuevo bloque es leído de la memoria
                 analizador léxico tiene una vista muy           secundaria al bloque izquierdo.
                 reducida y localizada del programa
                 fuente.                                         Si el apuntador de la derecha rebasa el
                                                                 límite de la memoria provisional de la
                 La recuperación de errores se da en             derecha, un nuevo bloque se lee a ésta.
                 una de las formas de modo de pánico
                 donde    se    eliminan  caracteres

                                                                                           Análisis Léxico
4   Universidad Nacional Jorge Basadre G.


      Este esquema funciona la mayoría de las
      veces a menos que la distancia que deba
      recorre el apuntador para reconocer una ficha
      exceda a la longitud de la memoria
      provisional.


      1.9.    RECONOCIMIENTO DE FICHAS

      Existen casos en los que una ficha o un
      identificador, al contar con las mismas reglas
      para su construcción, pueden confundirse
      hasta que no exista un símbolo que clarifique
      su sintaxis, por ejemplo (clásico de
      FORTRAN):
                                                       1.10.   AUTOMATAS DE ESTADO FINITO
                     DO10I = 1,20
                     DO10I = 1+20                         Par cada lenguaje definido por una
                                                          gramática regular o expresión regular,
                                                          existe una autómata de estado finito
      En el primer caso es el uso de una palabra          determístico para reconocer el mismo
      reservada, en el segundo caso una variable.         lenguaje. Un autómata de estado finito se
      El problema se soluciona utilizando los dos         define como un conjunto de 5 elementos
      apuntadores a la memoria provisional de             o componentes de la siguiente forma:
      entrada.
                                                                        M=(å,Q,D,q0,F)
      Cuando un caso similar ocurre, el analizador
      debe seguir buscando hacia adelante en el           El alfabeto ∑ del autómata de estado
      texto moviendo el apuntador de la derecha           finito es el mismo que el de la gramática
      mientras mantiene fijo el de la izquierda.          regular, Q es el conjunto finito de estados
                                                          de los cuales q0 es uno específico
      Si el camino que se tomo dentro del diagrama        llamado estado inicial; F es el
      de estado finito es el equivocado, el               subconjunto de Q de estados finales o de
      apuntador de la derecha se regresa a su             parada. Un estado final es cualquier
      posición original y se toma otra rama del           estado en el que el autómata puede
      diagrama, si el camino fue el adecuado, el          detenerse.
      apuntador de la izquierda se mueve hasta
      donde se encuentra el de la derecha.                Un conjunto de reglas de transición
                                                          llamadas ∆, definen cómo el autómata
      Debido a esta función de los apuntadores de         avanza de estado a estado en base a los
      la memoria provisional se les llama                 símbolos de la “cinta de entrada”.
      centinelas.
                                                          Las transiciones son una función parcial
      Un caso claro del uso de centinelas es el           del estado actual y del siguiente símbolo
      caso de reconocer números de distintos tipos.       de entrada:
      En la figura anterior, modificamos el estado
      22 de acuerdo a la siguiente figura:                               ∆: Qx∑→Q

                                                          Para un estado A con un símbolo de
                                                          entrada a a analizar, una transición que
                                                          avanza el autómata al siguiente estado B
                                                          se escribe como:



                                                          Un autómata de estado finito acepta la
                                                          cadena de entrada si el autómata se
                                                          encuentra en su estado final y no hay
                                                          más símbolos en la cinta. De otra forma,
                                                          el autómata se dice que rechaza o se
                                                          bloquea cuando no hay un estado


                                                                                    Análisis Léxico
5   Universidad Nacional Jorge Basadre G.


          definido de transición para el siguiente         Debido a esto, se requiere de una
          símbolo de la entrada o cuando no hay            estrategia para tratar los errores respecto
          más símbolos en la cinta y el autómata no        a las reglas que define el lenguaje de
          está en un estado final.                         programación. La respuesta a los errores
                                                           cae entre el colapso total del sistema
          Cuando un autómata rechaza una                   hasta a la corrección automática completa
          entrada, la cadena no forma parte del            del programa fuente.
          lenguaje.
                                                           Una clasificación posible de los errores es
          Dos autómatas son equivalentes si                la siguiente:
          aceptan el mismo lenguaje. Son isomór-
          ficos si son equivalentes en sus estados y            I.      Respuestas inaceptables
          transiciones, pero los estados no tienen el                   1. Respuesta incorrecta (el error
          mismo nombre. Se les nombra reducidos                         no se reporta)
          cuando no existe un autómata de estado                                  a. El compilador sufre un
          finito equivalente con menos estados. En                                colapso y falla
          las siguientes figuras mostramos un                                     b. El compilador cae en
          autómata finito simple, uno isomórfico y                                un lazo infinito
          uno equivalente, los dos en relación al                                 c. El compilador continua
          primero.                                                      2. Respuesta correcta (pero casi
                                                                        sin utilidad)
                                                                          a. El compilador reporta el
                                                                        primer error y se detiene

                                                                II.     Respuesta aceptable
                                                                        1. Respuestas posibles
                                                                               a. El compilador reporta el
                                                                               error y continua para
                                                                               encontrar             otros
                                                                               posteriores si existen.
                                                                              b. El compilador reporta el
                                                                              error y lo repara si es
                                                                              posible,     continua      y
                                                                              entrega el código correcto.
                                                                        2. Respuestas imposibles con la
                                                                           tecnología actual
                                                                               a. El compilador corrige el
                                                                               error y entrega el código
                                                                               que     el    programador
                                                                               intentaba escribir.




                                                        1.12.         DETECCIÓN DE ERRORES

                                                            1.12.1. La Naturaleza de los errores

                                                                        Por definición, un compilador sólo
                                                                        puede        detectar      errores
                                                                        sintácticos.      Los      errores
                                                                        semánticos se manifiestan sólo al
                                                                        ejecutar el programa y no son
                                                                        posibles de detectar antes con las
                                                                        técnicas actuales. Para ello se
      1.11.   MANEJO DE ERRORES                                         requiere un programa que
                                                                        verifique    que    lo   que     el
          Debido a la naturaleza del proceso de                         programador escribió sea lo que
          programación, un traductor de programas                       se requiere para el problema en
          se confronta con errores sintácticos con                      cuestión.
          mucha frecuencia en los programas.


                                                                                          Análisis Léxico
6   Universidad Nacional Jorge Basadre G.


                  Cualquier desviación de las                  reparar   un    programa      inválido y
                  reglas de programación de un                 transformarlo en uno válido lo más
                  lenguaje dado es llamado error               próximo al erróneo. El algoritmo toma un
                  sintáctico. Los errores sintácticos          número de pasos proporcional a n3 donde
                  son detectadas en parte, en la               n representa el número de símbolos del
                  mayoría de los compiladores                  programa fuente.
                  modernos, por un analizador libre
                  de contexto y el resto por algunos           Se debe recalcar que un compilador
                  mecanismos a la medida con el                usualmente no es capaz de determinar la
                  uso de tablas de compilación.                causa de un error aunque este se detecte
                                                               de inmediato. El error puede deberse a un
          1.12.2. ¿Cómo      se  detectan    los               error de mecanografía, un descuido del
                  errores?                                     programador o una falta de entendimiento
                  Los errores son detectados de                del lenguaje de programación. Mientras
                  dos formas:                                  más pronto se detecte el error hay más
                                                               probabilidad de que el compilador pueda
                  Los errores en la sintaxis libre de          tratar de adivinar la causa y tomar la
                  contexto del programa fuente son             acción correctiva adecuada.
                  las más fáciles de encontrar
                  debido a las especificaciones                1.12.3. Reporte de errores
                  precisas de la sintaxis.
                                                               Cada error una vez detectado debe ser
                  Los errores pueden detectarse                reportado de forma clara y precisa.
                  también por verificaciones de la
                  sintaxis sensitiva al contexto del           Existen aún compiladores que confrontan
                  programa fuente.                             al usuario con mensajes tales como:
                                                               “error 221-34” o, pero aún “erro de tipo
                  Los errores en este tipo incluyen            desconocido”.
                  los de definición de tipo en
                  variables y expresiones y son                El usuario debe referirse, entonces, a un
                  difíciles de detectar en forma               manual de explicaciones que provee el
                  efectiva debido a lo vago e                  autor del compilador donde quizá
                  impreciso de las descripciones               encuentre una explicación.
                  propuestas para la sintaxis libre
                  de contexto.                                 En los mensajes de error se debe incluir
                                                               cualquier información que el compilador
          ¿Dónde se detectan los errores?                      conozca y pueda utilizarse para que el
                                                               usuario discierna la causa del error; tal
          Es posible que la detección del error no             información puede incluir apuntadores,
          ocurra hasta que el analizador haya                  nombres, atributos, etc. Toda esta
          procedido una distancia arbitraria más               información se debe expresar en términos
          allá del punto donde el error tuvo lugar:            de lenguaje fuente y debe orientarse
                                                               hacia el usuario.
                           a=b+c
                        THEN x=x-2 ;                    CONCLUSIONES
                        ELSE x=x+1 ;
                                                              Para empezar se debe entender el
          En este ejemplo está claro para casi                proceso de compilación, para que la
          cualquier programador que el error es una           maquina entienda el lenguaje a analizar,
          ficha del tipo IF que falta. El punto donde         esto inicia con el léxico.
          se localiza THEN es el mínimo donde el              Los autómatas son para poder entender
          error se puede detectar en un analizador            el proceso del compilador, cuando pasa
          de izquierda a derecha. Cuando nuestros             por diferentes estados para llegar a su
          ojos alcanzan este punto somos capaces              estado final.
          rápidamente de saltar hacia atrás para                       .
          descubrir el punto exacto del error.          BIBLIOGRAFIA

          Se puede codificar un analizador que
                                                        Análisis y diseño de compiladores – Emiliano
          salte hacia atrás para encontrar el error,
                                                        Llano Díaz
          pero el proceso en general lleva
          demasiado tiempo para ser práctico.
          Algunos autores ofrecen algoritmos para

                                                                                        Análisis Léxico

Más contenido relacionado

La actualidad más candente

Alfabetos-Lenguajes y Automatas 1
Alfabetos-Lenguajes y Automatas 1Alfabetos-Lenguajes y Automatas 1
Alfabetos-Lenguajes y Automatas 1
Osiris Mirerus
 
Lenguajes regulares
Lenguajes regularesLenguajes regulares
Lenguajes regulares
Kenia Adams
 
Actividad 2 Analizador léxico, sintáctico y semántico
Actividad 2 Analizador léxico, sintáctico y semántico Actividad 2 Analizador léxico, sintáctico y semántico
Actividad 2 Analizador léxico, sintáctico y semántico
maryr_
 
Estructura de un compilador 2
Estructura de un compilador 2Estructura de un compilador 2
Estructura de un compilador 2
perlallamas
 
Notación infija postfija
Notación infija postfijaNotación infija postfija
Notación infija postfija
Omarzingm
 
Algoritmo de planificación srt
Algoritmo de planificación srtAlgoritmo de planificación srt
Algoritmo de planificación srt
Carlos Solano
 

La actualidad más candente (20)

Conceptos Unidad 1 Lenguajes Automatas Introducción a la Teoría de Lenguaje...
Conceptos Unidad 1 Lenguajes Automatas Introducción  a  la Teoría de Lenguaje...Conceptos Unidad 1 Lenguajes Automatas Introducción  a  la Teoría de Lenguaje...
Conceptos Unidad 1 Lenguajes Automatas Introducción a la Teoría de Lenguaje...
 
Jerarquia de chomsky
Jerarquia de chomskyJerarquia de chomsky
Jerarquia de chomsky
 
Alfabetos-Lenguajes y Automatas 1
Alfabetos-Lenguajes y Automatas 1Alfabetos-Lenguajes y Automatas 1
Alfabetos-Lenguajes y Automatas 1
 
Ejercicios
EjerciciosEjercicios
Ejercicios
 
ESPRESIONES REGULARES
ESPRESIONES REGULARESESPRESIONES REGULARES
ESPRESIONES REGULARES
 
Lenguajes regulares
Lenguajes regularesLenguajes regulares
Lenguajes regulares
 
Actividad 2 Analizador léxico, sintáctico y semántico
Actividad 2 Analizador léxico, sintáctico y semántico Actividad 2 Analizador léxico, sintáctico y semántico
Actividad 2 Analizador léxico, sintáctico y semántico
 
Autómata de Pila
Autómata de Pila Autómata de Pila
Autómata de Pila
 
Modos direccionamiento
Modos direccionamientoModos direccionamiento
Modos direccionamiento
 
Estructura de un compilador 2
Estructura de un compilador 2Estructura de un compilador 2
Estructura de un compilador 2
 
Tópicos Avanzados de Programación - Unidad 2 componentes y librerias
Tópicos Avanzados de Programación - Unidad 2 componentes y libreriasTópicos Avanzados de Programación - Unidad 2 componentes y librerias
Tópicos Avanzados de Programación - Unidad 2 componentes y librerias
 
TRIGGERS O DISPARADORES
TRIGGERS O DISPARADORESTRIGGERS O DISPARADORES
TRIGGERS O DISPARADORES
 
ANALIZADOR SINTACTICO: INTRODUCION, CONCEPTOS, CARACTERISTICAS
ANALIZADOR SINTACTICO: INTRODUCION, CONCEPTOS, CARACTERISTICAS ANALIZADOR SINTACTICO: INTRODUCION, CONCEPTOS, CARACTERISTICAS
ANALIZADOR SINTACTICO: INTRODUCION, CONCEPTOS, CARACTERISTICAS
 
maquinas de turing
maquinas de turingmaquinas de turing
maquinas de turing
 
GRAMATICAS AMBIGUAS
GRAMATICAS AMBIGUASGRAMATICAS AMBIGUAS
GRAMATICAS AMBIGUAS
 
Arboles Binarios
Arboles BinariosArboles Binarios
Arboles Binarios
 
Notación infija postfija
Notación infija postfijaNotación infija postfija
Notación infija postfija
 
Tipos de Autómatas 
Tipos de Autómatas Tipos de Autómatas 
Tipos de Autómatas 
 
Algoritmo de planificación srt
Algoritmo de planificación srtAlgoritmo de planificación srt
Algoritmo de planificación srt
 
Generación código intermedio 2
Generación código intermedio 2Generación código intermedio 2
Generación código intermedio 2
 

Destacado

Análisis léxico y análisis sintáctico
Análisis léxico y análisis sintácticoAnálisis léxico y análisis sintáctico
Análisis léxico y análisis sintáctico
angiepao1717
 
Trabajo de compiladores completo alexandra
Trabajo de compiladores completo alexandraTrabajo de compiladores completo alexandra
Trabajo de compiladores completo alexandra
AlexandraMolinaSanchez
 
Introducción a Compiladores
Introducción a  CompiladoresIntroducción a  Compiladores
Introducción a Compiladores
Leopoldo Capa
 
Clase4: Transformación desde Expresión regular a Autómata finito determinista
Clase4: Transformación desde Expresión regular a Autómata finito deterministaClase4: Transformación desde Expresión regular a Autómata finito determinista
Clase4: Transformación desde Expresión regular a Autómata finito determinista
mvagila
 
Los compiladores erika y carolina
Los compiladores erika y carolinaLos compiladores erika y carolina
Los compiladores erika y carolina
Erika Flores
 
Compiladores y analizador léxico
Compiladores y analizador léxicoCompiladores y analizador léxico
Compiladores y analizador léxico
katherine133
 
Analisis lexico 2
Analisis lexico 2Analisis lexico 2
Analisis lexico 2
perlallamas
 
Analisis Lexico
Analisis LexicoAnalisis Lexico
Analisis Lexico
FARIDROJAS
 
Presentación Autómatas Finito No Deterministico
Presentación  Autómatas Finito No DeterministicoPresentación  Autómatas Finito No Deterministico
Presentación Autómatas Finito No Deterministico
Scarlinr
 
Arboles de derivacion
Arboles de derivacionArboles de derivacion
Arboles de derivacion
Luis Couoh
 

Destacado (20)

Análisis léxico y análisis sintáctico
Análisis léxico y análisis sintácticoAnálisis léxico y análisis sintáctico
Análisis léxico y análisis sintáctico
 
Compiladores, Analisis Lexico Conceptos
Compiladores, Analisis Lexico ConceptosCompiladores, Analisis Lexico Conceptos
Compiladores, Analisis Lexico Conceptos
 
Compiladores trabajo numero 4
Compiladores trabajo numero 4Compiladores trabajo numero 4
Compiladores trabajo numero 4
 
Trabajo de compiladores completo alexandra
Trabajo de compiladores completo alexandraTrabajo de compiladores completo alexandra
Trabajo de compiladores completo alexandra
 
Introducción a Compiladores
Introducción a  CompiladoresIntroducción a  Compiladores
Introducción a Compiladores
 
Clase4: Transformación desde Expresión regular a Autómata finito determinista
Clase4: Transformación desde Expresión regular a Autómata finito deterministaClase4: Transformación desde Expresión regular a Autómata finito determinista
Clase4: Transformación desde Expresión regular a Autómata finito determinista
 
Los compiladores erika y carolina
Los compiladores erika y carolinaLos compiladores erika y carolina
Los compiladores erika y carolina
 
Compiladores y analizador léxico
Compiladores y analizador léxicoCompiladores y analizador léxico
Compiladores y analizador léxico
 
Analisis lexico 2
Analisis lexico 2Analisis lexico 2
Analisis lexico 2
 
Claselexico
ClaselexicoClaselexico
Claselexico
 
Compiladores analizadores gramática y algo mas
Compiladores analizadores gramática y algo masCompiladores analizadores gramática y algo mas
Compiladores analizadores gramática y algo mas
 
Compiladores - Flex y Bison
Compiladores - Flex y BisonCompiladores - Flex y Bison
Compiladores - Flex y Bison
 
Compiladores
CompiladoresCompiladores
Compiladores
 
(Sin soluiciones) s3 afnd y afd
(Sin soluiciones) s3   afnd y afd(Sin soluiciones) s3   afnd y afd
(Sin soluiciones) s3 afnd y afd
 
Analisis Lexico
Analisis LexicoAnalisis Lexico
Analisis Lexico
 
Origen de los virus. Virus y enfermedades. Aplicaciones
Origen de los virus. Virus y enfermedades. AplicacionesOrigen de los virus. Virus y enfermedades. Aplicaciones
Origen de los virus. Virus y enfermedades. Aplicaciones
 
Presentación Autómatas Finito No Deterministico
Presentación  Autómatas Finito No DeterministicoPresentación  Autómatas Finito No Deterministico
Presentación Autómatas Finito No Deterministico
 
Compiladores, Analisis Lexico, Ejemplo Minilenguaje
Compiladores, Analisis Lexico, Ejemplo MinilenguajeCompiladores, Analisis Lexico, Ejemplo Minilenguaje
Compiladores, Analisis Lexico, Ejemplo Minilenguaje
 
Ecuación de regresión lineal
Ecuación de regresión linealEcuación de regresión lineal
Ecuación de regresión lineal
 
Arboles de derivacion
Arboles de derivacionArboles de derivacion
Arboles de derivacion
 

Similar a Analizador lexico

Actividad 2 programacion de sistemas
Actividad 2 programacion de sistemasActividad 2 programacion de sistemas
Actividad 2 programacion de sistemas
JESSIKADG86
 
Corporacion universitaria remington compiladores deisy
Corporacion universitaria remington compiladores deisyCorporacion universitaria remington compiladores deisy
Corporacion universitaria remington compiladores deisy
Deisy Nereida Lozada Ortiz
 
Compiladores unidad1
Compiladores unidad1Compiladores unidad1
Compiladores unidad1
X3025990
 
Analizador sintactico
Analizador sintacticoAnalizador sintactico
Analizador sintactico
PUCESI
 

Similar a Analizador lexico (20)

TALLER ANALISIS LEXICO
TALLER ANALISIS LEXICOTALLER ANALISIS LEXICO
TALLER ANALISIS LEXICO
 
Actividad 2 programacion de sistemas
Actividad 2 programacion de sistemasActividad 2 programacion de sistemas
Actividad 2 programacion de sistemas
 
Analizador Léxico, Analizador Sintáctico
Analizador Léxico, Analizador SintácticoAnalizador Léxico, Analizador Sintáctico
Analizador Léxico, Analizador Sintáctico
 
Taller de actividades de compiladores 06 06 2019
Taller de actividades de compiladores 06 06 2019Taller de actividades de compiladores 06 06 2019
Taller de actividades de compiladores 06 06 2019
 
Análisis lexicográfico
Análisis lexicográficoAnálisis lexicográfico
Análisis lexicográfico
 
Analisis semantico
Analisis semanticoAnalisis semantico
Analisis semantico
 
ANALISIS SEMANTICO
ANALISIS SEMANTICO ANALISIS SEMANTICO
ANALISIS SEMANTICO
 
Analisis Semantico Taller 1 Parcial 2
Analisis Semantico Taller 1 Parcial 2Analisis Semantico Taller 1 Parcial 2
Analisis Semantico Taller 1 Parcial 2
 
Taller compiladores Análisis Semántico
Taller compiladores Análisis Semántico Taller compiladores Análisis Semántico
Taller compiladores Análisis Semántico
 
Actividad 2 Programación de Sistemas.
Actividad 2 Programación de Sistemas.Actividad 2 Programación de Sistemas.
Actividad 2 Programación de Sistemas.
 
Corporacion universitaria remington compiladores deisy
Corporacion universitaria remington compiladores deisyCorporacion universitaria remington compiladores deisy
Corporacion universitaria remington compiladores deisy
 
investigacion 4.4 y 4.5.pdf
investigacion 4.4 y 4.5.pdfinvestigacion 4.4 y 4.5.pdf
investigacion 4.4 y 4.5.pdf
 
Analisis lexico automatas i
Analisis lexico automatas iAnalisis lexico automatas i
Analisis lexico automatas i
 
Compiladores unidad1
Compiladores unidad1Compiladores unidad1
Compiladores unidad1
 
Analisis lexico
Analisis lexicoAnalisis lexico
Analisis lexico
 
investigacion.pdf
investigacion.pdfinvestigacion.pdf
investigacion.pdf
 
Analizador léxico
Analizador léxicoAnalizador léxico
Analizador léxico
 
Actividad 4.4 y 4.5 Lenguajes y Autómatas Edinson Yahir Sánchez Velázquez.pptx
Actividad 4.4 y 4.5 Lenguajes y Autómatas Edinson Yahir Sánchez Velázquez.pptxActividad 4.4 y 4.5 Lenguajes y Autómatas Edinson Yahir Sánchez Velázquez.pptx
Actividad 4.4 y 4.5 Lenguajes y Autómatas Edinson Yahir Sánchez Velázquez.pptx
 
Analizador sintactico
Analizador sintacticoAnalizador sintactico
Analizador sintactico
 
Compiladores
CompiladoresCompiladores
Compiladores
 

Último

RESULTADOS DE LA EVALUACIÓN DIAGNÓSTICA 2024 - ACTUALIZADA.pptx
RESULTADOS DE LA EVALUACIÓN DIAGNÓSTICA 2024 - ACTUALIZADA.pptxRESULTADOS DE LA EVALUACIÓN DIAGNÓSTICA 2024 - ACTUALIZADA.pptx
RESULTADOS DE LA EVALUACIÓN DIAGNÓSTICA 2024 - ACTUALIZADA.pptx
pvtablets2023
 
Proyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdfProyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdf
patriciaines1993
 
TALLER DE DEMOCRACIA Y GOBIERNO ESCOLAR-COMPETENCIAS N°3.docx
TALLER DE DEMOCRACIA Y GOBIERNO ESCOLAR-COMPETENCIAS N°3.docxTALLER DE DEMOCRACIA Y GOBIERNO ESCOLAR-COMPETENCIAS N°3.docx
TALLER DE DEMOCRACIA Y GOBIERNO ESCOLAR-COMPETENCIAS N°3.docx
NadiaMartnez11
 
NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdf
NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdfNUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdf
NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdf
UPTAIDELTACHIRA
 
6°_GRADO_-_MAYO_06 para sexto grado de primaria
6°_GRADO_-_MAYO_06 para sexto grado de primaria6°_GRADO_-_MAYO_06 para sexto grado de primaria
6°_GRADO_-_MAYO_06 para sexto grado de primaria
Wilian24
 

Último (20)

OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VSOCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
 
TIENDAS MASS MINIMARKET ESTUDIO DE MERCADO
TIENDAS MASS MINIMARKET ESTUDIO DE MERCADOTIENDAS MASS MINIMARKET ESTUDIO DE MERCADO
TIENDAS MASS MINIMARKET ESTUDIO DE MERCADO
 
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESOPrueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
 
RESULTADOS DE LA EVALUACIÓN DIAGNÓSTICA 2024 - ACTUALIZADA.pptx
RESULTADOS DE LA EVALUACIÓN DIAGNÓSTICA 2024 - ACTUALIZADA.pptxRESULTADOS DE LA EVALUACIÓN DIAGNÓSTICA 2024 - ACTUALIZADA.pptx
RESULTADOS DE LA EVALUACIÓN DIAGNÓSTICA 2024 - ACTUALIZADA.pptx
 
Proyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdfProyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdf
 
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).pptPINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
 
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICA
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICABIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICA
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICA
 
Interpretación de cortes geológicos 2024
Interpretación de cortes geológicos 2024Interpretación de cortes geológicos 2024
Interpretación de cortes geológicos 2024
 
TALLER DE DEMOCRACIA Y GOBIERNO ESCOLAR-COMPETENCIAS N°3.docx
TALLER DE DEMOCRACIA Y GOBIERNO ESCOLAR-COMPETENCIAS N°3.docxTALLER DE DEMOCRACIA Y GOBIERNO ESCOLAR-COMPETENCIAS N°3.docx
TALLER DE DEMOCRACIA Y GOBIERNO ESCOLAR-COMPETENCIAS N°3.docx
 
NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdf
NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdfNUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdf
NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdf
 
INSTRUCCION PREPARATORIA DE TIRO .pptx
INSTRUCCION PREPARATORIA DE TIRO   .pptxINSTRUCCION PREPARATORIA DE TIRO   .pptx
INSTRUCCION PREPARATORIA DE TIRO .pptx
 
Los avatares para el juego dramático en entornos virtuales
Los avatares para el juego dramático en entornos virtualesLos avatares para el juego dramático en entornos virtuales
Los avatares para el juego dramático en entornos virtuales
 
LA LITERATURA DEL BARROCO 2023-2024pptx.pptx
LA LITERATURA DEL BARROCO 2023-2024pptx.pptxLA LITERATURA DEL BARROCO 2023-2024pptx.pptx
LA LITERATURA DEL BARROCO 2023-2024pptx.pptx
 
Prueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESOPrueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESO
 
6°_GRADO_-_MAYO_06 para sexto grado de primaria
6°_GRADO_-_MAYO_06 para sexto grado de primaria6°_GRADO_-_MAYO_06 para sexto grado de primaria
6°_GRADO_-_MAYO_06 para sexto grado de primaria
 
semana 4 9NO Estudios sociales.pptxnnnn
semana 4  9NO Estudios sociales.pptxnnnnsemana 4  9NO Estudios sociales.pptxnnnn
semana 4 9NO Estudios sociales.pptxnnnn
 
La Sostenibilidad Corporativa. Administración Ambiental
La Sostenibilidad Corporativa. Administración AmbientalLa Sostenibilidad Corporativa. Administración Ambiental
La Sostenibilidad Corporativa. Administración Ambiental
 
CONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptx
CONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptxCONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptx
CONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptx
 
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLAACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
 
Tema 10. Dinámica y funciones de la Atmosfera 2024
Tema 10. Dinámica y funciones de la Atmosfera 2024Tema 10. Dinámica y funciones de la Atmosfera 2024
Tema 10. Dinámica y funciones de la Atmosfera 2024
 

Analizador lexico

  • 1. ANÁLISIS LÉXICO Erick Vilchez Agruta Elizabeth Lopez Vasquez Dora Callisaya Choquecota Universidad Nacional Jorge Basadre Grohmann Escuela Profesional de Ingeniería en Informática y Sistemas Emails: darknewman68@gmail.com elizalopezvasquez@gmail.com eliza.bella143@gmail.com RESUMEN El presente artículo presentaremos la información La segunda que determina la detallada acerca de cómo funciona el análisis organización sintáctica del programa. léxico en el entorno de compiladores, mediante el uso de gramáticas para poder comprender la A lo largo de este artículo, plantearemos los separación del lenguaje léxico del semántico, objetivos que debe cumplir un Analizador Léxico. entender los diagramas de transición para lo cual se detallaran en el siguiente articulo. 1. ANALIZADOR LEXICO ABSTRACT 1.1. OBJETIVOS This article presents detailed information about how the lexical analysis in the compiler Comprender la separación del análisis environment through the use of grammars to léxico del semántico understand the separation of lexical semantic Construir expresiones regulares de language, understanding the transition diagrams gramáticas regulares which are detailed in the following article. Entender los diagramas de transición Codificar un analizador léxico a partir de PALABRAS CLAVES su diagrama de transición Entender los errores y cómo manejarlos Analizador, léxico, semántico, scanner, compilador. 1.2. FUNCIÓN El análisis léxico representa el enlace entre el INTRODUCCIÓN programa fuente y el analizador sintáctico. El análisis léxico, por medio de un examen Analizar un programa fuente es algo complejo por carácter a carácter, separa el programa ende será recomendable dividir la fase de análisis fuente en piezas llamadas fichas que en dos partes: representan todo lo que el programa fuente. La primera que identifica los 1.3. VENTAJAS constructores de bajo nivel del lenguaje (fichas) tales como variables, palabras llave, etiquetas y operadores.
  • 2. 2 Universidad Nacional Jorge Basadre G. La búsqueda de caracteres es lenta y al enfatiza el comportamiento separarla de la semántica se puede dependiente del tiempo del sistema. dedicar tiempo a su mejora. Este tipo de modelo sólo importaba Se logra un sistema más simple para una categoría de sistemas No se entrega más información de la conocido como sistemas de tiempo- requerida al análisis semántico. real; como ejemplo de estos sistemas se tienen el control de procesos, Por ejemplo, es más fácil analizar fichas sistemas de conmutación telefónica, tales como palabras llave, identificadores sistemas de captura de datos de alta y operadores en lugar de fichas que son velocidad y sistemas de control y los caracteres terminales de conjunto de mando militares. símbolos utilizados por el lenguaje (A,B,C,... etc.). La primera ficha para una Los componentes de un DTE son: expresión DO WHILE será DO en lugar de D que el análisis puede considerar o ESTADOS: comportamiento del como parte de un lazo en lugar de un sistema que es observable en el identificador que comienza con D. tiempo. Los sistemas tienen un estado inicial, pero pueden tener Se hace más portátil el sistema puesto múltiples estados finales que las peculiaridades del alfabeto de (mutuamente excluyentes). entrada se pueden restringir al analizador léxico. o Cambios de estados: condiciones Existen herramientas especializadas que y acciones. ayudan en la construcción de analizadores léxicos cuando la etapa de análisis léxico y semántico están separadas. 1.4. INTERACCION CON EL ANÁLISIS SEMÁNTICO El análisis léxico puede interactuar con el semántico de dos formas: Los nodos del diagrama de estado finito representan los estados del autómata de 1. El analizador léxico puede realizar estado finito y los estados los nombramos una pasada completa del programa S, A y B. fuente antes de que el análisis semántico comience, las fichas son Los arcos que llevan de un estado a otro guardadas en una tabla. indican las transiciones de estado y las etiquetas a un lado de ellos indican la 2. Una interacción entre el analizador entrada que causa la transición. El estado léxico y semántico, el analizador inicial es S y los nodos concéntricos léxico es llamado por el semántico indican los estados finales (y aceptación cuando se requiere la siguiente ficha de la entrada), en este caso B. del programa fuente. La segunda forma es el método preferido de operación puesto que no se requiere de formar una representación completa interna del programa fuente en la memoria. Otra ventaja de este método es que se pueden escribir distintos analizadores léxicos para el mismo lenguaje que varíen de acuerdo al método utilizado para introducir el programa a la máquina. 1.5. DIAGRAMAS DE TRANSICION El Diagrama de Transición de Estado (también conocido como DTE) Análisis Léxico
  • 3. 3 Universidad Nacional Jorge Basadre G. sucesivos hasta lograr la sincronización con alguna palabra llave conocida y válida en el lenguaje. 1) Algunas otras acciones de recuperación de errores son: 2) Borrar los caracteres extraños. 3) Insertar los caracteres faltantes. 4) Reemplazar un carácter incorrecto por otro correcto. 5) Trasponer dos caracteres en posición equivocada. 1.8. ALMACENAMIENTO DE ENTRADA Si no existe transición designada para un estado del diagrama, la entrada es Es necesario el programa fuente para rechazada, tal es el caso de número 12., poderlo analizar y entregar las fichas un diagrama de estado finito se llama al analizador semántico. Se requiere también aceptor determinantico de estado en muchos casos ver mas allá del finito. carácter que hemos leído para saber si encontró un lexema o un error en la entrada. 1.6. GRAMÁTICAS REGULARES Y EXPRESIONES REGULARES En general existen tres técnicas para codificar un analizador léxico: Una forma más compacta de representar 1. Usar un programa generador tal las gramáticas regulares es con el uso de como LEX que usa las expresiones regulares. Las expresiones expresiones regulares de un regulares hacen uso de tres operadores lenguaje como base. (asuma que dos expresiones e1 y e2 2. Escribir un analizador léxico en generan los lenguajes L1 y L2 algún lenguaje de alto nivel. respectivamente): 3. Escribir un analizador léxico usando ensamblador. Concatenar. Definida como e1 e2={x y | x Є L1 y e y Є L2} Una técnica muy utilizada es contar con una memoria provisional dividida en dos Alternar. Denotada como | ó +, es la unión partes de N caracteres donde N es de lenguajes denotados por dos usualmente el número de bytes que expresiones por lo que e1|e2 = {x | x Є L1 pueden leerse a la vez del dispositivo de ó x Є L2} entrada, generalmente un bloque de disco duro o flexible. Cerrar. Representada por los corchetes {}, denota la repetición de la expresión Si la memoria provisional no se llena por cero o más veces, por lo que {e1} = {x | x completo, se usa un carácter especial que i Є L1*} donde L1*= Ui=0 Є L1 simbolice el fin del archivo. Se usan dos apuntadores para llevar el 1.7. ERRORES LEXICOGRAFICOS control de cada lexema que se trata de identificar. Si el apuntador derecho rebasa Algunos tipos de errores pueden la mitad de la memoria provisional, un reconocerse a nivel léxico, pero el nuevo bloque es leído de la memoria analizador léxico tiene una vista muy secundaria al bloque izquierdo. reducida y localizada del programa fuente. Si el apuntador de la derecha rebasa el límite de la memoria provisional de la La recuperación de errores se da en derecha, un nuevo bloque se lee a ésta. una de las formas de modo de pánico donde se eliminan caracteres Análisis Léxico
  • 4. 4 Universidad Nacional Jorge Basadre G. Este esquema funciona la mayoría de las veces a menos que la distancia que deba recorre el apuntador para reconocer una ficha exceda a la longitud de la memoria provisional. 1.9. RECONOCIMIENTO DE FICHAS Existen casos en los que una ficha o un identificador, al contar con las mismas reglas para su construcción, pueden confundirse hasta que no exista un símbolo que clarifique su sintaxis, por ejemplo (clásico de FORTRAN): 1.10. AUTOMATAS DE ESTADO FINITO DO10I = 1,20 DO10I = 1+20 Par cada lenguaje definido por una gramática regular o expresión regular, existe una autómata de estado finito En el primer caso es el uso de una palabra determístico para reconocer el mismo reservada, en el segundo caso una variable. lenguaje. Un autómata de estado finito se El problema se soluciona utilizando los dos define como un conjunto de 5 elementos apuntadores a la memoria provisional de o componentes de la siguiente forma: entrada. M=(å,Q,D,q0,F) Cuando un caso similar ocurre, el analizador debe seguir buscando hacia adelante en el El alfabeto ∑ del autómata de estado texto moviendo el apuntador de la derecha finito es el mismo que el de la gramática mientras mantiene fijo el de la izquierda. regular, Q es el conjunto finito de estados de los cuales q0 es uno específico Si el camino que se tomo dentro del diagrama llamado estado inicial; F es el de estado finito es el equivocado, el subconjunto de Q de estados finales o de apuntador de la derecha se regresa a su parada. Un estado final es cualquier posición original y se toma otra rama del estado en el que el autómata puede diagrama, si el camino fue el adecuado, el detenerse. apuntador de la izquierda se mueve hasta donde se encuentra el de la derecha. Un conjunto de reglas de transición llamadas ∆, definen cómo el autómata Debido a esta función de los apuntadores de avanza de estado a estado en base a los la memoria provisional se les llama símbolos de la “cinta de entrada”. centinelas. Las transiciones son una función parcial Un caso claro del uso de centinelas es el del estado actual y del siguiente símbolo caso de reconocer números de distintos tipos. de entrada: En la figura anterior, modificamos el estado 22 de acuerdo a la siguiente figura: ∆: Qx∑→Q Para un estado A con un símbolo de entrada a a analizar, una transición que avanza el autómata al siguiente estado B se escribe como: Un autómata de estado finito acepta la cadena de entrada si el autómata se encuentra en su estado final y no hay más símbolos en la cinta. De otra forma, el autómata se dice que rechaza o se bloquea cuando no hay un estado Análisis Léxico
  • 5. 5 Universidad Nacional Jorge Basadre G. definido de transición para el siguiente Debido a esto, se requiere de una símbolo de la entrada o cuando no hay estrategia para tratar los errores respecto más símbolos en la cinta y el autómata no a las reglas que define el lenguaje de está en un estado final. programación. La respuesta a los errores cae entre el colapso total del sistema Cuando un autómata rechaza una hasta a la corrección automática completa entrada, la cadena no forma parte del del programa fuente. lenguaje. Una clasificación posible de los errores es Dos autómatas son equivalentes si la siguiente: aceptan el mismo lenguaje. Son isomór- ficos si son equivalentes en sus estados y I. Respuestas inaceptables transiciones, pero los estados no tienen el 1. Respuesta incorrecta (el error mismo nombre. Se les nombra reducidos no se reporta) cuando no existe un autómata de estado a. El compilador sufre un finito equivalente con menos estados. En colapso y falla las siguientes figuras mostramos un b. El compilador cae en autómata finito simple, uno isomórfico y un lazo infinito uno equivalente, los dos en relación al c. El compilador continua primero. 2. Respuesta correcta (pero casi sin utilidad) a. El compilador reporta el primer error y se detiene II. Respuesta aceptable 1. Respuestas posibles a. El compilador reporta el error y continua para encontrar otros posteriores si existen. b. El compilador reporta el error y lo repara si es posible, continua y entrega el código correcto. 2. Respuestas imposibles con la tecnología actual a. El compilador corrige el error y entrega el código que el programador intentaba escribir. 1.12. DETECCIÓN DE ERRORES 1.12.1. La Naturaleza de los errores Por definición, un compilador sólo puede detectar errores sintácticos. Los errores semánticos se manifiestan sólo al ejecutar el programa y no son posibles de detectar antes con las técnicas actuales. Para ello se 1.11. MANEJO DE ERRORES requiere un programa que verifique que lo que el Debido a la naturaleza del proceso de programador escribió sea lo que programación, un traductor de programas se requiere para el problema en se confronta con errores sintácticos con cuestión. mucha frecuencia en los programas. Análisis Léxico
  • 6. 6 Universidad Nacional Jorge Basadre G. Cualquier desviación de las reparar un programa inválido y reglas de programación de un transformarlo en uno válido lo más lenguaje dado es llamado error próximo al erróneo. El algoritmo toma un sintáctico. Los errores sintácticos número de pasos proporcional a n3 donde son detectadas en parte, en la n representa el número de símbolos del mayoría de los compiladores programa fuente. modernos, por un analizador libre de contexto y el resto por algunos Se debe recalcar que un compilador mecanismos a la medida con el usualmente no es capaz de determinar la uso de tablas de compilación. causa de un error aunque este se detecte de inmediato. El error puede deberse a un 1.12.2. ¿Cómo se detectan los error de mecanografía, un descuido del errores? programador o una falta de entendimiento Los errores son detectados de del lenguaje de programación. Mientras dos formas: más pronto se detecte el error hay más probabilidad de que el compilador pueda Los errores en la sintaxis libre de tratar de adivinar la causa y tomar la contexto del programa fuente son acción correctiva adecuada. las más fáciles de encontrar debido a las especificaciones 1.12.3. Reporte de errores precisas de la sintaxis. Cada error una vez detectado debe ser Los errores pueden detectarse reportado de forma clara y precisa. también por verificaciones de la sintaxis sensitiva al contexto del Existen aún compiladores que confrontan programa fuente. al usuario con mensajes tales como: “error 221-34” o, pero aún “erro de tipo Los errores en este tipo incluyen desconocido”. los de definición de tipo en variables y expresiones y son El usuario debe referirse, entonces, a un difíciles de detectar en forma manual de explicaciones que provee el efectiva debido a lo vago e autor del compilador donde quizá impreciso de las descripciones encuentre una explicación. propuestas para la sintaxis libre de contexto. En los mensajes de error se debe incluir cualquier información que el compilador ¿Dónde se detectan los errores? conozca y pueda utilizarse para que el usuario discierna la causa del error; tal Es posible que la detección del error no información puede incluir apuntadores, ocurra hasta que el analizador haya nombres, atributos, etc. Toda esta procedido una distancia arbitraria más información se debe expresar en términos allá del punto donde el error tuvo lugar: de lenguaje fuente y debe orientarse hacia el usuario. a=b+c THEN x=x-2 ; CONCLUSIONES ELSE x=x+1 ; Para empezar se debe entender el En este ejemplo está claro para casi proceso de compilación, para que la cualquier programador que el error es una maquina entienda el lenguaje a analizar, ficha del tipo IF que falta. El punto donde esto inicia con el léxico. se localiza THEN es el mínimo donde el Los autómatas son para poder entender error se puede detectar en un analizador el proceso del compilador, cuando pasa de izquierda a derecha. Cuando nuestros por diferentes estados para llegar a su ojos alcanzan este punto somos capaces estado final. rápidamente de saltar hacia atrás para . descubrir el punto exacto del error. BIBLIOGRAFIA Se puede codificar un analizador que Análisis y diseño de compiladores – Emiliano salte hacia atrás para encontrar el error, Llano Díaz pero el proceso en general lleva demasiado tiempo para ser práctico. Algunos autores ofrecen algoritmos para Análisis Léxico