Red de conocimientos turísticos - Conocimientos sobre calendario chino - Escribir un programa de análisis léxico para un subconjunto del lenguaje C utilizando el método de análisis directo

Escribir un programa de análisis léxico para un subconjunto del lenguaje C utilizando el método de análisis directo

¡Elígeme como la mejor respuesta!

Universidad de Nanhua

Escuela de Informática y Tecnología

Informe de Inspección Práctica

(Segundo Semestre del Año Académico 2011~2012 )

Nombre del curso

Lenguaje de programación y compilación

Nombre e ID de estudiante

Categoría de información eléctrica profesional

Puesto 8-209 Profesor

Título: Utilice el método de análisis directo para escribir un programa de análisis léxico para un subconjunto del lenguaje C++.

1. Análisis

Para los símbolos de texto, los dividimos en cuatro categorías: palabra reservada K, identificador I, constante C y delimitador P. Cada tipo de símbolo de texto tiene Puede estar representado por una tabla. Durante el proceso de análisis léxico, el contenido de la palabra reservada K y el delimitador P son fijos (determinados por el idioma), y la cadena del programa fuente solo se puede seleccionar a partir de ellos, mientras que el identificador I y la constante C se forman continuamente durante el proceso de análisis.

Para un programa fuente específico, escanear una cadena identifica una palabra. Si el tipo de palabra es K, I, C o P, se genera en formato binario. Cada vez que se llama al analizador léxico, puede continuar escaneando automáticamente para formar la siguiente palabra hasta que se escanee todo el programa fuente, formando así la cadena de palabras correspondiente.

Las expresiones binarias de varias palabras tienen la misma estructura y longitud, y la forma es la siguiente:

(tipo de palabra t, el valor de la palabra en sí I)

t Es la parte del discurso, y la parte del discurso * * * se divide en cuatro categorías: K, I, C y P. Cada categoría corresponde a una tabla. Entonces, T es en realidad un puntero a una tabla correspondiente a una de estas cuatro categorías, e I es un puntero a un elemento específico de esa tabla.

Entonces, todo el proceso de análisis léxico consiste en obtener símbolos de palabras del programa fuente, completar estos símbolos en cuatro tablas de clases y formar una secuencia binaria para formar un índice, lo que brinda comodidad para futuros análisis gramaticales. .

Para reducir la cantidad de práctica, se pueden seleccionar adecuadamente subconjuntos de K y P. La siguiente tabla:

Tabla 1 tabla K de palabras reservadas

Dirección interna 1234556789 10

Palabra reservada start const do else end if procedimiento luego var while

Tabla 2 Tabla P del Monumento Límite

Dirección interna 1234556789 10

Símbolo de límite + : : ( , ) < <

La lista de palabras reservadas; incluye 10 Representa una palabra reservada La lista de símbolos de límite incluye tres operadores relacionales (8, 9, 10), operadores aritméticos (2), tres delimitadores (1, 4, 6), un par de corchetes y el número de asignación **. *10. Las descripciones de procedimientos y variables se pueden ingresar al analizador léxico como ejemplos de programas fuente. Cada entrada en la tabla de identificadores I contiene un identificador y cada entrada en la tabla de constantes C contiene una constante entera. El contenido de las dos últimas tablas se genera durante el análisis léxico.

¿Cómo identificar símbolos de palabras de programas fuente? El diagrama de flujo de la Figura 1 refleja claramente este proceso.

En la Figura 1, el estado del doble círculo representa el estado final, es decir, si se puede alcanzar el estado final, significa que se ha reconocido un símbolo de palabra. El estado final con un signo * significa. ese carácter necesita una copia de seguridad durante el procesamiento.

Segundo algoritmo

Durante el proceso de escaneo, el analizador léxico extrae a su vez los caracteres fuente del programa fuente. Según el diagrama de transición de estado del proceso de escaneo de 1, cuando se encuentra el estado final, que es el estado de doble círculo, se obtiene un símbolo de palabra. En este momento, puede determinar a qué categoría de K, I, C y P pertenece la palabra en función del primer carácter, determinando así el "tipo de palabra" y el "valor propio de la palabra" de la palabra. El flujo completo del algoritmo de análisis léxico se muestra en la Figura 2.

En tercer lugar, implementación

El entorno de práctica es el lenguaje TURBO C2.0. Consulte el apéndice para conocer el plan de implementación.

Cuarto, resumen

Prepárate antes de subir al avión. Es decir, de acuerdo con el propósito, requisitos y análisis de la pasantía, se selecciona la estructura de datos correspondiente y se escribe el programa de análisis léxico utilizando el proceso del algoritmo de referencia del lenguaje C. El programa compilado debe depurarse en la computadora. Tenga en cuenta que los ejemplos de depuración deben ser léxicamente correctos, léxicamente incorrectos o estar fuera del alcance de la estructura de datos seleccionada.

Una vez completado el experimento y logrado el propósito de la pasantía, si aún queda capacidad, el subconjunto seleccionado se puede expandir o agregar adecuadamente con las funciones correspondientes, tales como: expandir el número de símbolos de límites y palabras reservadas; permitir constantes de números reales; comprobar que el rango máximo de error se extiende al conjunto de todos los caracteres del lenguaje PASCAL.

Una vez completado el experimento, escriba un informe completo del experimento para reflejar los resultados finales del aprendizaje experimental.

Apéndice

/*Código experimental:*/

Resultados experimentales:

Verbo (abreviatura de verbo) sentimientos sobre los resultados

Las palabras que deben reconocerse en el experimento son:

Palabras clave: DIM, IF, DO, STOP, END, el código de categoría es 1.2.3.4.5.

Identificador; el código de especie de palabra es 6.

Las constantes son números enteros sin signo; el código de especie de palabra es 7.

Los operadores incluyen: =, -, *, * *El código de categoría de palabra es 8.9.10.11.

Los delimitadores incluyen:,,,; el código de categoría de palabra es 12.13.14.

A través de este experimento, aprendí a diseñar, compilar y depurar programas de análisis léxico y profundicé mi comprensión de los principios del análisis léxico. Estoy familiarizado con los principios detrás de la construcción manual de analizadores léxicos. Basado en el diagrama de transición de estado de las palabras en el lenguaje de reconocimiento, escribo directamente este programa de análisis de métodos en un lenguaje de alto nivel (como el lenguaje C ++). Además, también me familiarizó con el contenido relevante del lenguaje C++ y profundizó mi comprensión del uso del lenguaje C++.

shi.com" target="_blank">Red de conocimientos turísticos All Rights Reserved.