Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <ctype.h>
- int STATE = 0;
- enum states { ST0, ST1, ST2, ST3, ST4, ST5, ERROR};
- int statemachine()
- {
- int c;
- int row, col;
- while(c != EOF)
- {
- switch(STATE)
- {
- case ST0:
- c = getc(stdin);
- if(c == '.')
- {
- STATE = ST1;
- }
- else if(isupper(c))
- {
- STATE = ST2;
- }
- else if(islower(c))
- {
- STATE = ST4;
- }
- if(islower(c) || isupper(c) || c == '.')
- {
- printf("%c", c);
- }
- break;
- case ST1:
- printf("\t_DOT\n");
- //ungetc(c, stdin);
- STATE = ST0;
- break;
- case ST2:
- c = getc(stdin);
- if(!islower(c))
- {
- STATE = ST3;
- }
- if(islower(c) || isupper(c))
- {
- printf("%c", c);
- }
- break;
- case ST3:
- printf("\t_CAPITAL_WORD (%d,%d)\n ", row, col);
- ungetc(c, stdin);
- STATE = ST0;
- break;
- case ST4:
- c = getc(stdin);
- if(!islower(c))
- {
- STATE = ST5;
- }
- if(islower(c) || isupper(c))
- {
- printf("%c", c);
- }
- break;
- case ST5:
- printf("\t_WORD\n");
- ungetc(c, stdin);
- STATE = ST0;
- break;
- default:
- STATE = ERROR;
- printf("GRESKA!");
- }
- }
- return 0;
- }
- int main()
- {
- statemachine();
- //printf("Znak je: %c\n", c);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement