RobertoIA / PLQuiz

3 stars 3 forks source link

Alternativa al toString() con parentización mejorada #24

Closed cgosorio closed 3 years ago

cgosorio commented 3 years ago

Con este nuevo método, al generar la cadena que representa la expresión regular, se tienen en cuenta las precedencias y asociativiades de los operadores y no se generan paréntesis innecesarios.

He preferido crear un nuevo método toString2 en vez de sustituir el antiguo para evitar «romper» nada. Pero creo que tal cual está podrías sustituir sin problemas el toStringoriginal.

cgosorio commented 3 years ago

Roberto, salvo quizás algunos de los test que tienes ahora, creo que no se «rompería» nada si sustituyes el antiguo toString por el toString2 que he añadido en este pull request. Es mejor que el anterior, porque con este los ejercicios de evaluación son más interesantes al forzar que el alumno sepa manejar las precedencias y asociatividades de los operadores.

cgosorio commented 3 years ago

He descubierto un error en uno de los métodos.

Lo que sigue:

    public boolean esBinario() {
        return this.esCierre() || this.esUnion();
    }   

debería haber sido:

    public boolean esBinario() {
        return this.esConcat() || this.esUnion();
    }   

En todo caso, en un pull request que estoy preparando esto estaré corregido.

cgosorio commented 3 years ago

Roberto este pull request podrías ignorarlo, dado que he hecho otro a posteriori (rama improved-parser) que incorpora los cambios de este y corrige el error del que informaba arriba.