Small cleanup for existing test
This commit is contained in:
parent
2e95d671bf
commit
aa1ff29307
|
@ -15,42 +15,50 @@ TEST(lr0, test0) {
|
||||||
|
|
||||||
|
|
||||||
pds::Grammar grammar;
|
pds::Grammar grammar;
|
||||||
grammar.start = "S'";
|
grammar.start = "S";
|
||||||
grammar.variables = {"S'","S","A","E"};
|
grammar.variables = {"S","A","E"};
|
||||||
grammar.terminals = {"$",";", "id", ":=", "+"};
|
grammar.terminals = {";", "id", ":=", "+"};
|
||||||
|
|
||||||
std::shared_ptr<pds::Rule> rule(new pds::Rule());
|
std::shared_ptr<pds::Rule> rule(new pds::Rule());
|
||||||
rule->head = "S'";
|
|
||||||
rule->tail = {"S","$"};
|
|
||||||
grammar.rules.push_back(rule);
|
|
||||||
|
|
||||||
rule->head = "S";
|
rule->head = "S";
|
||||||
rule->tail = {"S",";","A"};
|
rule->tail = {"S",";","A"};
|
||||||
grammar.rules.push_back(rule);
|
grammar.rules.push_back(std::make_shared<pds::Rule>(*rule));
|
||||||
|
|
||||||
rule->head = "S";
|
rule->head = "S";
|
||||||
rule->tail = {"A"};
|
rule->tail = {"A"};
|
||||||
grammar.rules.push_back(rule);
|
grammar.rules.push_back(std::make_shared<pds::Rule>(*rule));
|
||||||
|
|
||||||
rule->head = "A";
|
rule->head = "A";
|
||||||
rule->tail = {"E"};
|
rule->tail = {"E"};
|
||||||
grammar.rules.push_back(rule);
|
grammar.rules.push_back(std::make_shared<pds::Rule>(*rule));
|
||||||
|
|
||||||
rule->head = "A";
|
rule->head = "A";
|
||||||
rule->tail = {"id",":=","E"};
|
rule->tail = {"id",":=","E"};
|
||||||
grammar.rules.push_back(rule);
|
grammar.rules.push_back(std::make_shared<pds::Rule>(*rule));
|
||||||
|
|
||||||
rule->head = "E";
|
rule->head = "E";
|
||||||
rule->tail = {"E","+","id"};
|
rule->tail = {"E","+","id"};
|
||||||
grammar.rules.push_back(rule);
|
grammar.rules.push_back(std::make_shared<pds::Rule>(*rule));
|
||||||
|
|
||||||
rule->head = "E";
|
rule->head = "E";
|
||||||
rule->tail = {"id"};
|
rule->tail = {"id"};
|
||||||
grammar.rules.push_back(rule);
|
grammar.rules.push_back(std::make_shared<pds::Rule>(*rule));
|
||||||
|
|
||||||
|
|
||||||
pds::lr::Generator<pds::lr::SLR1Itemset> g(grammar);
|
{
|
||||||
auto tbl = g.generate(); // LRTable
|
pds::lr::Generator<pds::lr::LR0Itemset> g(grammar);
|
||||||
|
ASSERT_THROW(g.generate(), std::runtime_error);
|
||||||
|
try {
|
||||||
|
g.generate();
|
||||||
|
} catch (std::runtime_error& e) {
|
||||||
|
ASSERT_EQ(std::string("shift-reduce"), e.what());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
{
|
||||||
|
pds::lr::Generator<pds::lr::SLR1Itemset> g(grammar);
|
||||||
|
ASSERT_NO_THROW(g.generate());
|
||||||
|
}
|
||||||
|
// auto tbl = g.generate(); // LRTable
|
||||||
|
|
||||||
// EXPECT_THROW(throw "shift-reduce", std::exception);
|
// EXPECT_THROW(throw "shift-reduce", std::exception);
|
||||||
/*
|
/*
|
||||||
|
|
Loading…
Reference in New Issue