Skip to content

Commit d3d5d41

Browse files
authored
Fix error in AND lexing bug (#227)
* Fix AND bug * Add simple BOOLEAN test * Remove extra boolean
1 parent 3b949bb commit d3d5d41

File tree

4 files changed

+12
-4
lines changed

4 files changed

+12
-4
lines changed

Team20/Code20/IntegrationTesting/TestPqlEndToEnd.cpp

+8
Original file line numberDiff line numberDiff line change
@@ -17,5 +17,13 @@ TEST_CLASS(TestPqlEndToEnd) {
1717
std::list<std::string> expected = {"7 10", "11 10", "25 10"};
1818
Assert::IsTrue(actual == expected);
1919
}
20+
TEST_METHOD(TestPqlEndToEnd_BooleanSelectWithFollows) {
21+
const auto query =
22+
"assign a; read r; call c; Select BOOLEAN such that Follows(r, a)";
23+
std::list<std::string> actual;
24+
Pql::evaluate(Pql::parse(Pql::lex(query)), pkb.getQueryInterface(), actual);
25+
std::list<std::string> expected = {"TRUE"};
26+
Assert::IsTrue(actual == expected);
27+
}
2028
};
2129
} // namespace IntegrationTesting

Team20/Code20/source/PQL.cpp

+3-2
Original file line numberDiff line numberDiff line change
@@ -31,15 +31,16 @@ std::unordered_map<std::string, TokenType> stringTokenMap = {
3131
{")", TokenType::CLOSED_PARENTHESIS},
3232
{"<", TokenType::OPEN_ANGLED_BRACKET},
3333
{">", TokenType::CLOSED_ANGLED_BRACKET},
34-
{"BOOLEAN", TokenType::BOOLEAN},
3534
{".", TokenType::DOT},
3635
{"procName", TokenType::PROCNAME},
3736
{"varName", TokenType::VARNAME},
3837
{"value", TokenType::VALUE},
3938
{"stmt#", TokenType::STATEMENT_NUM},
4039
{",", TokenType::COMMA},
4140
{"with", TokenType::WITH},
42-
{"=", TokenType::EQUALS}};
41+
{"and", TokenType::AND},
42+
{"=", TokenType::EQUALS},
43+
{"BOOLEAN", TokenType::BOOLEAN}};
4344

4445
ParsedQuery Pql::parse(std::vector<PqlToken> query) {
4546
auto parser = PqlParser(query);

Team20/Code20/source/PQLLexer.cpp

-2
Original file line numberDiff line numberDiff line change
@@ -75,8 +75,6 @@ std::vector<std::string> PqlLexer::split(const std::string &s, char delim) {
7575
return result;
7676
}
7777

78-
// TODO: Consider long strings when converting to int
79-
8078
std::vector<std::string> PqlLexer::delimit(std::string s) {
8179
std::vector<char> result;
8280
bool isWithinStringLiterals = false;

Team20/Code20/source/PQLParser.cpp

+1
Original file line numberDiff line numberDiff line change
@@ -351,6 +351,7 @@ void PqlParser::parsePattern() {
351351
void PqlParser::parseResultClause() {
352352
switch (it->type) {
353353
case TokenType::BOOLEAN:
354+
getNextExpectedToken(TokenType::BOOLEAN);
354355
pq.results.resultType = PqlResultType::Boolean;
355356
break;
356357

0 commit comments

Comments
 (0)