C#Irony Parser - 尽管一切看起来都是正确的,但不会解析文件

时间:2012-07-27 08:29:55

标签: c# parsing irony

我对Irony有一些棘手的问题,我不明白......

我在应用程序的运行时中进行的第一次解析成功。

string src = "" // this is the file to parse
Grammar g = new CSharpGrammar();
LanguageData language = new LanguageData(g);
Parser parser = new Parser(language);
ParseTree parseTree = parser.Parse(src);
ParseRoot = parseTree.Root;

然后我按照一个提示将LanguageData变量移动到全局上下文。还是一切都好。但现在我想在自定义函数中调用Irony解析器,使用Irony提供的c#语法v3.5解析多个文件(LINQ查询对我来说并不重要,所以这似乎就足够了)。同样的方法:

Parser parser = new Parser(language);
ParseTree parseTree = parser.Parse(file);
ParseRoot = parseTree.Root;

但现在解析器仍然是“null”。我完全不知道为什么。我刚刚检查过解析器错误,在那里我发现了一个我无法理解的错误。

"Syntax error, expected: statement, member declaration, namespace"

但是我的文件看起来像这样:

using System;
using Microsoft.SharePoint.WebControls;

namespace WebParts.Layouts.Ordering
{
    public partial class ConfirmDelete : LayoutsPageBase
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            lblMsg.Text = "Are you sure you want to delete the entry?";

            if (!IsPostBack)
            {
                BtnYes.Attributes.Add("onclick", "OnYes(); return false;");
                BtnNo.Attributes.Add("onclick", "OnNo(); return false;");
            }
        }
    }
}

我希望你能看到我的代码出了什么问题......我对这件事感到绝望......

1 个答案:

答案 0 :(得分:2)

你必须提供一个文件名作为parser.Parse的第二个参数:

static void Main(string[] args)
{
    Grammar g = new CSharpGrammar();
    LanguageData language = new LanguageData(g);
    Parser parser = new Parser(language);
    ParseTree parseTree = parser.Parse("", "class1.cs");

    var r = parseTree.Root;
}