Monografias.com > Computación > Programación
Descargar Imprimir Comentar Ver trabajos relacionados

Generación de código en C# para un reconocedor sintáctico ascendente




Enviado por FRANCISCO RIOS ACOSTA



Partes: 1, 2

  1. Introducción
  2. Iniciando la aplicación Windows C#
  3. Clases lexico y autómata
  4. Prueba de funcionamiento del análizador léxico o analex
  5. Clases propuestas
  6. Atributos en las clases
  7. Constructores en las clases
  8. Métodos de la clase
  9. Métodos de la clase
  10. El programa RA-SLR
  11. Carpeta generar gramática
  12. Carpeta generación de código
  13. Inscrustación de código en la aplicación C#
  14. Puesta a punto de la aplicación Windows C#
  15. Salvando y cargando una gramática
  16. Limpiar la rejilla de ingreso de gramática
  17. Visualización de la colección canónica de items
  18. Visualización de la tabla de reconocimiento
  19. Restricción importante
  20. Simulando el reconocimiento de una sentencia

1. Introducción

En las secciones siguientes voy a escribir acerca de 4 cuestiones fundamentales :

• Aplicación Windows C# típica para un reconocedor sintactico ascendente.

Resúmen y prueba de la propuesta de clases R.A.F. para un analizador léxico. Construcción de un analizador léxico usando el código generado por SP-PS1.

• Mi propuesta de clases para un objeto reconocedor sintactico ascendente SLR, -propuesta R.A.F.-.

Atributos, propiedades y métodos.

• Presentación y manejo del programa RA-SLR que genera código de acuerdo a lo tratado en el libro del dragón –Ulman- sobre un reconocedor sintactico ascendente SLR, tomando en cuenta también a la propuesta de clases de R.A.F.

Este esfuerzo de programación del software RA-SLR, comenzó durante el periodo de clases del semestre AGO-DIC del 2007. Agradezco a todos mis alumnos de la materia "Programación de Sistemas" de dicho periodo, ya que ellos me tuvieron mucha paciencia durante el desarrollo de los algoritmos presentados aquí. Todos los algoritmos que desarrollé en clase fueron probados por mis alumnos –cuestión que les agradezco-, retroalimentandome los errores que fueron corregídos en equipo maestro-alumno. Al final del curso, tomé la tarea de programar la aplicación RA-SLR que genera el código C# de 4 clases : SintAscSLR, Item, Pila y SimbGram. La clase Pila la tomamos de los apuntes de mi clase "Estructura de Datos".

2. Iniciando la aplicación Windows C#

Iniciaremos con una aplicación típica. que permite la entrada de un texto para luego analizarlo léxicamente finalizando con un análisis sintactico usando un reconocedor ascendente SLR.

La interfase gráfica de la aplicación es la mostrada en la figura #2.1.

Monografias.com

Fig. No. 2.1 Interfase gráfica típica para un análisis sintactico – ascendente SLR.

De la figura #2.1 podemos observar que visualizamos las parejas token-lexema reconocidas y almacenadas en un objeto al que llamaremos oAnaLex. Este objeto analiza lexicamente al texto de entrada. El componente utilizado para la visualización es el dataGridView1.

El componente label2 es usado para visualizar un mensaje de análisis sintactico EXITOSO, o de otra forma un ERROR DE SINTAXIS.

La idea es que al hacer click sobre el componente button1 con la propiedad Text = "ANALISIS SINTACTICO", realicemos un análisis léxico y luego un análisis sintactico (en adelante supondré que es lo mismo análisis sintactico que reconocedor ascendente SLR).

El código para el botón button1 es –en negritas-:

Monografias.com

Notemos que usamos 2 objetos dentro del evento Click del button1 : oAnaLex y oAnaSintAscSLR. Estos 2 objetos son definidos como atributos de la forma Form1.

Monografias.com

Lo que sigue es definir las clases Lexico y SintAscSLR. La primera de ellas ya ha sido probada y la segunda, es tema que debemos desarrollar en este trabajo.

Desde luego que antes, tenemos que establecer que tipo de instrucciones vamos a reconocer con nuestro analizador sintactico ascendente. La gramática de contexto libre G=(Vt, Vn, S, O) que contiene la sintaxis de las sentencias, tiene los siguientes valores en sus componentes :

Monografias.com

Monografias.com

Recomiendo que el lector agrupe las producciones de la gramática. ¿Cuántas producciones tiene la gramática G?.

La gramática G reconoce sentencias de declaración de constantes, declaración de variables, de asignación, de entrada –lectura– y salida –visualización-. Todas estas sentencias existen en el ámbito acotado por una sentencia de inicio y una sentencia de fin. Un ejemplo es :

Monografias.com

El lector deberá de derivar a la derecha el ejemplo anterior, utilizando la gramática G.

La gramática G tiene restricciones y le corresponde al lector experimentarlas. La gramática sería mejor escribirla en notación Backus-Naur, sin embargo el alcance de estas propuestas no es suficiente.

He seleccionado mostrar los símbolos terminales Vts y los símbolos no terminales Vns, usando la notación de constante cadena –valor entre comillas-.

Además, el símbolo "$" lo incluí en los Vts aunque en realidad, este caracter no forma parte de los símbolos terminales.

Antes de hacer el análisis sintactico, debemos construir la clase Lexico (y la clase Automata) que permita definir al objeto oAnaLex en la aplicación sin error, que reconozca a todos los símbolos terminales –tokens- definidos en Vt, incluyendo al $.

3. Clases lexico y autómata

Los atributos de la clase Lexico son :

Monografias.com

A continuación describo a los atributos de la clase Lexico :

Monografias.com

Monografias.com

La clase Automata :

Monografias.com

Atributos de la clase Automata :

Monografias.com

Partes: 1, 2

Página siguiente 

Nota al lector: es posible que esta página no contenga todos los componentes del trabajo original (pies de página, avanzadas formulas matemáticas, esquemas o tablas complejas, etc.). Recuerde que para ver el trabajo en su versión original completa, puede descargarlo desde el menú superior.

Todos los documentos disponibles en este sitio expresan los puntos de vista de sus respectivos autores y no de Monografias.com. El objetivo de Monografias.com es poner el conocimiento a disposición de toda su comunidad. Queda bajo la responsabilidad de cada lector el eventual uso que se le de a esta información. Asimismo, es obligatoria la cita del autor del contenido y de Monografias.com como fuentes de información.

Categorias
Newsletter