1

私は理解できない皮肉でいくつかのトリッキーな問題を抱えています...

アプリケーションの実行時に行う最初の解析は成功します。

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;

次に、1 つのヒントに従って、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;");
            }
        }
    }
}

私のコードのどこが間違っているかわかるといいのですが...私はこのことに必死になっています...

4

1 に答える 1

2

parser.Parse の 2 番目の引数としてファイル名を指定する必要があります。

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;
}
于 2012-07-27T08:56:09.117 に答える