私はクリーンなコードのファンです。私は自分の言語が自分がやろうとしていることを表現できるのが好きですが、それを反映する構文も好きです。
たとえば、私はジェイルブレイクされたiPhone用のObjective-Cmethod_setImplementation()
で、ランタイムの機能を使用して他のコードにパッチを適用する多くのプログラムに取り組んでいます。または、PyObjCでは、構文を使用する必要がありますUIView.initWithFrame_()
。これも、メソッド名の構造化方法ではかなりひどく読みにくいものです。どちらの場合も、言語は構文でこれをサポートしていません。これを行うための3つの基本的な方法を見つけました。
- 非常識なマクロ。この「CaptainHook」を見てください。私が探していることを使いやすい方法で実行しますが、完全にクリーンではなく、大きなハックです。
- 非常に優れた構文を実装する「Logos」もありますが、Perlで記述されており、大量の正規表現を使用してコードを解析しています。これは私を怖がらせます。%hook ClassNameを追加するというアイデアは好きですが、正規表現を使用してCまたはObjective-Cを解析することは好きではありません。
- 最後に、Cycriptがあります。これはJavaScriptの拡張機能であり、Objective-Cランタイムとインターフェイスし、JavaScriptでObjective-Cスタイルのコードを使用して、それを他のプロセスに挿入できるようにします。これは、JavaScriptに実際にパーサーを使用しているため、おそらく最もクリーンですが、私は一般的にその言語の大ファンではありません。
これを可能にするために、PythonとObjective-Cの拡張機能を作成する必要がありますか?このような非常に特殊なニッチでのみ構文を変換するために、私の言語用のパーサーを作成する価値はありますか?デフォルトのObjective-CフッキングまたはPyObjCの恐ろしい構文をそのまま使用する必要がありますか?