From fa3794469430b4ddfe0b0ca62850e9911c99b558 Mon Sep 17 00:00:00 2001 From: crupest Date: Tue, 14 Dec 2021 21:34:59 +0800 Subject: ... --- demos/parse/EliminateLeftRecursion.cpp | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 demos/parse/EliminateLeftRecursion.cpp (limited to 'demos/parse/EliminateLeftRecursion.cpp') diff --git a/demos/parse/EliminateLeftRecursion.cpp b/demos/parse/EliminateLeftRecursion.cpp new file mode 100644 index 00000000..e5b97cc0 --- /dev/null +++ b/demos/parse/EliminateLeftRecursion.cpp @@ -0,0 +1,21 @@ +#include + +#include "cru/parse/Grammar.hpp" + +int main() { + using namespace cru::parse; + Grammar grammar; + + auto S = grammar.CreateNonterminal(u"S"); + auto a = grammar.CreateTerminal(u"a"); + + grammar.CreateProduction(u"S := S a", S, {S, a}); + grammar.CreateProduction(u"S := a", S, {a}); + grammar.SetStartSymbol(S); + + grammar.EliminateLeftRecursions(); + + std::cout << grammar.ProductionsToString().ToUtf8(); + + return 0; +} -- cgit v1.2.3