diff options
author | Yuqian Yang <crupest@crupest.life> | 2025-10-17 08:44:07 +0800 |
---|---|---|
committer | Yuqian Yang <crupest@crupest.life> | 2025-10-17 08:44:07 +0800 |
commit | aa05a34dd5e4a56563cbfeab273785ce0e363089 (patch) | |
tree | bc23e1807fcd647d06a971c64cd5d4460a338412 /src | |
parent | 3c8d5c8f732239a8b50418be27464e30b9dddeae (diff) | |
download | cru-aa05a34dd5e4a56563cbfeab273785ce0e363089.tar.gz cru-aa05a34dd5e4a56563cbfeab273785ce0e363089.tar.bz2 cru-aa05a34dd5e4a56563cbfeab273785ce0e363089.zip |
Parse remove String.
Diffstat (limited to 'src')
-rw-r--r-- | src/parse/Grammar.cpp | 52 | ||||
-rw-r--r-- | src/parse/Nonterminal.cpp | 2 | ||||
-rw-r--r-- | src/parse/Production.cpp | 2 | ||||
-rw-r--r-- | src/parse/Symbol.cpp | 2 | ||||
-rw-r--r-- | src/parse/Terminal.cpp | 2 | ||||
-rw-r--r-- | src/parse/TokenType.cpp | 2 |
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() {} |