+size_t ParseError_print(ParseError* pe, FILE* fp) {
+ /* No es un error de interpretación específico. */
+ if (!pe->pos) {
+ /* Si hay mensaje. */
+ if (pe->message) {
+ return fprintf(fp, "Error en la línea %u: %s.\n", pe->line,
+ pe->message);
+ /* Si no hay mensaje. */
+ } else {
+ return fprintf(fp, "Error en la línea %u no especificado.\n",
+ pe->line);
+ }
+ /* Es un error de interpretación en una posición específica. */
+ } else {
+ /* Si hay mensaje. */
+ if (pe->message) {
+ return fprintf(fp, "Error en la línea %u, posición %u: %s.\n",
+ pe->line, pe->pos, pe->message);
+ /* Si no hay mensaje. */
+ } else {
+ return fprintf(fp,
+ "Error en la línea %u, posición %u no especificado.\n",
+ pe->line, pe->pos);
+ }
+ }
+}