aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/parse/Grammar.cpp52
-rw-r--r--src/parse/Nonterminal.cpp2
-rw-r--r--src/parse/Production.cpp2
-rw-r--r--src/parse/Symbol.cpp2
-rw-r--r--src/parse/Terminal.cpp2
-rw-r--r--src/parse/TokenType.cpp2
6 files changed, 30 insertions, 32 deletions
diff --git a/src/parse/Grammar.cpp b/src/parse/Grammar.cpp
index 615901e0..9d7ce5a1 100644
--- a/src/parse/Grammar.cpp
+++ b/src/parse/Grammar.cpp
@@ -1,5 +1,4 @@
#include "cru/parse/Grammar.h"
-#include "cru/base/String.h"
#include "cru/parse/Symbol.h"
#include <algorithm>
@@ -25,21 +24,21 @@ void Grammar::SetStartSymbol(Nonterminal* start_symbol) {
start_symbol_ = start_symbol;
}
-Terminal* Grammar::CreateTerminal(String name) {
+Terminal* Grammar::CreateTerminal(std::string name) {
auto terminal = new Terminal(this, std::move(name));
terminals_.push_back(terminal);
symbols_.push_back(terminal);
return terminal;
}
-Nonterminal* Grammar::CreateNonterminal(String name) {
+Nonterminal* Grammar::CreateNonterminal(std::string name) {
auto nonterminal = new Nonterminal(this, std::move(name));
nonterminals_.push_back(nonterminal);
symbols_.push_back(nonterminal);
return nonterminal;
}
-Production* Grammar::CreateProduction(String name, Nonterminal* left,
+Production* Grammar::CreateProduction(std::string name, Nonterminal* left,
std::vector<Symbol*> right) {
Expects(left->GetGrammar() == this);
Expects(std::all_of(right.cbegin(), right.cend(), [this](Symbol* symbol) {
@@ -154,9 +153,8 @@ void Grammar::EliminateLeftRecursions() {
new_right.insert(new_right.cbegin(), jp->GetRight().cbegin(),
jp->GetRight().cend());
CreateProduction(
- String::FromUtf8(std::format(
- "Merge of {} and {} (Eliminate Left Recursion)",
- production->GetName().ToUtf8(), jp->GetName().ToUtf8())),
+ std::format("Merge of {} and {} (Eliminate Left Recursion)",
+ production->GetName(), jp->GetName()),
ni, std::move(new_right));
}
}
@@ -176,29 +174,29 @@ void Grammar::EliminateLeftRecursions() {
}
}
- auto ni_h = CreateNonterminal(ni->GetName() +
- u" (Eliminate Left Recursion Helper)");
+ auto ni_h =
+ CreateNonterminal(ni->GetName() + " (Eliminate Left Recursion Helper)");
for (auto p : i_nr_ps) {
auto right = p->GetRight();
right.push_back(ni_h);
- CreateProduction(p->GetName() + u" (Eliminate Left Recursion Of " +
- ni->GetName() + u")",
- ni, std::move(right));
+ CreateProduction(
+ p->GetName() + " (Eliminate Left Recursion Of " + ni->GetName() + ")",
+ ni, std::move(right));
}
for (auto p : i_r_ps) {
auto right = p->GetRight();
right.erase(right.cbegin());
right.push_back(ni_h);
- CreateProduction(p->GetName() + u" (Eliminate Left Recursion Of " +
- ni->GetName() + u")",
- ni_h, std::move(right));
+ CreateProduction(
+ p->GetName() + " (Eliminate Left Recursion Of " + ni->GetName() + ")",
+ ni_h, std::move(right));
}
- CreateProduction(u"Empty Production (Eliminate Left Recursion Of " +
- ni->GetName() + u")",
- ni_h, std::vector<Symbol*>{});
+ CreateProduction(
+ "Empty Production (Eliminate Left Recursion Of " + ni->GetName() + ")",
+ ni_h, std::vector<Symbol*>{});
for (auto p : i_r_ps) {
RemoveProduction(p);
@@ -269,35 +267,35 @@ void Grammar::LeftFactor() {
productions.end());
auto helper_nonterminal =
- CreateNonterminal(nonterminal->GetName() + u" (Left Factor Helper)");
+ CreateNonterminal(nonterminal->GetName() + " (Left Factor Helper)");
for (auto p : productions_with_longest_common_prefix) {
auto right = p->GetRight();
right.erase(right.cbegin(),
right.cbegin() + longest_common_prefix.size());
- CreateProduction(p->GetName() + u" (Left Factor Helper)",
+ CreateProduction(p->GetName() + " (Left Factor Helper)",
helper_nonterminal, std::move(right));
}
auto new_right = longest_common_prefix;
new_right.push_back(helper_nonterminal);
- CreateProduction(nonterminal->GetName() + u" (Left Factor)", nonterminal,
+ CreateProduction(nonterminal->GetName() + " (Left Factor)", nonterminal,
new_right);
}
}
}
-String Grammar::ProductionsToString() const {
- String result;
+std::string Grammar::ProductionsToString() const {
+ std::string result;
for (const auto& production : productions_) {
- result += production->GetName() + u" : ";
- result += production->GetLeft()->GetName() + u" := ";
+ result += production->GetName() + " : ";
+ result += production->GetLeft()->GetName() + " := ";
for (auto s : production->GetRight()) {
- result += s->GetName() + u" ";
+ result += s->GetName() + " ";
}
- result += u"\n";
+ result += "\n";
}
return result;
diff --git a/src/parse/Nonterminal.cpp b/src/parse/Nonterminal.cpp
index 4fb33695..7c1df8f8 100644
--- a/src/parse/Nonterminal.cpp
+++ b/src/parse/Nonterminal.cpp
@@ -1,7 +1,7 @@
#include "cru/parse/Nonterminal.h"
namespace cru::parse {
-Nonterminal::Nonterminal(Grammar* grammar, String name)
+Nonterminal::Nonterminal(Grammar* grammar, std::string name)
: Symbol(grammar, std::move(name)) {}
Nonterminal::~Nonterminal() {}
diff --git a/src/parse/Production.cpp b/src/parse/Production.cpp
index 1552874f..36115802 100644
--- a/src/parse/Production.cpp
+++ b/src/parse/Production.cpp
@@ -1,7 +1,7 @@
#include "cru/parse/Production.h"
namespace cru::parse {
-Production::Production(Grammar* grammar, String name, Nonterminal* left,
+Production::Production(Grammar* grammar, std::string name, Nonterminal* left,
std::vector<Symbol*> right)
: grammar_(grammar),
name_(std::move(name)),
diff --git a/src/parse/Symbol.cpp b/src/parse/Symbol.cpp
index fe4cc47c..9cb1380f 100644
--- a/src/parse/Symbol.cpp
+++ b/src/parse/Symbol.cpp
@@ -1,7 +1,7 @@
#include "cru/parse/Symbol.h"
namespace cru::parse {
-Symbol::Symbol(Grammar* grammar, String name)
+Symbol::Symbol(Grammar* grammar, std::string name)
: grammar_(grammar), name_(std::move(name)) {}
Symbol::~Symbol() {}
diff --git a/src/parse/Terminal.cpp b/src/parse/Terminal.cpp
index 421836f7..88c06017 100644
--- a/src/parse/Terminal.cpp
+++ b/src/parse/Terminal.cpp
@@ -1,7 +1,7 @@
#include "cru/parse/Terminal.h"
namespace cru::parse {
-Terminal::Terminal(Grammar* grammar, String name) : Symbol(grammar, name) {}
+Terminal::Terminal(Grammar* grammar, std::string name) : Symbol(grammar, name) {}
Terminal::~Terminal() {}
} // namespace cru::parse
diff --git a/src/parse/TokenType.cpp b/src/parse/TokenType.cpp
index 386b1401..39af4187 100644
--- a/src/parse/TokenType.cpp
+++ b/src/parse/TokenType.cpp
@@ -1,7 +1,7 @@
#include "cru/parse/TokenType.h"
namespace cru::parse {
-TokenType::TokenType(String name) : name_(std::move(name)) {}
+TokenType::TokenType(std::string name) : name_(std::move(name)) {}
TokenType::~TokenType() {}