#include #include #include #define MAXTOKEN 256 enum STATI {P, q0, q1, q2, q3, F}; //P: stato pozza! int main() { int i, n; int stato; char token[MAXTOKEN+1]; char risp; do { stato = q0; system("CLS"); fflush(stdin); printf("Inserisci il token da analizzare: "); gets(token); printf("%s\n",token); n = strlen(token); for(i = 0; i < n; i++) switch (stato) { case q0: if (isspace(token[i])) stato = q0; else if (token[i] == '/') stato = q1; else stato = P; break; case q1: if (token[i] == '*') stato = q2; else stato = P; break; case q2: if (token[i] != '*') stato = q2; else stato = q3; break; case q3: if (token[i] == '*') stato = q3; else if ((token[i] != '/') && (token[i] != '*')) stato = q2; else if (token[i] == '/') stato = F; break; case F: if (isspace(token[i])) stato = F; else if (token[i] != '\0') stato = P; break; } if (stato == F) printf("Token %s esatto!\n\n", token); else printf("Token %s errato!\n\n", token); do { printf("Si desidera analizzare un altro token? (S/N) "); scanf("%s",&risp); } while ((risp != 'S') && (risp != 's') && (risp != 'N') && (risp != 'n')); } while ((risp == 'S') || (risp == 's')); return(0); }