Jam*_* Ko 1 .net c# parsing roslyn
我正在尝试制作一个 Xamarin.Android 应用程序,突出显示许多不同语言的语法。我计划使用 ANTLR 来处理它们中的大部分,但对于 C#,我想使用 Roslyn,因为这无疑比 ANTLR 更快,错误更少。
使用 Roslyn 实现语法高亮的最佳方法是什么?为了突出 Java 语法,我采用的方法是将文本解析为解析树,并使用访问者为与每个终端关联的文本着色。你可以在这里查看我的代码。这对 Roslyn 来说也是一个好主意,还是 Roslyn 提供用于语法高亮显示的 API?(例如,Visual Studio 中语法高亮背后的代码是否存在于dotnet/roslyn 存储库中?)我真的不想重新发明轮子,但如果必须的话,我会这样做。
编辑:我接受了塔马斯的回答,因为他的解决方案对我的用例来说是最实用的;我无法访问构建语义模型的完整解决方案,因此我将不得不进行一些自己的分析。但是,如果您的应用程序支持更广泛的 C# 集成并且可以构建语义模型,请查看 Jonathon Marolf 的回答中使用的 Roslyn 分类 API。
roslyn 示例中的ConsoleClassifier项目应该是一个很好的起点。