Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#反讽语法分析器-Won';尽管一切看起来都是正确的,但我们仍然无法解析文件_C#_Parsing_Irony - Fatal编程技术网

C#反讽语法分析器-Won';尽管一切看起来都是正确的,但我们仍然无法解析文件

C#反讽语法分析器-Won';尽管一切看起来都是正确的,但我们仍然无法解析文件,c#,parsing,irony,C#,Parsing,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 =

我有一些棘手的讽刺问题,我不明白

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

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#grammar v3.5解析多个文件(LINQ查询对我来说并不重要,所以这似乎足够了)。同样的方法:

Parser parser = new Parser(language);
ParseTree parseTree = parser.Parse(file);
ParseRoot = parseTree.Root;
但是现在parseroot是并保持为“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;");
            }
        }
    }
}

我希望你能看到我的代码有什么问题。。。我对这件事感到绝望…

您必须提供一个文件名作为解析器的第二个参数。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;
}

了解解析c#时要达到的目的会很有启发性,你能告诉我们吗?“然后我按照一个提示将LanguageData变量移动到全局上下文中。”请对此进行更多解释。目的是编写项目的代码结构(名称空间、类、方法、属性、成员)“移动到全局上下文”是指每次使用解析器时,我不会初始化语法和languagedata变量。。。