mirror of
https://github.com/jorenchik/mdemory.git
synced 2026-03-22 00:26:21 +00:00
stylistic parsing fixes
This commit is contained in:
@@ -546,7 +546,6 @@ Mdem* makeMdem() {
|
|||||||
|
|
||||||
// Aizmuguras saturs.
|
// Aizmuguras saturs.
|
||||||
for (size_t i = 0; i < 20; ++i) {
|
for (size_t i = 0; i < 20; ++i) {
|
||||||
// @Improve: back label pooling
|
|
||||||
QLabel *elBackText = new QLabel();
|
QLabel *elBackText = new QLabel();
|
||||||
mdem->hBack.addWidget(elBackText);
|
mdem->hBack.addWidget(elBackText);
|
||||||
mdem->backLabels.push_back(elBackText);
|
mdem->backLabels.push_back(elBackText);
|
||||||
|
|||||||
@@ -75,7 +75,7 @@ void initTransitions() {
|
|||||||
* Pārbauda, vai tekstvienību saraksts atbilst valodas
|
* Pārbauda, vai tekstvienību saraksts atbilst valodas
|
||||||
* definētām pieļaujamām pārejām.
|
* definētām pieļaujamām pārejām.
|
||||||
* */
|
* */
|
||||||
Result<NoneType> ValidateGrammar(const std::vector<Token>& tokens) {
|
Result<NoneType> validateGrammar(const std::vector<Token>& tokens) {
|
||||||
if (!transitions) {
|
if (!transitions) {
|
||||||
initTransitions();
|
initTransitions();
|
||||||
}
|
}
|
||||||
@@ -125,6 +125,9 @@ Result<ParseInfo> parseQuestions(const std::vector<Token>& tokens) {
|
|||||||
// kļūdas informāciju.
|
// kļūdas informāciju.
|
||||||
auto makeResult = [&questions, &time](std::string error, Token token)
|
auto makeResult = [&questions, &time](std::string error, Token token)
|
||||||
-> Result<ParseInfo> {
|
-> Result<ParseInfo> {
|
||||||
|
if (debug) {
|
||||||
|
std::cout << "SECTION END: PARSER:\n";
|
||||||
|
}
|
||||||
return {
|
return {
|
||||||
{ questions, time },
|
{ questions, time },
|
||||||
error,
|
error,
|
||||||
@@ -137,7 +140,7 @@ Result<ParseInfo> parseQuestions(const std::vector<Token>& tokens) {
|
|||||||
if (tokens.size() == 0) {
|
if (tokens.size() == 0) {
|
||||||
return makeResult("", Token());
|
return makeResult("", Token());
|
||||||
}
|
}
|
||||||
auto result = ValidateGrammar(tokens);
|
auto result = validateGrammar(tokens);
|
||||||
if (result.error.length() > 0) {
|
if (result.error.length() > 0) {
|
||||||
return makeResult(
|
return makeResult(
|
||||||
result.error,
|
result.error,
|
||||||
@@ -145,8 +148,6 @@ Result<ParseInfo> parseQuestions(const std::vector<Token>& tokens) {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
size_t i = 0;
|
|
||||||
|
|
||||||
if (debug) {
|
if (debug) {
|
||||||
std::cout << "SECTION: PARSER:\n";
|
std::cout << "SECTION: PARSER:\n";
|
||||||
}
|
}
|
||||||
@@ -157,6 +158,7 @@ Result<ParseInfo> parseQuestions(const std::vector<Token>& tokens) {
|
|||||||
return i < tokens.size() && tokens[i].tokenType != TokenType::EndOfFile;
|
return i < tokens.size() && tokens[i].tokenType != TokenType::EndOfFile;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
size_t i = 0;
|
||||||
// Sākuma datumu un laiku mēģina nolasīt, ja tāds ir norādīts.
|
// Sākuma datumu un laiku mēģina nolasīt, ja tāds ir norādīts.
|
||||||
if (isInBounds(i) && tokens[i].tokenType == TokenType::TextFragment) {
|
if (isInBounds(i) && tokens[i].tokenType == TokenType::TextFragment) {
|
||||||
|
|
||||||
@@ -191,7 +193,8 @@ Result<ParseInfo> parseQuestions(const std::vector<Token>& tokens) {
|
|||||||
|
|
||||||
// Pamata parsēšana.
|
// Pamata parsēšana.
|
||||||
while (i < tokens.size()) {
|
while (i < tokens.size()) {
|
||||||
if (tokens[i].tokenType == TokenType::ElementDashStart) {
|
switch (tokens[i].tokenType) {
|
||||||
|
case TokenType::ElementDashStart: {
|
||||||
std::string questionText;
|
std::string questionText;
|
||||||
std::vector<QuestionElement> questionElements;
|
std::vector<QuestionElement> questionElements;
|
||||||
double cooldown;
|
double cooldown;
|
||||||
@@ -379,9 +382,9 @@ Result<ParseInfo> parseQuestions(const std::vector<Token>& tokens) {
|
|||||||
i += offset;
|
i += offset;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Izveido jautājuma objektu.
|
|
||||||
// Fix: else block - jautājums bez elementiem.
|
|
||||||
if (questionElements.size() > 0) {
|
if (questionElements.size() > 0) {
|
||||||
|
|
||||||
|
// Izveido jautājuma objektu.
|
||||||
if (isGroupQuestion) {
|
if (isGroupQuestion) {
|
||||||
auto *question = new GroupQuestion();
|
auto *question = new GroupQuestion();
|
||||||
question->cooldown = cooldown;
|
question->cooldown = cooldown;
|
||||||
@@ -457,22 +460,22 @@ Result<ParseInfo> parseQuestions(const std::vector<Token>& tokens) {
|
|||||||
questionStartToken
|
questionStartToken
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
} else if (tokens[i].tokenType == TokenType::EndOfFile) {
|
} break;
|
||||||
if (debug) {
|
case TokenType::EndOfFile: {
|
||||||
std::cout << "Fails beidzās: EndOfFile\n";
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
} else {
|
|
||||||
return makeResult(
|
return makeResult(
|
||||||
"Negaidīta tekstvienība",
|
"",
|
||||||
tokens[i]
|
Token()
|
||||||
);
|
);
|
||||||
|
} break;
|
||||||
|
default: {
|
||||||
|
return makeResult(
|
||||||
|
"",
|
||||||
|
Token()
|
||||||
|
);
|
||||||
|
} break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (debug) {
|
|
||||||
std::cout << "SECTION END: PARSER:\n";
|
|
||||||
}
|
|
||||||
return makeResult(
|
return makeResult(
|
||||||
"",
|
"",
|
||||||
Token()
|
Token()
|
||||||
|
|||||||
Reference in New Issue
Block a user