Problema Java

E

Buenas noches, mi problema es que tengo un compilador de sintaxis java, que por ahora sólo me dice el primer error que encuentra, y quería saber cómo puedo transformar el siguiente código para que tras la compilación entera del fichero, me muestre por pantalla todos los errores que contiene. Dicho código que tengo es el siguiente:

try {
  parser.CompilationUnit();
  System.out.println("Java Parser Version 1.1:  Java program parsed successfully.");
} catch (ParseException e) {
  System.out.println(e.getMessage());
  System.out.println("Java Parser Version 1.1:  Encountered errors during parse.");
}

En dicho código parser.CompilationUnit() lo que hace es irme comprobando el parser.

Un saludo, y gracias por las respuestas.

Fr4nk0

Pues una opción es, en el parser que hayas realizado, vas comprobando ( o has debido de ir comprobando) si todo va bien, y si no decir el error que ocurre en una determinada linea ( puede haber varios errores en una linea). Lo que hacen la mayoría de entornos de desarrollo al parsear el código es que cuando encuentran un error, lo guarda en un fichero, y va incrementando el numero de errores cada vez que guarda algo. Al final si el numero de errores es 0, te dice que no hay errores y puedes ejecutar tu programa. Si hay errores, te dice cuantos, y qué error es y la linea. Pues haz eso, guarda en un fichero los errores que vaya encontrando, y al final si el numero de errores (una variable) es 0, no lo muestras, y si es mayor a 0, lo muestras (Así lo hice yo haciendo un compilador de un lenguaje de especificación inventado, parecido a java pero en español, que después de parsearse, generaba código JAVA usando Jamaica) :P

E

Sí, la idea más o menos la tengo, pero como podría cambiarlo?.

Un saludo.

javithelong

Jdr, te lo ha explicado #2 bastante bien...

El parseador que escriba un fichero temporal, y luego al final lo que haces es leer el fichero (tras parsear) y poner los errores.

Simplemente en el parseador, si encuentra un error, no sale, lo escribe a un fichero y sigue.

PD: Recomiendo que implementes un máximo de errores (en plan 25 o así)

Fr4nk0

Tal y como ha dicho #4 es simplemente eso. La sugerencia del maximo de errores es buena, no vaya a ser que las primeras pruebas te salgan muchisimos errores (ya que un error puede derivar muchos mas), y tarde mucho en imprimirlos. Para lo del fichero temporal, te aconsejo que si no estas muy puesto en ficheros java, te crees una clase fichero, q tenga un atributo que sea un tipo fichero de java (buscatelo por internet como declararlo) , y un método que sea escribir que tenga como parámetro una cadena y usando la funcion para escribir ficheros en java, escriba esa cadena en una linea. Así sera mas rapido para que escribas los errores ( si no estas muy puesto en ficheros con java claro), y que no se te olvide abrir y cerrar el fichero al principio y final del parser, y de crear el objeto tipo fichero de la clase que hayas creado ( o fichero de java si no la vas a usar).

Usuarios habituales