INTRODUCCION analisis semantico

download INTRODUCCION analisis semantico

of 15

Transcript of INTRODUCCION analisis semantico

  • 8/18/2019 INTRODUCCION analisis semantico

    1/15

    INTRODUCCION

    En esta investigación entenderemos que el análisis semántico no es más que la salida deun resultado, estos debes ser correcto ya que este análisis detecta los errores que pueda

    contener el programa.

    El análisis semántico se trata de determinar el tipo de los resultados intermedios,

    comprobar que los argumentos que tiene un operador pertenecen al conjunto de los

    operadores posibles, y si son compatibles ente si, comprobará que el significado do lo

    que se va leyendo es válido.

    Podremos apreciar en cada fase del proceso de compilación se pueden encontrar errores

     pero el análisis semántico detecta el error, la fase puede tratar el error, de manera que el

    compilador pueda continuar, permitiendo así que se puedan detectar errores posteriores.Un compilador que se detenga cuando encuentre el primer error no es muy eficaz.

    ANÁLISIS SEMANTICO   1

  • 8/18/2019 INTRODUCCION analisis semantico

    2/15

    ANÁLISIS SEMANTICO

      En el análisis semántico se detectan errores relacionados con la validez del programa. e puede decir que estos errores son de tipo sintáctico!semántico, pero no

     pueden ser detectados por el analizador sintáctico, ya que se relacionan con

    interdependencias entre las diferentes partes de un programa que no son reflejadas en un

    análisis gramatical. El analizador semántico recibe la información resultado del análisis

    sintáctico que puede ser un árbol jerárquico con la información relativa a la

    organización de los to"ens en la instrucción que se está analizando.

      #urante el análisis semántico de un lenguaje de fuerte c$equeo de tipos el árbol

    sintáctico debe ser modificado para reflejar el análisis de los tipos de los datos. %ote que

    $aciendo un c$equeo de tipos la constante &, al ser una constante entera debe ser 

    convertida a real para poder ser operada y las demás variables no tienen dificultad

    alguna para ser utilizadas al ser todas reales.

      El análisis semántico se trata de determinar el tipo de los resultados intermedios,

    comprobar que los argumentos que tiene un operador pertenecen al conjunto de los

    operadores posibles, y si son compatibles ente si, etc. En definitiva, comprobará que el

    significado do lo que se va leyendo es válido.

      El análisis semántico se realiza posteriormente al sintáctico y muc$o más difícil de

    formalizar que 'ste.

    (a salida )teórica* de la fase de análisis semántico sería un árbol semántico.

    1.1 ARBOLES DE EXPRESIONES

    (os árboles de e+presiones representan el código de nivel del lenguaje en forma de

    datos. (os datos se almacenan en una estructura con forma de árbol. ada nodo del

    árbol de e+presión representa una e+presión, por ejemplo, una llamada al m'todo o una

    operación binaria, como + - y.

    Un árbol de e+presión sirve para evaluar e+presiones del tipo /a 0 b12c3d.

    Para que un árbol represente una e+presión se deben tomar en cuenta 4 características

    muy importantes

    ANÁLISIS SEMANTICO   2

  • 8/18/2019 INTRODUCCION analisis semantico

    3/15

    • ualquier $oja está etiquetada sólo con un operando.

    • ualquier nodo interior n está etiquetado por un operador.

    5l introducir la e+presión debemos de tomar en cuenta las siguientes características

    • (a raíz siempre debe ser un operador.

    • (as $ojas siempre deben ser operandos.

    • (os nodos deben estar etiquetados por operadores.

    • i un operador tiene mayor prioridad que la raíz se coloca como $ijo.

    • i un operador tiene igual o menor prioridad que un nodo se coloca como padre.

    • Un nodo puede contener como $ijo otro subárbol que contiene una peque6a e+presión.

    En los árboles de e+presión, la sucesión del preorden de etiquetas nos da lo que se

    conoce como la forma prefijo de una e+presión

    5nálogamente, la sucesión postorden de las etiquetas de un árbol e+presión nos da lo

    que se conoce como la representación postfijo de una e+presión

    7inalmente, el inorden de una e+presión en un árbol de e+presión nos da la e+presión

    infijo en sí misma, pero sin par'ntesis

    onstrucción de un árbol de e+presión

    5lgoritmo

    • 8ientras carácter diferente de nulo

    • (eer carácter de la lista

    • i es par'ntesis pasar al siguiente carácter

    • rear un nodo nuevo que contenga ese carácter 9perando

    ANÁLISIS SEMANTICO   3

  • 8/18/2019 INTRODUCCION analisis semantico

    4/15

    • i el árbol está vacío $acer raíz a nuevo, si no recorrer el árbol por la derec$a $asta

    llegar a un nodo con $ojas, si la $oja izquierda, no está etiquetada colocar operando, si

    no colocarlo en la $oja derec$a.

    9perador

    • i la raíz es un operando, insertar nuevo en ese nodo, y convertir el operando en el

    $ijo izquierdo, si no si $ay un par'ntesis abierto insertar nuevo en la :ltima $oja derec$a

    y colocar operando como $ijo izquierdo.

    • i el carácter anterior es par'ntesis izquierdo si el siguiente carácter es par'ntesis

    derec$o si solo $ay un operador en el árbol nuevo se convierte en raíz, si no se inserta

    en el :ltimo nodo derec$o, y el nodo se convierte en $ijo izquierdo.

    • i no se cumple ninguna de las condiciones anteriores si la raíz es de igual prioridad o

    menor prioridad convertir la raíz en el $ijo izq. de nuevo si no la prioridad del nodo raíz

    es mayor al de nuevo insertar nuevo como $ijo derec$o y colocar el nodo reemplazado

    como $ijo izquierdo.

    1.2 ACCIONES SEMÁNTICAS DE UN ANALIZADOR SINTÁCTICO

    #ependiendo del tipo de sentencias, las acciones semánticas pueden agruparse en

    • entencias de #eclaración completar la sección de tipos de la ;abla de

    ímbolos.• entencias )ejecutables* realizar comprobaciones de tipos entre los operandos

    implicados.

    • 7unciones y procedimientos comprobar el n:mero, orden y tipo de los

     parámetros actuales en cada llamada a una función o procedimiento.

  • 8/18/2019 INTRODUCCION analisis semantico

    5/15

    (a verificación de los tipos de datos se $ace asignando el valor de tipo de cada una de

    los componentes l'+icos. Estos valores se comparan para verificar que los tipos de datos

    coincidan y sean congruentes, de lo contrario no se pueden realizar los cálculos.

    #efinición de un analizador sintáctico es la fase del analizador que se encarga dec$equear el te+to de entrada en base a una gramática dada. = en caso de que el

     programa de entrada sea válido, suministra el árbol sintáctico que lo reconoce.

    En teoría, se supone que la salida del analizador sintáctico es alguna representación del

    árbol sintáctico que reconoce la secuencia de ;o"en suministrada por el analizador 

    l'+ico.

    En la práctica, el analizador sintáctico tambi'n $ace

    • 5cceder a la tabla de símbolos /para $acer parte del trabajo del analizador semántico1.

    • $equeo de tipos /del analizador semántico1.

    • >enerar código intermedio.

    • >enerar errores cuando se producen.

    • En definitiva, realiza casi todas las operaciones de la compilación. Este m'todo de

    trabajo da lugar a los m'todos de compilación dirigidos por sinta+is.

    8anejo de errores sintácticos

    (os errores sintácticos son dados por una e+presión aritm'tica o par'ntesis no

    equilibrados.

     El manejo de errores de sinta+is es el más complicado desde el punto de vista de la

    creación de compiladores. %os interesa que cuando el compilador encuentre un error, se

    ANÁLISIS SEMANTICO   5

  • 8/18/2019 INTRODUCCION analisis semantico

    6/15

    recupere y siga buscando errores. Por lo tanto el manejador de errores de un analizador 

    sintáctico tiene como objetivos

    • ramática > /%, ;, P, 1

     % A %o terminales.

    ; A ;erminales.

    P A ?eglas de Producción.

    A 5+ioma

  • 8/18/2019 INTRODUCCION analisis semantico

    7/15

    tipo de comprobaciones son beneficiosas puesto que confieren seguridad a la ejecución

    del programa.

    Características

    !#iferente de la dinámica en runtime.

    !Ejemplo comprobación de tipos, flujo de control, unicidad.

    • omprobaciones dinámicas (as comprobaciones dinámicas son aquellas que no se

    realizan durante la fase de compilación y se delegan al momento de la ejecución del

     programa. Ello requiere generar código ejecutable específicamente dise6ado para

    realizar tales comprobaciones. (os lenguajes con una carga e+cesiva de comprobaciones

    dinámicas generan programas más largos, lentos e inseguros en ejecución.

    !eri"icaci#$ %e ti&'s

    omprueba la compatibilidad de tipos de todas las e+presiones del código fuente

    recuperando la información durante la gestión de declaraciones. 5demás se asegura de

    que no e+iste en el programa ninguna referencia a ning:n símbolo no declarado.

    Bay situaciones en las cuales se tiene un valor de un tipo dado y se desea almacenar ese

    valor en una variable de un tipo diferente.

    En algunos tipos es posible almacenar simplemente el valor sin una conversión de tiposC

    lo que se denomina conversión automática.

    5 la conversión de tipos se le llama coerción o casting.I$"ere$cia %e ti&'s

    En lenguajes sin tipificación de variables o con sobrecarga se aplican tareas de

    inferencia de tipos en el nivel gramatical de las e+presiones para resolver el tipo de

    datos de la e+presión resultante en función del conte+to de evaluación.

    Esto sólo es posible en alg:n lenguaje de programación, si el compilador reconoce que

    la variable destino tiene la suficiente precisión para contener el valor origen. En Dava se

     puede almacenar un valor byte en una variable int, dado que este tipo de datos es de

    mayor precisión que el primero.

    5 esto se le llama ensanc$amiento o promoción, dado que el tipo más peque6o se

    ensanc$a o promociona al tipo compatible más grande. i por el contrario, se desea

    asignar un valor de variable int a una variable byte se necesita realizar una conversión

    de tipos e+plícita.

    En algunos casos se puede realizar la conversión pero se pueden perder datos, como por 

    ejemplo al pasar un valor flotante a un entero.

    5 esto se le llama estrec$amiento, dado que se estrec$a e+plícitamente el valor para que

    quepa en el destino.

    ANÁLISIS SEMANTICO   7

  • 8/18/2019 INTRODUCCION analisis semantico

    8/15

    (a conversión de un tipo se realiza poniendo delante un nombre de tipo entre par'ntesis,

     por ejemplo, /tipo1 valor.

    Ejemplos de coerción byte aC int bC aA/byte1 bC

    C'(&r')aci#$ %e Ti&'s

     (a comprobación ayuda a evitar la mayoría de los errores de programación. Ejemplos

    de comprobación de tipos

    Para saber si el operador aplicado a los operadores es correcto.

    E+isten dos tipos de comprobación estática y dinámica.

    Un compilador debe informar de un error si se aplica un operador a un operando

    incompatible, por ejemplo, si se suman una variable tipo matriz y una variable de

    función.

    4. omprobaciones del flujo de control.

    (as proposiciones que $acen que el flujo del control abandone una construcción deben

    tener alg:n lugar a dónde transferir el flujo de control Por ejemplo, una proposición

     brea" en $ace que el control abandone la proposición que la engloba, $ile, for o

    sitc$ más cercana si dic$a proposición engloba dora no e+iste, ocurre un error.

    F. omprobación de unicidad definir un objeto una sola vez.

    G. omprobaciones relacionadas con nombres. En ocasiones, el mismo nombre debe

    aparecer dos o más veces en un mismo bloque de instrucciones, el compilador debecomprobar que se utilice el mismo nombre en ambos sitios.

    omprobación estática #iferente de la dinámica /en runtime1 Ejemplos

    omprobación de tipos

  • 8/18/2019 INTRODUCCION analisis semantico

    9/15

    (as pilas se utilizan en muc$as aplicaciones que utilizamos con frecuencia.

    (as pilas y colas son estructuras de datos que se utilizan generalmente para simplificar 

    ciertas operaciones de programación. Estas estructuras pueden implementarse mediante

    arrays o listas enlazadas.

    Un analizador sintáctico es un autómata de pila que reconoce la estructura de una

    cadena de componentes l'+icos.

    En general, el analizador sintáctico inicializa el compilador y para cada símbolo de

    entrada llama al analizador morfológico y proporciona el siguiente símbolo de entrada.

    5l decir pila semántica no se refiere a que $ay varios tipos de pila, $ace referencia a que

    se debe programar :nica y e+clusivamente en un solo lenguaje, es decir, no podemos

    mezclar código de 00 con Hisual Iasic.

    Hentajas

    •  (os problemas de integración entre los subsistemas son sumamente costosos y

    muc$os de ellos no se solucionan $asta que la programación alcanza la fec$a límite para

    la integración total del sistema.

    • e necesita una memoria au+iliar que nos permita guardar los datos para poder $acer 

    la comparación.

    9bjetivo teórico

    Es construir un árbol de análisis sintáctico, este raramente se construye como tal, sinoque las rutinas semánticas integradas van generando el árbol de inta+is abstracta. e

    especifica mediante una gramática libre de conte+to.

    El análisis semántico detecta la validez semántica de las sentencias aceptadas por el

    analizador sintáctico. El analizador semántico suele trabajar simultáneamente al

    analizador sintáctico y en estrec$a cooperación. e entiende por semántica como el

    conjunto de reglas que especifican el significado de cualquier sentencia sintácticamente

    correcta y escrita en un determinado lenguaje.

    (as rutinas semánticas deben realizar la evaluación de los atributos de las gramáticas

    siguiendo las reglas semánticas asociadas a cada producción de la gramática.

    El análisis sintáctico es la fase en la que se trata de determinar el tipo de los resultados

    intermedios, comprobar que los argumentos que tiene un operador pertenecen al

    conjunto de los operadores posibles, y si son compatibles entre sí, etc.

    En definitiva, comprobará que el significado de la que se va leyendo es válido. (a salida

    teórica de la fase de análisis semántico sería un árbol semántico. onsiste en un árbol

    sintáctico en el que cada una de sus ramas $a adquirido el significado que debe tener.

    e compone de un conjunto de rutinas independientes, llamadas por los analizadores

    morfológico y sintáctico. El análisis semántico utiliza como entrada el árbol sintáctico

    ANÁLISIS SEMANTICO   9

  • 8/18/2019 INTRODUCCION analisis semantico

    10/15

    detectado por el análisis sintáctico para comprobar restricciones de tipo y otras

    limitaciones semánticas y preparar la generación de código.

    (as rutinas semánticas suelen $acer uso de una pila que contiene la información

    semántica asociada a los operadores en forma de registros semánticos.

    ?eglas semánticas

    on el conjunto de normas y especificaciones que definen al lenguaje de programación

    y están dadas por la sinta+is del lenguaje, las reglas semánticas asignan un significado

    lógico a ciertas e+presiones definidas en la sinta+is del lenguaje.

    (a evaluación de las reglas semánticas define los valores de los atributos en los nodos

    del árbol de análisis sintáctico para la cadena de entrada. Una regla semántica tambi'n

     puede tener efectos colaterales, por ejemplo, imprimir un valor o actualizar una variable

    global.

    ompatibilidad de tipos

    #urante la fase de análisis semántico, el compilador debe verificar que los tipos y

    valores asociados a los objetos de un programa se utilizan de acuerdo con la

    especificación del lenguaje.

    5demás debe detectar conversiones implícitas de tipos para efectuarlas o insertar el

    código apropiado para efectuarlas así como almacenar información relativa a los tipos

    de los objetos y aplicar las reglas de verificación de tipos.

    5nalizadores descendentes

    Parten del a+ioma inicial de la gramática, se va descendiendo utilizando las

    derivaciones izquierdas, $asta llegar a construir la cadena analizada. e va construyendo

    el árbol desde sus nodos terminales. Es decir, se construye desde los símbolos de cadena

    $asta llegar al a+ioma de la gramática.

    Iottom up

    Es un principio de muc$os a6os del estilo de programación que los elementos

    funcionales de un programa no deben ser demasiado grandes. i un cierto componentede un programa crece más allá de la etapa donde está fácilmente comprensible, se

    convierte en una masa de la complejidad que encubre errores tan fácilmente como una

    ciudad grande encubre a fugitivos.

    ;op!don

    Este m'todo consiste en dividir los problemas en subproblemas más sencillos para

    conseguir una solución más rápida. El dise6o descendente es un m'todo para resolver el

     problema que posteriormente se traducirá a un lenguaje compresible por la

    computadora.

    ANÁLISIS SEMANTICO  1

    0

  • 8/18/2019 INTRODUCCION analisis semantico

    11/15

    Un parser ascendente utiliza durante el análisis una pila. En esta va guardando datos que

    le permiten ir $aciendo las operaciones de reducción que necesita. Para incorporar 

    acciones semánticas como lo es construir el árbol sintáctico, es necesario incorporar a la

     pila del parser otra columna que guarde los atributos de los símbolos que se vananalizando. Estos atributos estarían ligados a la correspondiente producción en la tabla

    de parsing.

    (a pila juega un papel fundamental en el desarrollo de cualquier analizador semántico.

    #entro de cada elemento de la pila se guardan los valores que pueden tener una

    e+presión.

    1.+ ES,UEMA DE TRADUCCI-N

    Un esquema de traducción es una gramática independiente de conte+to en la que se

    asocian atributos con los símbolos gramaticales y se insertan acciones semánticas

    encerradas entre llaves J K dentro de los lados derec$os de las producciones. (os

    esquemas de traducción pueden tener tantos atributos sintetizados como $eredados.

    uando se dise6a un esquema de traducción, se deben respetar algunas limitaciones

     para asegurarse de que el valor de un atributo est' disponible cuando una acción se

    refiera a 'l. Estas limitaciones, motivadas por las definiciones con atributos por la

    izquierda, garantizan que las acciones no $agan referencia a un atributo que a:n no $aya

    sido calculado. El ejemplo más sencillo ocurre cuando sólo se necesitan atributos

    sintetizados, en este caso, se puede construir el esquema de traducción creando una

    acción que conste de una asignación para cada regla semántica y colocando esta acción

    al final del lado derec$o de la producción asociada.

    ;raducción descendente

    e trabaja con esquema de traducción en lugar de $acerlo con definiciones dirigidas por 

    sinta+is, así que se puede ser e+plícito en cuanto al orden en que tienen que lugar las

    acciones y las evaluaciones de los atributos.

    Eliminación de la recursividad izquierda de un esquema de traducción

    omo la mayoría de los operadores aritm'ticos son asociativos por la izquierda, es

    natural utilizar gramáticas recursivas por la izquierda para las e+presiones. (a

    transformación se aplica a esquemas de traducción con atributos sintetizados.

    Para el análisis sintáctico descendente, se supone que una acción se ejecuta en el mismo

    momento en que se e+pandiría un símbolo en la misma posición.

    Un atributo $eredado de un símbolo debe ser calculado por una acción que aparezca

    antes que el símbolo, y un atributo sintetizado del no terminal de la izquierda se debe

    calcular despu's de que $ayan sido calculados todos los atributos de los que depende.

    Un atributo $eredado de un símbolo debe ser calculado por una acción que aparezca

    antes que el símbolo, y un atributo sintetizado del no terminal de la izquierda se debe

    calcular despu's de que $ayan sido calculados todos los atributos de los que depende.

    ANÁLISIS SEMANTICO  1

    1

  • 8/18/2019 INTRODUCCION analisis semantico

    12/15

    (os fragmentos de código así insertados se denominan acciones semánticas. #ic$os

    fragmentos act:an, calculan y modifican los atributos asociados con los nodos del árbol

    sintáctico. El orden en que se eval:an los fragmentos es el de un recorrido primero!

     profundo del árbol de análisis sintáctico.9bs'rvese que, en general, para poder aplicar un esquema de traducción $ay que

    construir el árbol sintáctico y despu's aplicar las acciones empotradas en las reglas en el

    orden de recorrido primero!profundo. Por supuesto, si la gramática es ambigua una frase

     podría tener dos árboles y la ejecución de las acciones para ellos podría dar lugar a

    diferentes resultados. i se quiere evitar la multiplicidad de resultados /interpretaciones

    semánticas1 es necesario precisar de qu' árbol sintáctico concreto se está $ablando.

    1. /ENERACI-N DE LA TABLA DE S0MBOLO DE DIRECCIONES

    (as tablas de símbolos /tambi'n llamadas tablas de identificadores y tablas de

    nombres1, realizan dos importantes funciones en el proceso de traducción verificar que

    la semántica sea correcta y ayudar en la generación apropiada de código. 5mbas

    funciones se realizan insertando o recuperando desde la tabla de símbolos los atributos

    de las variables usadas en el programa fuente. Estos atributos, tales como el nombre,

    tipo, dirección de almacenamiento y dimensión de una variable, usualmente se

    encuentran e+plícitamente en las declaraciones o más implícitamente a trav's del

    conte+to en que aparecen los nombres de variables en el programa.

    Una de las estructuras de datos que se encuentran relacionadas con las fases del proceso

    de compilación es la tabla de símbolos, la cual tiene como propósito registrar 

    información que se comparte entre varias etapas y que permite administrar los recursosasociados a las entidades que manipulará el programa.

    (a tabla de símbolos tiene típicamente la siguiente estructura Una tabla de símbolos

     puede conceptualizarse como una serie de renglones, cada uno de los cuales contiene

    una lista de valores de atributos que son asociados con una variable en particular. (as

    clases de los atributos que aparecen en una tabla de símbolos dependen en alg:n grado

    de la naturaleza del lenguaje de programación para el cual se escribe el compilador.

    Por ejemplo, un lenguaje puede ser sin tipos, y por lo tanto el atributo tipo no necesita

    aparecer en la tabla. imilarmente, la organización de la tabla de símbolos variará

    dependiendo de las limitaciones de memoria y tiempo de acceso.

    1. MANEO DE ERRORES SEMÁNTICOS

    ANÁLISIS SEMANTICO  1

    2

  • 8/18/2019 INTRODUCCION analisis semantico

    13/15

    Es una de las misiones más importantes de un compilador, aunque, al mismo tiempo, es

    lo que más dificulta su realización.

    5 veces unos errores ocultan otros. 5 veces un error provoca una avalanc$a de muc$os

    errores que se solucionan con el primero.

    Es conveniente un buen manejo de errores, y que el compilador detecte todos los errores

    que tiene el programa y no se pare en el primero que encuentre. Bay, pues, dos criterios

    a seguir a la $ora de manejar errores

    • Pararse al detectar el primer error.

    • #etectar todos los errores de una pasada.

    El análisis semántico es posterior al sintáctico y muc$o más difícil de formalizar que

    'ste. e trata de determinar el tipo de los resultados intermedios, comprobar que losargumentos que tiene un operador pertenecen al conjunto de los operadores posibles, y

    si son compatibles entre sí, etc. En definitiva, comprobará que el significado de lo que

    se va leyendo es válido.

    (a salida LteóricaL de la fase de análisis semántico sería un árbol semántico. onsiste en

    un árbol sintáctico en el que cada una de sus ramas $a adquirido el significado que debe

    tener. En el caso de los operadores polimórficos /un :nico símbolo con varios

    significados1, el análisis semántico determina cuál es el aplicable.

    Err'res 456ic's

    (os errores l'+icos se detectan cuando el analizador l'+ico intenta reconocer 

    componentes l'+icos en el código fuente.

    Err'res si$t7ctic's

    Un error de sinta+is se detecta cuando el analizador sintáctico espera un símbolo que no

    corresponde al que se acaba de leer. (os analizadores sintácticos (( y (? tienen la

    ventaja de que pueden detectar errores sintácticos lo más pronto posible, es decir, se

    genera un mensaje de error en cuanto el símbolo analizado no sigue la secuencia de los

    símbolos analizados $asta ese momento.

    Err'r se(7$tic'(os errores semánticos corresponden a la semántica del lenguaje de programación, la

    cual normalmente no está descrita por la gramática. (os errores semánticos más

    comunes son la omisión de declaraciones.

    Err'res L#8ic's

     (os comete el programador 

     Ejemplo una llamada infinitamente recursiva.

    ANÁLISIS SEMANTICO  1

    3

  • 8/18/2019 INTRODUCCION analisis semantico

    14/15

    RESUMEN

    omo bien pudimos ver que el analizador semántico se compone de un conjunto de

    rutinas independientes, llamadas por los analizadores morfológico y sintáctico.

    El análisis semántico utiliza como entrada el árbol sintáctico detectado por el análisis

    sintáctico para comprobar restricciones de tipo y otras limitaciones semánticas y

     preparar la generación de código.

    En compiladores de un solo paso, las llamadas a las rutinas semánticas se realizan

    directamente desde el analizador sintáctico y son dic$as rutinas las que llaman al

    generador de código. El instrumento más utilizado para conseguirlo es la gramática de

    atributos.

    En ella se utiliza la estructura jerárquica determinada por la fase de análisis sintáctico

     para identificar los operadores y operandos de e+presiones y proposiciones.

    En compiladores de dos o más pasos, el análisis semántico se realiza

    independientemente de la generación de código, pasándose información a trav's de un

    arc$ivo intermedio, que normalmente contiene información sobre el árbol sintáctico en

    forma linealizada para facilitar su manejo y $acer posible su almacenamiento en

    memoria au+iliar.

    ANÁLISIS SEMANTICO  1

    4

  • 8/18/2019 INTRODUCCION analisis semantico

    15/15

    BIBLIOGRAFIA:

    $ttp33.slides$are.net3pepgonzalez3analisis!semantico

    $ttp33.ecured.cu3inde+.p$p3;eorMFM5#aNdeNcompiladores

    $ttp33itpn.m+3recursosisc3&semestre3leguajesyautomatas43UnidadM4O