public void BeforeEveryTest() { var grammar = new ContextFreeGrammar('S'); grammar.Produce("S", "t2"); grammar.Produce("S", "vA", "vT"); grammar.Produce("A", "t0"); grammar.Produce("T", "vS", "vB"); grammar.Produce("B", "t1"); _parser = new TopDownParser(grammar); }
public void Should_eliminate_all_epsilon_rules_when_converting_grammer_to_chomsky_normal_form() { var grammar = new ContextFreeGrammar("S"); grammar.Produce("S", "vA", "vB"); grammar.Produce("A", "t0"); grammar.Produce("B"); grammar.Produce("B", "t1"); var cnf = grammar.ToChomskyNormalForm(); var rules = cnf.GetRules("B"); Assert.That(rules, Has.None.Empty); }
public void Should_check_grammar_for_chomsky_normal_form() { var grammar = new ContextFreeGrammar("S"); grammar.Produce("S", "t1", "t2", "t3"); Assert.That(grammar.IsInChomskyNormalForm, Is.False); }
public void Should_not_allow_creation_of_topdown_parser_with_invalid_grammar() { Assert.That(() => { var grammar = new ContextFreeGrammar("S"); grammar.Produce("S", "A", "B"); new TopDownParser(grammar); }, Throws.ArgumentException); }
public void BeforeEveryTest() { _grammar = new ContextFreeGrammar("S"); _grammar.Produce("S"); _grammar.Produce("S", "t2"); _grammar.Produce("S", "vA", "vT"); _grammar.Produce("A", "t0"); _grammar.Produce("A", "t1"); _grammar.Produce("T", "vS", "vB"); _grammar.Produce("B", "t1"); }
public void Should_eliminate_all_unit_rules_when_converting_grammer_to_chomsky_normal_form() { var grammar = new ContextFreeGrammar("S"); grammar.Produce("S", "vA", "vB"); grammar.Produce("A", "vB"); grammar.Produce("B", "t1"); var cnf = grammar.ToChomskyNormalForm(); var rules = cnf.GetRules("A"); Debug.WriteLine(cnf); Assert.That(rules.Single().Single(), Is.Not.EqualTo(new Variable("B"))); }
public void Should_transform_all_rules_into_proper_form_when_converting_grammer_to_chomsky_normal_form() { var grammar = new ContextFreeGrammar("S"); grammar.Produce("S", "t1", "t2", "t3"); var cnf = grammar.ToChomskyNormalForm(); var rules = cnf.GetRules("S"); Assert.That(rules.Select(r => r.ToList()), Has.All.Count.LessThanOrEqualTo(2)); }
public void Should_not_allow_creation_of_recursive_unit_rules() { var grammar = new ContextFreeGrammar("S"); Assert.That(() => grammar.Produce("S", "vS"), Throws.Exception); }