我正在尝试为类似QML的标记语言编写解析器,我想在标记中允许C#表达式.所以一个例子可能如下所示:
ClassName {
Property1: 10
Property2: Math.Sqrt(123)
Property3: string.Format("{0} {1}", "Hello", "World")
}
Run Code Online (Sandbox Code Playgroud)
(这也有点像ASP.NET的Razor引擎,但是afaics Razor不使用Roslyn?)
我该怎么做?我只想解析一个表达式,无论是文字,方法调用,lambda等.我试过使用CSharpSyntaxTree.ParseText但是需要一个完整的文件而我找不到任何与此用法相关的文档 -案件.
您需要调用CSharpSyntaxTree.ParseText()并传递一个允许顶级表达式的CSharpParseOptionswith SourceCodeKind.Interactive.