I tried to do a scanner function with goto to check if the vector with my dfa can be accepted,
I'm having a problem with the logic, when I call the function the code starts to print in loop and it doesn't work. here is my code, i need help:
#include <stdio.h>
#define REJEITA 0
#define ACEITA 1
#define TAM 10
int scanner(char palavra[], int contador);
int main() {
char palavra[TAM] = "45"; // Palavra teste
int contador = 0;
scanner(palavra, contador);
printf("TEST\n");
return 0;
}
int scanner(char palavra[], int contador) {
q1:
//c = palavra[contador];
if (palavra[contador] >= "0" || palavra[contador] <= "9") {
contador += 1;
// printf("Palavra ACEITA pelo automato");
goto q2;
return (ACEITA);
}
else if (palavra[contador] == "+" || palavra[contador] == "-" ) {
printf("Palavra REJEITADA pelo automato");
contador += 1;
goto q5;
return (REJEITA);
} else
goto q5;
q2:
if (palavra[contador] >= "0" || palavra[contador] <= "9") {
contador += 1;
printf("Palavra ACEITA pelo automato");
goto q2;
return (ACEITA);
}
else if (palavra[contador] == "." ) {
contador += 1;
printf("Palavra ACEITA pelo automato");
goto q3;
return (ACEITA);
}
else if (palavra[contador] == "+" || palavra[contador] == "," ||
palavra[contador] == "-") {
contador += 1;
printf("Palavra REJEITADA pelo automato");
goto q5;
return (REJEITA);
}
// else if (c == "\0") return (ACEITA);
else
goto q5;
return (REJEITA);
q3:
if (palavra[contador] >= "0" || palavra[contador] <= "9") {
contador += 1;
printf("Palavra ACEITA pelo automato");
goto q3;
return (ACEITA);
}
else if (palavra[contador] == "+" || palavra[contador] == "," ||
palavra[contador] == "- "|| palavra[contador] == ".") {
contador += 1;
printf("Palavra REJEITADA pelo automato");
goto q5;
return (REJEITA);
}
// else if (c == "\0") return (ACEITA);
else
goto q5;
return (REJEITA);
q5: // termina ou invalida
printf("Palavra rejeitada pelo automato");
return (REJEITA);
}
I'm waiting to be able to return if afd is accepted or not in main