2

そこで、単純な 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# を解析する際に、このような問題を経験した人はいますか? 申し訳ありませんが、これ以上の情報を提供することはできません。例外はありません

4

1 に答える 1

1

あなたのコードを試してみたところ、解析は実際に失敗しました。そして、エラー ( 内) は、引用符の間の文字が でparseTree.ParserMessagesあるエラー メッセージの最初の行の終わりにありました。Invalid character: ''.\r

うーん、\r空白とは見なされないようなので、文法を修正する必要があります。文法には、SkipWhitespace()に空白文字のリストを含むメソッド がありswitchます。そこに追加するだけcase '\r':で、解析は成功するはずです。

于 2012-03-10T12:24:12.953 に答える