-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathutils.h
More file actions
47 lines (38 loc) · 1.13 KB
/
utils.h
File metadata and controls
47 lines (38 loc) · 1.13 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#ifndef UTILS_H
#define UTILS_H
/* Shared data structures, constants, globals, and utility functions */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <stdbool.h>
#define MAX_RULES 100
#define MAX_PRODUCTIONS 10
#define MAX_LENGTH 50
#define MAX_SYMBOLS 20
typedef struct {
char nonTerminal;
char productions[MAX_PRODUCTIONS][MAX_LENGTH];
int count;
} Rule;
// Declare the global variables as extern
extern Rule grammar[MAX_RULES];
extern int numRules;
extern char firstSet[MAX_RULES][MAX_SYMBOLS];
extern int firstCount[MAX_RULES];
extern char followSet[MAX_RULES][MAX_SYMBOLS];
extern int followCount[MAX_RULES];
extern int followComputed[MAX_RULES];
extern char parsingTable[MAX_RULES][MAX_SYMBOLS][MAX_LENGTH];
// Function prototypes
void readGrammarFromFile();
void displayGrammar();
void addSpaces(char *str);
void addSpacesToGrammar();
void removeSpacesFromString(char *input, char *output);
void removeSpaceFromGrammar();
int isTerminal(char symbol);
int getIndex(char symbol);
void addToSet(char *set, char symbol, int *count);
int containsEpsilon(char *set, int count);
#endif // UTILS_H