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变量。。。