blob: e5b97cc061d9ad4434496c8e5cc95ade05c4fa4b (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
#include <iostream>
#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;
}
|