]> git.llucax.com Git - z.facultad/75.42/calculadora.git/blob - parseerror.h
Versión preliminar del programa del TP. Falta evaluar ecuaciones.
[z.facultad/75.42/calculadora.git] / parseerror.h
1 /* vim: set et sts=4 sw=4 fdm=indent fdl=1 fdn=1 fo+=t tw=80:
2  *
3  * Taller de Programación (75.42).
4  *
5  * Ejercicio Número 2:
6  * Programa calculadora.
7  *
8  * Copyleft 2003 - Leandro Lucarella <llucare@fi.uba.ar>
9  * Puede copiar, modificar y distribuir este programa bajo los términos de
10  * la licencia GPL (http://www.gnu.org/).
11  *
12  * Creado: sáb ago 30 19:59:12 ART 2003
13  *
14  * $Id$
15  */
16
17 #ifndef PARSEERROR_H
18 #define PARSEERROR_H
19
20 #include "bool.h"
21 #include <stdlib.h>
22 #include <stdio.h>
23
24 /**
25  * Error de interpretación.
26  */
27 typedef struct {
28     /** Línea en la que se produjo el error. */
29     size_t  line;
30     /** Posición en la que se produjo el error. */
31     size_t  pos;
32     /** Mensaje de error. */
33     char*   message;
34 } ParseError;
35
36 /**
37  * Crea un nuevo ParseError.
38  *
39  * \return Nuevo ParseError.
40  */
41 ParseError* ParseError_new(void);
42
43 /**
44  * Elimina un ParseError.
45  *
46  * \param pe ParseError a eliminar.
47  */
48 void ParseError_delete(ParseError* pe);
49
50 /**
51  * Cambia el mensaje al ParseError.
52  *
53  * \param pe ParseError al cual cambiar el mensaje de error.
54  * \param msg Nuevo mensaje.
55  *
56  * \return TRUE si se pudo alocar la memoria necesaria, FALSE si no.
57  */
58 bool ParseError_set_message(ParseError* pe, const char* msg);
59
60 /**
61  * Cambia el mensaje especificando posición del error.
62  * Se epecifica la posición, el caracter incorrecto y que tipo de caracteres se
63  * esperaban.
64  *
65  * \param pe ParseError al cual cambiar el mensaje de error.
66  * \param msg Mensaje con los caracteres que se esperaban.
67  * \param pos Posición en la que se produjo el error.
68  * \param wrong_char Caracter incorrecto.
69  *
70  * \return TRUE si se pudo alocar la memoria necesaria, FALSE si no.
71  */
72 bool ParseError_set_pos_message(ParseError* pe, const char* msg, size_t pos,
73         char wrong_char);
74
75 /**
76  * Imprime un ParseError.
77  *
78  * \param pe ParseError a imprimir.
79  * \param fp Archivo en el cual imprimirlo.
80  *
81  * \return cantidad de caracteres impresos.
82  */
83 size_t ParseError_print(ParseError* pe, FILE* fp);
84
85 #endif /* PARSEERROR_H */