アイアン(バージョンIrony_2012_03_15)を使い始めましたが、ASTを生成しようとするとかなり早く立ち往生しました。できるだけ早く私はそれが文法エクスプローラまたはときに私はテストを解析するにはとNullReferenceExceptionをスローし、最後の行のコメントを外してアイロニーASTの生成はnullreference例外をスローします
[Language("myLang", "0.1", "Bla Bla")]
public class MyLang: Grammar {
public NModel()
: base(false) {
var number = TerminalFactory.CreateCSharpNumber("number");
var binExpr = new NonTerminal("binExpr", typeof(BinaryOperationNode));
var binOp = new NonTerminal("BinOp");
binExpr.Rule = number + binOp + number;
binOp.Rule = ToTerm("+");
RegisterOperators(1, "+");
//MarkTransient(binOp);
this.Root = binExpr;
this.LanguageFlags = Parsing.LanguageFlags.CreateAst; // if I uncomment this line it throws the error
}
}
:以下は例外をスローし、完全strpped言語です。このエラーは、AstBuilder.csの96行目にあります。
parseNode.AstNode = config.DefaultNodeCreator();
DefaultNodeCreatorは設定されていないデリゲートです。
私はMarkTransientなどで設定してみましたが、ダイスは使用しませんでした。
誰かが私を助けてくれますか?私は確かに何かが明らかに欠けている。 Web上のASTチュートリアルを探しましたが、どのように動作するのか説明できないようです。事前に
おかげで、
ゲルト - 01月
こんにちはジェイ、あなたの答えをありがとう。利用可能なサポートのために、実際にアイオワをパーサーとして使用することをやめました。残念、それは非常に良い見え、あまりにも悪いそれはそれが値するものにキャッチしていない。あなたはこれのネクロマンサーバッジを持っていますように! – gjvdkamp
@gjvdkampあなたは現在どのパーサーを使用していますか?私は同じ問題を抱えており、このプロジェクトのドキュメンテーションやWebチュートリアルのサポートにも満足していません。それは良いかもしれないが、それは完全にそれを伝えることに失敗し、役に立たない。 – ygoe
実際にはうまくいった最後の文法は.Net上のANTLRであり、ANTLRWorksの多くの理由もあります。私は何年も前からこの話題から出てきたので、その間に多くのことが起きたかもしれません。両方の新しいバージョンはかなり有望です... F#では、fParsecまたはActive Patternsを見たいかもしれません。 – gjvdkamp