1 #include <stdio.h> 2 #include <stdlib.h> 3 #include "../Stack/stack.h" 4 5 const char closMiss[] = "Close paren missing at line"; 6 const char openMiss[] = "Open paren missing at line"; 7 8 int main() 9 { 10 STACK* stack; 11 char token; 12 char* dataPtr; 13 char fileID[25]; 14 FILE* fpIn; 15 int lineCount = 1; 16 17 stack = createStack(); 18 printf("Enter file ID for file to be parsed:"); 19 scanf("%s", fileID); 20 21 fpIn = fopen(fileID, "r"); 22 if(!fpIn){ 23 printf("Error opening %s\n", fileID); 24 exit(100); 25 } 26 while ((token = fgetc(fpIn)) != EOF){ 27 if(token == '\n') 28 lineCount++; 29 if(token == '('){ 30 dataPtr = (char*)malloc(sizeof(char)); 31 pushStack(stack, dataPtr); 32 } 33 else{ 34 if(token == ')'){ 35 if(emptyStack(stack)){ 36 printf("%s %d\n", openMiss, lineCount); 37 return 1; 38 } 39 else{ 40 dataPtr = (char*) popStack(stack); 41 free(dataPtr); 42 } 43 } 44 } 45 } 46 if(!emptyStack(stack)){ 47 printf("%s %d\n", closMiss, lineCount); 48 return 1; 49 } 50 destroyStack(stack); 51 52 printf("Parsing is OK: %d Line parsed.\n", lineCount); 53 54 return 0; 55 }
检查括号是否匹配
猜你喜欢
转载自www.cnblogs.com/zhangleshan/p/12377141.html
今日推荐
周排行