本文整理汇总了C#中Grammar.Produce方法的典型用法代码示例。如果您正苦于以下问题:C# Grammar.Produce方法的具体用法?C# Grammar.Produce怎么用?C# Grammar.Produce使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Grammar
的用法示例。
在下文中一共展示了Grammar.Produce方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: TestProduce
public void TestProduce(string startSymbol, string expectedSequence)
{
SymbolsSet<string> s = new SymbolsSet<string>(new[]
{
new Symbol<string>("x", "x"),
new Symbol<string>("y", "y"),
new Symbol<string>("sin", "sin"),
new Symbol<string>("atan", "atan"),
new Symbol<string>("sum", "sum"),
new Symbol<string>("mul", "mul"),
new Symbol<string>("A0"),
new Symbol<string>("A1"),
new Symbol<string>("A2"),
new Symbol<string>("Inf")
});
Rule<string>[] rules =
{
// A0 -> x|y
new OrRule<string>(s["A0"], new [] { s["x"], s["y"] }),
// A1 -> (sin A1)|(atan A1)|(sin A2)|(atan A2)
new OrRule<string>(s["A1"],
new []
{
new Rule<string>(new []{ s["sin"], s["A1"] }),
new Rule<string>(new []{ s["atan"], s["A1"] }),
new Rule<string>(new []{ s["sin"], s["A2"] }),
new Rule<string>(new []{ s["atan"], s["A2"] })
}),
// A2 -> sum A0 A0
new Rule<string>(s["A2"],
new []
{
s["sum"], s["A0"], s["A0"]
}),
// Inf -> sum Inf
new Rule<string>(s["Inf"],
new []
{
s["sum"], s["Inf"]
})
};
Grammar<string> grammar = new Grammar<string>(rules);
IEnumerable<string> sequence = grammar.Produce(startSymbol).Take(10);
Assert.AreEqual(expectedSequence, string.Join(" ", sequence.ToArray()));
}