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 }