Que es

ANÁLISIS SEMÁNTICO DE PROGRAMAS ESCRITOS EN JAVA

El lenguaje java está basado en el paradigma de la orientación a objetos desde su concepción, lo que ha dado origen a un lenguaje que posee construcciones sintácticas limpias y elegantes

ANÁLISIS SINTÁCTICO

También llamado parsing, consiste en agrupar los tokens del programa fuente formando frases gramaticales las cuales son usadas para comprobar si se deriva a partir de la gramática del lenguaje

ANALIZADOR DESCENDENTE

También llamados top-down, construyen el árbol sintáctico desde arriba (la raíz) hacia abajo (lashojas)

Son más populares, ya que se pueden implementar fácilmente a mano.

ANALIZADOR ASCENDENTE

Los analizadores ascendentes o bottom-up construyen el árbol comenzando por las hojas hasta concluir en la raíz.

Pueden manejar una gama más
amplia de gramáticas.

2.1 Herramientas para generar analizadores sintácticos.

Dan la posibilidad al programador de trabajar a un nivel de abstracción más elevado que el que deberían usar si las escribieran a mano

2 críticas clásicas

1) Los parsers generados automáticamente son lentos y usan mucha memoria.

2) El reporte de errores no es tan exacto.

2.2 Árbol de derivación vs Árboles de sintaxis abstracta

Árbol de derivación

También llamado parse tree, posee un diseño en el cual cada producción de la gramática tiene su correspondiente objeto.

Esto significa que el tamaño del árbol será proporcional al tamaño de la gramática.

Árbol de sintaxis abstracta

Posee un diseño acotado en el cual sólo se conservan aquellas clases que aportan un significado semántico, desechando aquellas que corresponden a reglas de desambiguación o parentización.

Esto permite reducir considerablemente el
tamaño del árbol resultante.

2.3 Patrón de diseño visitor

Consiste de una clase externa que es agregada al modelo con el cual trabajamos y que actúa sobre los datos contenidos en las instancias de las clases del modelo.

i) Muchas operaciones distintas y sin relación entre sí deben ser realizadas sobre objetos en una estructura de objetos intentando evitar una “contaminación”

ii) La estructura de objetos de una aplicación es estable, pero se quieren añadir con frecuencia nuevas operaciones a los objetos de esta estructura.

EL MODELO PROPUESTO

3.1 EJEMPLO DE ANÁLISIS SEMANTICO: ANÁLISIS DE TIPOS.

Es es la etapa en la cual se determina el tipo estático de cada expresión del programa fuente

Para realizar análisis de tipos se necesitan
algunos pasos previos.

Reunir información sobre la interfaz de cada
clase

Determinación del ámbito de las variables

Determinación de los métodos de
cada clase

Su firma