-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathsistema.h
57 lines (44 loc) · 1.67 KB
/
sistema.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
#ifndef SISTEMA
#define SISTEMA
// ----------- ESTRUTURAS -----------
// Estrutura para transições de um único estado
struct no {
int estado;
char simbolo;
struct no *prox;
};
// Ponteiro para a cabeça da lista de transições
typedef struct no *transicao;
// Estrutura para a especificação da gramática
typedef struct{
char *alfabeto;
int *estados;
int *finais;
transicao *transicoes; // vetor de cabeças
} GRAMATICA;
// ----------- SISTEMA -----------
// Conta o número de elementos de um vetor
// Entrada: ponteiro para um vetor que termina com -1
// Saída: número de elementos
int contar_tamanho_vetor(int *vetor);
// Conta o número de elementos de um string
// Entrada: ponteiro para um string que termina com -1
// Saída: número de elementos
int contar_tamanho_string(char *string);
// Constrói a especificação da gramática
// Entrada: ponteiro para alfabeto, estados e finais
// Saída: nenhuma
GRAMATICA* criar_gramatica(char *alfabeto, int *estados, int *finais);
// Insere uma transição na gramática
// Entrada: ponteiro para a gramática, estado de onde sai a transição, estado para onde vai e o simbolo lido
// Saída: 0 se o processo foi um sucesso, 1 se ocorreu erro nas inserções
int inserir_transicao(GRAMATICA *gramatica, int estado_origem, int estado_destino, char simbolo);
// Imprime a gramática e suas transições
// Entrada: ponteiro para a gramática
// Saída: nenhuma
void imprimir_gramatica(GRAMATICA *gramatica);
// Simula o processamento da palavra no AFD especificado
// Entrada: ponteiro para a gramatica não nula e palavra
// Saída: nenhuma
void testar_palavra(GRAMATICA *gramatica, char *palavra);
#endif