static void Parse(Grammar grammar, EarleyParser parser, string input) { Console.WriteLine("Parsing: " + input); if (parser.Parse(grammar, input.Select(c => new RegularEarleyInput(c.ToString())).ToArray())) { Console.WriteLine("SUCCESS"); } else { Console.WriteLine("FAILURE"); } }
static void TestRegular() { var grammar = new Grammar(); AddRule(grammar, "P", "S", true); AddRule(grammar, "S", "S + M"); AddRule(grammar, "S", "M"); AddRule(grammar, "M", "M * T"); AddRule(grammar, "M", "T"); AddRule(grammar, "T", "1"); AddRule(grammar, "T", "2"); AddRule(grammar, "T", "3"); AddRule(grammar, "T", "4"); var parser = new EarleyParser(); Parse(grammar, parser, "2+3*4"); Parse(grammar, parser, "2+3*"); Parse(grammar, parser, "2+3"); Parse(grammar, parser, "2+"); Parse(grammar, parser, "2"); }