blob: 88fd55103a8789c5f37604e442a4a5006d741b10 (
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.h"
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;
}
 |