2011-08-03 4 views
1

私はParsekit for XCodeを使用していますが、この問題はほとんどのパーサージェネレータによく当てはまります。私はgammerとスクリプトを解析し、それは正常に動作します。しかし、私は次のステップで問題にぶち当たっています。 grmmerを考えてみましょう。Parsekitを使ってパーズツリーを構築する

@start = line +; line = tree;

tree = 'tree' fruits branches;

fruits = 'with' 'fruits' Number; branches = 'with' 'branches' Number;

そして合格するためのスクリプト:

木を枝12

と果物8と、私はその後、implemenet一致させる方法、果物や枝が一度一致する場合は、これが期待されています。

ただし、ツリーは2回マッチングされますが、なぜですか?これは、私が望む解析木を構築するのを止める。

ありがとうございました!

答えて

1

ParseKitの開発者はこちらです。私はあなたが実際にこのように同じ質問をするかもしれないと思う:あなたは、私はその質問に作られたコメントを読んでいる場合

parsekit given unexpected calls to selectors

、私はあなたが答えを見つけるだろうと思います。そうでない場合は教えてください。

+0

こんにちはTodd、 ありがとうございました。私が作業しているものをアセンブリの目標に格納しますか? 私はそれを見て、私は 'ツリー'に合ってパスツリーに追加し、 'フルーツ'と 'ブランチ'とマッチさせて子供などに追加します。 ターゲットソリューションを使用するには? Parsekit btwの良い仕事:) – FBryant87

+0

答えは、あなたがビルドしている抽象的なツリー/グラフのルートオブジェクト(私は思う? "と思う?)を、現在のPKAssemblyのターゲットではなく、ivarとして保存することだと思います。現在のPKAssemblyは、最初に作成するものか、-didMatchXXX:メソッドに渡すものです。解析によって構築している「もの」は、常に現在のアセンブリのターゲットにする必要があります。ビルドしている「もの」は決してivarやグローバル変数であってはいけません。 –