-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathparser.cpp
More file actions
45 lines (36 loc) · 863 Bytes
/
parser.cpp
File metadata and controls
45 lines (36 loc) · 863 Bytes
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
#include "parser.h"
/*Normal binary parser*/
treeNode *newTreeNode(Token newtok){
treeNode *newnode = new treeNode;
newnode->token = newtok;
newnode->left = newnode->right = NULL;
return newnode;
}
treeNode *insertToken(treeNode *leaf, Token newtok){
if (leaf == NULL)
return newTreeNode(newtok);
if (newtok.priority > leaf->token.priority)
leaf->right = insertToken(leaf->right, newtok);
else {
treeNode *newnode = new treeNode;
*newnode = *leaf;
leaf->token = newtok;
leaf->left = newnode;
leaf->right = NULL;
}
return leaf;
}
void postOrder(treeNode *leaf){
if (leaf != NULL){
postOrder(leaf->left);
postOrder(leaf->right);
leaf->token.print();
}
}
void deleteTree(treeNode *leaf){
if (leaf != NULL){
deleteTree(leaf->left);
deleteTree(leaf->right);
delete leaf;
}
}