La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Analizador sintáctico Prácticas EDI - © Juan Ramón Pérez1.

Presentaciones similares


Presentación del tema: "Analizador sintáctico Prácticas EDI - © Juan Ramón Pérez1."— Transcripción de la presentación:

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


Descargar ppt "Analizador sintáctico Prácticas EDI - © Juan Ramón Pérez1."

Presentaciones similares


Anuncios Google