ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

Analizador Sintáctico


Enviado por   •  27 de Noviembre de 2013  •  9.282 Palabras (38 Páginas)  •  607 Visitas

Página 1 de 38

Programación de Sistemas

Grupo: 5551

“Analizador Sintáctico”

Integrante:

Islas López Sandy Paulina

Profesora Xóchitl Raquel Wong Cohen

Periodo 2013-2

Introducción al trabajo

En este documento se conocerán las características y principales funciones de un analizador sintáctico.

Analizaremos e interpretaremos como un compilador realiza el análisis sintáctico de un programa.

Índice

Introducción al trabajo 2

Introducción al tema 3

Análisis sintáctico 3

Desarrollo 5

Código 5

Captura de pantallas 12

Conclusiones Individuales 13

Arteaga Islas Esmeralda 13

Bravo Aguilar Josué Benjamín 13

García Contreras Eunice Sinaí 13

Islas López Sandy Paulina 13

Martínez Diosdado Carlos Adolfo 13

Conclusiones General 14

Referencias. 14

Introducción al tema

Todo lenguaje de programación tiene reglas que describen la estructura sintáctica de programas bien formados. En Pascal, por ejemplo, un programa se compone de bloques, un bloque de proposiciones, una proposición de expresiones, una expresión de componentes léxicos, y así sucesivamente. Se puede describir la sintaxis de las construcciones de los lenguajes de programación por medio de gramáticas de contexto libre o notación BNF ( Backus-Naur Form).

 Las gramáticas ofrecen ventajas significativas a los diseñadores de lenguajes y a los desarrolladores de compiladores.

 Las gramáticas son especificaciones sintácticas y precisas de lenguajes de programación.

 A partir de una gramática se puede generar automáticamente un analizador sintáctico.

 El proceso de construcción puede llevar a descubrir ambigüedades.

 Una gramática proporciona una estructura a un lenguaje de programación, siendo más fácil generar código y detectar errores.

 Es más fácil ampliar/modificar el lenguaje si está descrito con una gramática.

La mayor parte de este tema está dedicada a los métodos de análisis sintáctico de uso típico en compiladores. Primero se introducen los conceptos básicos, después las técnicas adecuadas para la aplicación manual. Además como los programas pueden contener errores sintácticos, los métodos de análisis sintáctico se pueden ampliar para que se recuperen de los errores sintácticos más frecuentes.

Análisis sintáctico

El análisis sintáctico es un análisis a nivel de sentencias, y es mucho más complejo que el análisis léxico. Su función es tomar el programa fuente en forma de tokens, que recibe del analizador léxico, y determinar la estructura de las sentencias del programa. Este proceso es similar a determinar la estructura de una frase en Castellano, determinando quien es el sujeto, predicado, el verbo y los complementos.

El análisis sintáctico agrupa a los tokens en clases sintácticas (denominadas no terminales en la definición de la gramática), tales como expresiones, procedimientos, etc.

El analizador sintáctico o parser obtiene un árbol sintáctico (u otra estructura equivalente) en la cual las hojas son los tokens, y cualquier nodo que no sea una hoja, representa un tipo de clase sintáctica (operaciones). Por ejemplo el análisis sintáctico de la siguiente expresión:

(A+B)*(C+D)

Con las reglas de la gramática que se presenta a continuación dará lugar al árbol sintáctico de la figura 3:

o <expresión> ::= <término> <más términos>

o <más términos>::= +<término> <más términos>| - <término> <más términos> | <vacío>

o <término> ::= <factor> <más factores>

o <más factores>::= * <factor> <más factores>|/ <factor> <más factores> | <vacío>

o <factor> ::= ( <expresión> ) | <variable> | <constante>

La estructura de la gramática anterior refleja la prioridad de los operadores, así los operadores “+” y “-” tienen la prioridad más baja, mientras que “*” y “/” tienen una prioridad superior. Se evaluaran en primer lugar las constantes, variables y expresiones entre paréntesis.

Los árboles sintácticos se construyen con un conjunto de reglas conocidas como gramática, y que definen con total precisión el lenguaje fuente.

Al proceso de reconocer la estructura del lenguaje fuente se conoce con el nombre de análisis sintáctico (parsing). Hay distintas clases de analizadores o reconocedores sintácticos, pero en general se clasifican en 2 grandes grupos: A.S.

Ascendentes y A.S. Descendentes.

La principal tarea del analizador sintáctico no es comprobar que la sintaxis del programa fuente sea correcta, sino construir una representación interna de ese programa y en el caso en que sea un programa incorrecto, dar un mensaje de error.

Para ello, el analizador sintáctico (A.S.) comprueba que el orden en que el analizador léxico le va entregando los tokens es válido. Si esto es así significará que la sucesión de símbolos que representan dichos tokens puede ser generada por la gramática correspondiente al lenguaje del código fuente.

Desarrollo

Código

package cadenas;

import javax.swing.JOptionPane;

public class Main {

public static void main(String[] args) {

}

}

-----------------------------------------------------------------------------------------------------------------------------------

import java.io.BufferedReader;

import java.io.File;

import java.io.FileNotFoundException;

import java.io.FileReader;

import java.io.FileWriter;

import java.io.IOException;

import java.io.PrintWriter;

import java.net.MalformedURLException;

import javax.swing.*;

import javax.swing.JOptionPane;

import javax.swing.JFileChooser;

import javax.swing.filechooser.FileNameExtensionFilter;

public class Cadenas extends javax.swing.JFrame {

String cadena=""; /*Declaracion de cadenas*/

String cadenas="";/*Declaracion de cadenas*/

public Cadenas() {/*declaracion de la clase*/

initComponents();

pontab();

}

Object[] rows = new Object[2];/* creacion de

...

Descargar como (para miembros actualizados) txt (29 Kb)
Leer 37 páginas más »
Disponible sólo en Clubensayos.com