arvore
*/
#include
#include
#include
#include
#include
/* struct da lista usada para armazenar a tabela de simbolos */ struct simbolo { char nome[1000]; short int posicao_memoria; char tipo; /* 'R' - rotulo, 'C' - constante, 'V' - variavel, 'I' - indefinido ainda */ short int valor_constante; struct simbolo *proximo;
};
/* funcao que define um rotulo lido do arquivo, armazenando sua posicao na memoria */ void f_DefineRotulo (struct simbolo **inicio_lista, char rotulo_lido[1000], short int endereco_rotulo);
/* funcao que define uma variavel lida do arquivo, armazenando sua posicao na memoria */ void f_DefineVariavel (struct simbolo *inicio_lista, char variavel_lida[1000], short int endereco_variavel);
/* funcao que define uma constante lida do arquivo, armazenando seu valor e sua posicao na memoria */ void f_DefineConstante (struct simbolo *inicio_lista, char constante_lida[1000], short int endereco_constante, short int valor);
/* funcao que insere um simbolo lido do arquivo, sendo ele rotulo, variavel ou constante, na tabela de simbolos */ void f_InserirSimboloNaLista (struct simbolo **inicio_lista, char simbolo_lido[1000]);
/* funcao que procura e retorna o ponteiro para um dado simbolo na tabela de simbolos, seja ele rotulo, variavel ou constante */ struct simbolo *f_ProcurarSimboloNaLista (struct simbolo *inicio_lista, char simbolo_procurado[1000]);
/* Funcao que retorna o codigo da operacao*/ short int f_DefineOperacao (char *operacao);
/* Funcao que retorna um codigo para a diretiva */ short int f_DefineDiretiva (char *diretiva);
int contador_linhas = 1, erro = 0;
int main () { struct simbolo *inicio_lista; FILE *arquivo_fonte, *arquivo_objeto; char caracter; char linha[4000], linha_aux[4000]; int contador_caracteres = 0; char *token; char rotulo[1000], *operacao, operando1[1000], operando2[1000]; short int codigo_operacao,