-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathTS.h
63 lines (50 loc) · 1.65 KB
/
TS.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
// Puntero a función que recibe un double y devuelve un double
typedef double (*func_t) (double);
// Definimos el tipo de dato que se almacenará en la lista
typedef struct {
char *nombre; // Nombre
int tipo; // Tipo: VAR o FNCT
union {
double valor; // Valor de la variable
func_t funcion; // Puntero a la función
} valor;
int constante; // 1 si es constante, 0 si no lo es
struct Nodo *siguiente; // Puntero al siguiente Nodo
}Nodo;
extern Nodo *TS; // Tabla de símbolos
/* Funciones */
// Inicializar la tabla de símbolos
void initTS();
// Destruir la tabla de símbolos
void destruirTS();
// Elimina un nodo de la tabla de símbolos
/*
@param nodo: Puntero al nodo a eliminar
*/
void eliminarNodoTS(Nodo **nodo);
// Crear un nodo a partir de sus datos
/*
@param nombre: Nombre del nodo
@param tipo: Tipo del nodo (Variable = 0, Función = 1)
@param valor: Valor del nodo
@param constante: 1 si es constante, 0 si no lo es
@return: Puntero al nodo creado
*/
Nodo *crearNodo(char *nombre, int tipo, int constante);
// Insertar un nodo en la tabla de símbolos
/*
@param nodo: Puntero al nodo a insertar
*/
void insertarNodo(Nodo *nodo);
// Buscar un nodo en la tabla de símbolos
/*
@param nombre: Nombre del nodo a buscar
@return: Puntero al nodo buscado
*/
Nodo *buscarNodo(char *nombre); // Busca un nodo en la tabla de símbolos
// Imprimir las funciones almacenadas en la tabla de símbolos
void imprimirFunciones();
// Imprimir las variables almacenadas en la tabla de símbolos
void imprimirVariables();
// Reiniciar la tabla de símbolos
void reiniciarTS();