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

DESARROLLO DE ANALIZADOR SINTACTICO


Enviado por   •  28 de Enero de 2021  •  Apuntes  •  5.305 Palabras (22 Páginas)  •  270 Visitas

Página 1 de 22

[pic 1]                               [pic 2]

UNIVERSIDAD MEXIQUENSE DEL BICENTENARIO

PLANTEL JIQUIPILCO

INGENIERIA EN SISTEMAS COMPUTACIONALES

PROGRAMACION DE SISTEMAS

DESARROLLO DE ANALIZADOR SINTACTICO

        

ALUMNO: OSCAR PEREZ FORTINO

JAZAEL BRAYAN LOPEZ SANCHEZ

DOCENTE: ING. DANIELA ROMERO SALINAS

GRUPO: 10SC151                


INTRODUCCION        

El analizador sintáctico tiene como objetivo encontrar las estructuras presentes en su entrada. Estas estructuras se pueden representar mediante el árbol de análisis sintáctico, que explica cómo se puede derivar la cadena de entrada en la gramática que especifica el lenguaje. Aunque en la práctica es habitual que el árbol de análisis no llegue a construirse, se trata de una abstracción que nos permite entender mejor todo el proceso.

Para construir la especificación sintáctica de los lenguajes de programación, se suelen emplear gramáticas incontextuales, generalmente restringidas para que el análisis se pueda realizar de manera eficiente. Para que sea posible construir el árbol de análisis, es necesario que la entrada no presente errores sintácticos. En caso de que los haya, el analizador debe informar de su presencia adecuadamente y, si es posible, intentar continuar el análisis.

En el código que se mostrara se van a Detectar los errores sintácticos y la recuperación de los mismos, así como Integrar la etapa del léxico dentro del desarrollo del compilador.

La práctica del análisis sintáctico mediante diagramas constituye un procedimiento arraigado en la didáctica de la gramática. No es de extrañar dado que éstos, por una parte, poseen un relativo carácter lúdico y, por otra, obligan a quien los elabora   a pensar (debe decidir continuamente cuál es la aplicación más pertinente de la teoría lingüística que conoce). Los hay de muy diversos tipos: de casillas, de bandejas, en estema, arbóreos... Optar por uno u otro método depende, además de la formación de cada cual y de sus gustos personales, de la cantidad de información que se quiera   y se pueda transmitir; como afirman Guillermo Rojo y Tomás Jiménez Juliá, “las representaciones (del análisis sintáctico) son adecuadas o no en la medida en que permiten representar lo que la teoría dice”

DOCUMENTACIÓN

Explicación del programa

  1. Creación de reglas lexicas

[pic 3]

OSCAR PEREZ

Este código incluye las reglas léxicas de nuestro analizador, aquí declaramos todo lo nuestro analizador puede o no puede analizar.

Importamos la paquetería tokens, que es la clase de numeración que incluirá todos los tokens de nuestro analizador léxico.

JAZAEL LOPEZ

También tenemos todas las declaraciones que vamos a ocupar como la clase lexer, los tokens, el lenguaje que es de la a a la z en minúsculas y en mayúsculas, los dígitos del 0 al 9.

Una vez declarados los tokens vamos a declarar las palabras reservadas que utilizaremos en nuestro código (if, while, for, else etc.) también declaramos los signos matemáticos y su regreso que sería su nombre.

        

Código:

package codigo;

import static codigo.Tokens.*;

%%

%class Lexer

%type Tokens

L=[a-zA-Z_]+

D=[0-9]+

espacio=[ ,\t,\r,\n]+

%{

    public String lexeme;

%}

%%

int |

if |

else |

while {lexeme=yytext(); return Reservadas;}

{espacio} {/*Ignore*/}

"//".* {/*Ignore*/}

"=" {return Igual;}

"+" {return Suma;}

"-" {return Resta;}

"*" {return Multiplicacion;}

"/" {return Division;}

{L}({L}|{D})* {lexeme=yytext(); return Identificador;}

("(-"{D}+")")|{D}+ {lexeme=yytext(); return Numero;}

 . {return ERROR;}

  1. Creación de tokens de numeración

[pic 4]

OSCAR PEREZ

Creamos un java Enum con el nombre Tokens, en esta incluiremos todas las palabras o return que utilizamos en la clase lexer.

JAZAEL LOPEZ

Una vez declarados todos los tokens, guardamos la clase y con eso esta lista la clase de enumeración de tokens

        Código:

                        package codigo;

                        public enum Tokens {

                           Reservadas,

                            Igual,

                            Suma,

                            Resta,

                            Multiplicacion,

                            Division,

                            Identificador,

                           Numero,

                            ERROR

                }

  1. Creación de la clase Java de analizador léxico

[pic 5]

OSCAR PEREZ

En una clase de java vamos a crear el analizador lexico.

En un string vamos a crear una ruta donde se encuentra nuestro primer archivo llamado flexer (donde creamos las reglas lexicas).

JAZAEL LOPEZ

Despues crearemos un metodo que sea publico, estatico y que sea vacio, lo llamamos generarLexer por que ese metodo nos permitira crear el analizador lexico.

Tambien utilizamos el file de java para importar la ruta que le pasamos de parametro, aquí utilizamos la clase Jflex importar el archivo de Jflex.

        Codigo:

        package codigo;

        import java.io.File;

        public class Principal {

            public static void main (String [] args) {

                        String ruta = "C:/Users/oskar/OneDrive/Documentos/NetBeansProjects/analizadorLexico/src/codigo/Lexer.flex";

...

Descargar como (para miembros actualizados)  txt (28.4 Kb)   pdf (1.2 Mb)   docx (1.8 Mb)  
Leer 21 páginas más »
Disponible sólo en Clubensayos.com