-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathqueries.cpp
executable file
·156 lines (144 loc) · 2.59 KB
/
queries.cpp
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
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
/*
* queries.cpp
* Benjamin Ferid Issa
* February 8th 2017
*
* Based on files provided by Dr. Frank Jones, Computer Science Department, Brigham Young University
*/
#include "queries.h"
bool queries::input(char Character)
{
bool stillValid = false;
if(Character == 'Q')
{
stillValid = true;
m_token->addCharacter(Character);
nextState(new querieQ(m_contextManager, m_token));
}
else
{
reject();
}
/*THIS MUST HAPPEN LAST!!!*/
delete this;
return stillValid;
}
bool querieQ::input(char Character)
{
bool stillValid = false;
if(Character == 'u')
{
stillValid = true;
m_token->addCharacter(Character);
nextState(new querieU(m_contextManager, m_token));
}
else
{
reject();
}
/*THIS MUST HAPPEN LAST!!!*/
delete this;
return stillValid;
}
bool querieU::input(char Character)
{
bool stillValid = false;
if(Character == 'e')
{
stillValid = true;
m_token->addCharacter(Character);
nextState(new querieE1(m_contextManager, m_token));
}
else
{
reject();
}
/*THIS MUST HAPPEN LAST!!!*/
delete this;
return stillValid;
}
bool querieE1::input(char Character)
{
bool stillValid = false;
if(Character == 'r')
{
stillValid = true;
m_token->addCharacter(Character);
nextState(new querieR(m_contextManager, m_token));
}
else
{
reject();
}
/*THIS MUST HAPPEN LAST!!!*/
delete this;
return stillValid;
}
bool querieR::input(char Character)
{
bool stillValid = false;
if(Character == 'i')
{
stillValid = true;
m_token->addCharacter(Character);
nextState(new querieI(m_contextManager, m_token));
}
else
{
reject();
}
/*THIS MUST HAPPEN LAST!!!*/
delete this;
return stillValid;
}
bool querieI::input(char Character)
{
bool stillValid = false;
if(Character == 'e')
{
stillValid = true;
m_token->addCharacter(Character);
nextState(new querieE2(m_contextManager, m_token));
}
else
{
reject();
}
/*THIS MUST HAPPEN LAST!!!*/
delete this;
return stillValid;
}
bool querieE2::input(char Character)
{
bool stillValid = false;
if(Character == 's')
{
stillValid = true;
m_token->addCharacter(Character);
nextState(new querieS(m_contextManager, m_token));
}
else
{
reject();
}
/*THIS MUST HAPPEN LAST!!!*/
delete this;
return stillValid;
}
bool querieS::input(char Character)
{
//anything that isn't an alphanumeric will do as a delimeter
if((Character >= 'a' && Character <= 'z') ||
(Character >= 'A' && Character <= 'Z') ||
(Character >= '0' && Character <= '9'))
{
reject();//this isn't the keyword queries, it may be an ID
}
else
{
m_token->setType(QUERIES);
}
/*THIS MUST HAPPEN LAST!!!*/
delete this;
return false;
}