Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * file: syntax.c
- * date: July, 2012
- * purpose:
- * author: Nick K.
- */
- #include "modules.h"
- int syntax(struct lex_type lexChain[], int lexSize)
- {
- int STATE = 0, i;
- for(i = 0; i <= lexSize; i++) {
- switch(STATE) {
- case 0: ++STATE;
- case 1: if(strcmp(lexChain[STATE-1].lexem,"while") == 0){
- ++STATE;
- continue;
- }
- return 0;
- case 2: if(strcmp(lexChain[STATE-1].lexem_class,"SPACE") == 0){
- ++STATE;
- continue;
- }
- return 0;
- case 3: if((strcmp(lexChain[STATE-1].lexem_class,"IDENTIFIER") == 0) ||
- (strcmp(lexChain[STATE-1].lexem_class,"LOGCONST") == 0)){
- ++STATE;
- continue;
- }
- return 0;
- case 4: if(strcmp(lexChain[STATE-1].lexem_class,"SPACE") == 0){
- ++STATE;
- continue;
- }
- return 0;
- case 5: if(strcmp(lexChain[STATE-1].lexem,"do") == 0){
- ++STATE;
- continue;
- }
- return 0;
- case 6: if(strcmp(lexChain[STATE-1].lexem_class,"SPACE") == 0){
- ++STATE;
- continue;
- }
- return 0;
- case 7: if(strcmp(lexChain[STATE-1].lexem_class,"IDENTIFIER") == 0){
- ++STATE;
- continue;
- }
- return 0;
- case 8: if(strcmp(lexChain[STATE-1].lexem_class,"ASSIGNS") == 0){
- ++STATE;
- continue;
- }
- return 0;
- case 9: if(strcmp(lexChain[STATE-1].lexem_class,"IDENTIFIER") == 0){
- ++STATE;
- continue;
- }
- return 0;
- case 10: if((strcmp(lexChain[STATE-1].lexem_class,"INDEX") == 0)||
- (strcmp(lexChain[STATE-1].lexem_class,"SPACE") == 0)){
- ++STATE;
- continue;
- }
- if(strcmp(lexChain[STATE-1].lexem_class,"SEMICOLON") == 0)
- return 1;
- return 0;
- case 11: if(strcmp(lexChain[STATE-1].lexem_class,"SEMICOLON") == 0){
- return 1;
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment