gpt4 book ai didi

c# - Irony 不会使用 Irony 提供的 C# 语法解析 C#

转载 作者:太空宇宙 更新时间:2023-11-03 14:04:50 24 4
gpt4 key购买 nike

因此,我正在尝试解析一些简单的 C# 代码以学习如何使用 Irony。我正在使用 Irony 示例中包含的 C# 语法,并使用那里的示例程序集加载代码。关于 Irony 的文档似乎很少。这是我要解析的完整源代码:

using System;

namespace N
{
class Test
{
public int A(int x)
{
return x+1;
}
}
class Test2
{
public string hello = "world";
private int _T = 0;
private Test _actor = new Test();
public void B()
{
Console.WriteLine(hello+": "+_actor.A(_T++));
}
}
}

解析代码:

 string src = File.ReadAllText("testcs.cs");
LanguageData language = new LanguageData(g);
Parser parser = new Parser(language);
ParseTree parseTree = parser.Parse(src);
ParseTreeNode root = parseTree.Root;
Console.WriteLine((root==null?"Parse tree unsuccessful!":"Parse tree created!"));

...其中 g 是来自 Irony 的 C# 语法。以前有人用 Irony 的语法解析 C# 时遇到过这些问题吗?很抱歉,我无法提供更多信息。没有任何异常(exception)

最佳答案

当我尝试你的代码时,解析确实不成功。错误(在 parseTree.ParserMessages 中)出现在第一行的末尾,错误消息为 Invalid character: ''.,其中引号之间的字符是 \r

嗯,看来 \r 不被认为是空格,所以我们需要修改语法。在语法中,有一个方法 SkipWhitespace(),它包含一个 switch 中的空白字符列表。如果您只是在此处添加 case '\r':,解析应该会成功。

关于c# - Irony 不会使用 Irony 提供的 C# 语法解析 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9646213/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com