我正在尝试使用Sprache制作解析器, 我正在使用 F#。我见过的所有关于该库的示例都使用 Linq 查询语法。我尝试使用“查询”计算表达式将 linq 转换为 f#,但我迷路了。
这是我一直在使用的示例。
[TestClass]
public class tests
{
[TestMethod]
public void test()
{
var input = "\"this is text\"";
var content = Class1.Quoted.Parse(input);
Assert.AreEqual("this is text", content);
}
}
public class Class1
{
public static readonly Parser<string> Quoted =
(from open in Parse.Char('"')
from content in Parse.CharExcept('"').Many().Text()
from close in Parse.Char('"')
select content);
public static readonly Parser<string> Quoted2 =
Parse.Char('"').SelectMany(open =>
Parse.CharExcept('"').Many().Text(), ())
}
显而易见的方法是将 linq 转换为方法调用,但我不知道该怎么做。我尝试查看 ILSpy,但这让我有点困惑。
Linq 查询如何看起来像直接方法调用?