7

パーサージェネレーターを使用して、ドメイン固有の言語のパーサーを作成することをお勧めしました。Objective Cのパーサジェネレータ?

理想的には、objective-Cパーサーを出力し、その言語を説明するためにBNF入力を受けたいと思っています。

ほとんどの選択肢がないようです。一般的なパーサージェネレータの1つを目的のCで使用することは可能ですか?

ありがとうございます!

答えて

8

Objective-Cのような動的言語では、コード生成は「真の方法」ではありません。パーサージェネレータで実現できるものは、実行時に実現できます。ですから、ParseKitのようなものを試すことをお勧めします。これはBNFのような文法をとり、パーサーを構築するために実装できる様々なデリゲートフックを提供します。

詳しくはthis tutorialをご覧ください。

+0

すごくありがとう! ParseKitのためのBNFのような文法が再帰をサポートするかどうか知っていますか?それはちょうど私がそれを言及していないと思った.. – FBryant87

+0

私はそれが本当に確信していますが、あなたは非常に慎重でない限り、左回帰文法をそのようにエンコーディングしている場合、あなたは無限ループに終わるでしょう。だから、私はあなたの反復を反復に因数分解しようとすることをお勧めします。 –

4

あなたが慣れているなら、確かにCベースのパーサジェネレータを使用することができます。別のObjective-Cランタイムパーサーは、抑えられないRob RixのHammerです。

7

BisonやYACCなどの期待される答えがありますが、ネイティブのObjective-Cソリューションが必要な場合は、すでに言及されているカップルがあります。 (HammerとParseKit)私が知っているもう一つのものは "CoreParse"です:https://github.com/beelsebob/CoreParse