Pessoal, tenho um algorítmo que realiza a comparação de expressões regulares, dando uma introdução a análise sintática em C. Mas estou tendo problemas no momento da comparação pois os valores esperados não são retornados. Na verdade, as coisas não são comparadas corretamente e o retorno é nulo.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdbool.h>
static char *expressoes[] = {"print", "open", "close"};
static char *acao[] = {"imprime um valor.", "abre um requerimento.", "fecha um requerimento."};
int verificar_expressao(char*);
char *retorna_acao(int);
int main(){
printf("Analisador de Expressões\n");
while(true){
printf(">> ");
char *palavra;
scanf(palavra);
int valor = verificar_expressao(palavra);
char *desc = retorna_acao(valor);
printf("Expressão: ");
printf(expressoes[valor]);
printf(" -> ");
printf(desc);
printf("\n");
printf("---------------------------\n");
}
return 0;
}
int verificar_expressao(char *palavra){
int k;
int i;
for(i = 0;i < sizeof(expressoes)/sizeof(expressoes[0]);i++){
if(expressoes[i] == palavra){
k = i;
break;
}else{
continue;
}
}
return k;
}
char *retorna_acao(int i){
return acao[i];
}