-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgerenTabSimb.h
55 lines (41 loc) · 1.23 KB
/
gerenTabSimb.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
/**
******************************************************************************
* @file gerenTabSimb.h
* @author Marcelo Henrique, Mauricio Souza
* @version x.x
* @date 22.11.17
* @brief Gerenciador da Tabela de Simbolos
******************************************************************************
*/
#ifndef GERENTABSIMB_H_INCLUDED
#define GERENTABSIMB_H_INCLUDED
#include "sintatico.h"
#define QntSimbolos 100
typedef enum tipoSimbolo {
BOOLEANO, CARACTER, INTEIRO, REAL, SEMRETORNO
} TipoSimbolo;
typedef enum categoriaSimbolo {
FUNCAO, PARAMETRO, VARIAVEL, PROTOTIPO
} CategoriaSimbolo;
typedef enum escopoSimbolo {
GLOBAL, LOCAL
} EscopoSimbolo;
typedef struct simbolo {
char lexema[TamLexema];
TipoSimbolo tipo;
CategoriaSimbolo categoria;
EscopoSimbolo escopo;
int zumbi; // bool. Verdadeira se funcao do parametro ja foi terminada
} Simbolo;
void addTabSimbolo();
bool checaTabSimbolo();
void removeTabSimbolo();
//Funcoes para checagem semantica
void checaPrototipo();
void checaVariavel();
extern Simbolo TabelaSimbolos[QntSimbolos];
extern CategoriaSimbolo catSimbolo;
extern EscopoSimbolo escSimbolo;
extern TipoSimbolo tipSimbolo;
extern Token tokenTabSimb;
#endif // GERENTABSIMB_H_INCLUDED