-
Notifications
You must be signed in to change notification settings - Fork 0
/
parserDef.h
123 lines (112 loc) · 1.74 KB
/
parserDef.h
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
#ifndef PARSERDEF_H_INCLUDED
#define PARSERDEF_H_INCLUDED
#include "lexerDef.h"
#define MAXNONTERM 51
#define MAXTERM 55 //added dollar also
#define MAXRULES 90
#define MAX 50
typedef enum
{
program=0,
mainFunction,
otherFunctions,
function,
input_par,
output_par,
parameter_list,
dataType,
primitiveDatatype,
constructedDatatype,
remaining_list,
stmts,
typeDefinitions,
typeDefinition,
fieldDefinitions,
fieldDefinition,
moreFields,
declarations,
declaration,
global_or_not,
otherStmts,
stmt,
assignmentStmt,
singleOrRecId,
singleOrRecIDElse,
funCallStmt,
outputParameters,
inputParameters,
iterativeStmt,
conditionalStmt,
elsePart,
ioStmt,
allVar,
arithmeticExpression,
expPrime,
term,
termPrime,
factor,
highPrecedenceOperators,
lowPrecedenceOperators,
all,
temp,
booleanExpression,
var,
logicalOp,
relationalOp,
returnStmt,
optionalReturn,
idList,
more_ids
}NT;
typedef enum
{
boolean=0,
integer,
real,
record,
notype
}dtype;
typedef enum
{
arithmetic=0,
relational,
logical,
noop
}op;
//typedef struct GrammarSymbol sym;
typedef struct GrammarSymbol
{
int type;
token terminal;
NT nonterminal;
}sym;
typedef struct link linknode;
typedef linknode *LINK;
struct link
{ char name[MAX];
sym s;
LINK next;
};
typedef LINK grammar[MAXRULES];
typedef LINK Set[MAXNONTERM+1];
typedef int Table[MAXNONTERM][MAXTERM];
typedef struct Node *parseTree;
typedef struct Node
{ sym s;
tokenInfo t;
parseTree parent;
parseTree child;
parseTree sibling;
}treeNode;
typedef struct astNode *abstractSyntaxTree;
struct astNode{
sym s;
tokenInfo t;
abstractSyntaxTree parent;
abstractSyntaxTree child;
abstractSyntaxTree sibling;
dtype exp;
op expOp;
};
typedef struct astNode astNode;
#endif