-
Notifications
You must be signed in to change notification settings - Fork 8
/
Copy pathParseTree.h
90 lines (73 loc) · 2.46 KB
/
ParseTree.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
////////////////////////////////////////////////////////////////////////
//Title: ParseTree.h
//Author: Kristina Klinkner
//Date: March 20, 2002
//Description: Header file for ParseTree.cpp
//
/////////////////////////////////////////////////////////////////////////////
#ifndef PARSE_H
#define PARSE_H
#include "Common.h"
#include "G_Array.h"
#include "Hash2.h"
#define MAX_LINE_SIZE 500000
class TreeNode
{
protected:
TreeNode* m_child;
TreeNode* m_sibling;
char m_symbol;
int m_count;
public:
TreeNode(){m_child = NULL; m_sibling = NULL; m_symbol = '\0'; m_count = 0;}
~TreeNode(){}
friend class ParseTree;
};
class ParseTree
{
public:
void ReadInput(char alphaFile[], char dataFile[]);
void ReadProcessMultiLine(char alphaFile[], char dataFile[]);
void Insert(char string[]){Insert(string,m_root);}
ParseTree(int length){m_root = NULL; m_alpha = NULL;
m_alphaSize = 0;m_data = NULL; m_dataSize = 0;
m_maxLength = length; m_alphaHash = new HashTable2;
m_numLines = 0; m_adjustedDataSize = 0;}
~ParseTree(){RemoveTree(m_root);if(m_alphaHash) delete m_alphaHash;}
void FindStrings(int length, G_Array* array);
int FindRoots(char charArray[],int intArray[])
{return FindRoots(m_root, charArray, intArray);}
void FillTree();
int getAlphaSize(){return m_alphaSize;}
char* getAlpha(){return m_alpha;}
int getMaxLength(){return m_maxLength;}
char* getData(){return m_data;}
int getDataSize(){return m_dataSize;}
int getNumLines(){return m_numLines;}
HashTable2* MakeAlphaHash();
int getAdjustedDataSize(){return m_adjustedDataSize;}
void MakeSynchAdjustements(char* synchString, int index);
void DecStringCount(char* stringToDec);
protected:
void RemoveTree(TreeNode*& root);
void Insert(char string[], TreeNode*& root);
void FindStrings(TreeNode* root, int length, char* parentString,
G_Array* tempArray);
int FindRoots(TreeNode* root, char charArray[], int intArray[]);
void DecStringCount(char string[], TreeNode*& root);
void GetDataInput(char dataFile[]);
void GetAlphaInput(char alphaFile[]);
void CheckAlphaInput();
void CheckDataInput();
private:
TreeNode* m_root;
char* m_alpha;
int m_alphaSize;
char* m_data;
int m_dataSize;
int m_maxLength;
HashTable2* m_alphaHash;
int m_numLines;
int m_adjustedDataSize;
};
#endif