Descargar la presentación
La descarga está en progreso. Por favor, espere
Publicada porProspero Montalvan Modificado hace 10 años
1
Analizador sintáctico Prácticas EDI - © Juan Ramón Pérez1
2
Implementación del analizador sintáctico Prácticas EDI - © Juan Ramón Pérez2 Nos basamos en la gramática para implementar el analizador sintáctico para nuestro lenguaje. Utilizamos una serie de pautas para realizar la implementación.
3
Clase Sintactico Prácticas EDI - © Juan Ramón Pérez3 Sintactico Lexico […] xml(): boolean elemento(): boolean … create(URL) analizar(): boolean Un método por cada regla de la gramática.
4
Método analizar() Prácticas EDI - © Juan Ramón Pérez4 Es el único método que llamaremos desde otras clases. Procesará todo el fichero XML pidiendo tokens al Lexico y comprobando que cumplen las reglas de la gramática. Si se cumplen estas reglas analizar() devuelve true. Si no se cumplen false. Para ello llama al método privado xml() y devuelve lo que este devuelva.
5
Implementación de cada regla de la gramática Prácticas EDI - © Juan Ramón Pérez5 Creamos un método que devuelve un booleano: true se verifica la regla. false no se verifica la regla Ej. regla: ::= TOKEN_IDENTIFICADOR ‘=’ TOKEN_CADENA Implementación: boolean atributo() {... return ??; }
6
Implementación regla compuesta sólo por terminales Prácticas EDI - © Juan Ramón Pérez6 ::= TOKEN_IDENTIFICADOR ‘=’ TOKEN_CADENA El método devuelve true si se cumple que se encuentran los tokens que se esperan; si no devuelve false. Implementación: token= lexico.siguienteToken(); if (token.getCodigo()==TOKEN_IDENTIFICADOR) { token= lexico.siguienteToken(); if (token.getCodigo()==TOKEN_IGUAL) {... return true; } return false;
7
Implementación regla con no terminales Prácticas EDI - © Juan Ramón Pérez7 ::= Debemos llamar a los métodos que representan estos no terminales y comprobar que todos devuelven true para devolver true. Implementación: … if (inicioElemento()) if (atributos()) if (cierres()) return true; return false; …
8
Implementación de una regla con alternativas Prácticas EDI - © Juan Ramón Pérez8 Hay reglas que tienen varias opciones para ser correctas. Ej.: ::= ‘/>’ | ‘>’ Hay que mirar las dos alternativas: Si falla la primera no se puede devolver false, habría que mirar la segunda.
9
Gestión de vacío Prácticas EDI - © Juan Ramón Pérez9 Hay reglas en las que una de las alternativas es vacío: ::= | vacío El vacío indica que no debemos verificar nada en esta regla: siempre devolverá true. Pero hemos leído un token de más, no podemos comernoslo, este token será procesado por la siguiente regla que necesite un token. Dejaremos que la siguiente regla en el orden del análisis compruebe que todo funciona correctamente. ::= En este caso, el token debería verificar
Presentaciones similares
© 2025 SlidePlayer.es Inc.
All rights reserved.