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