-1

私はまだPythonで効率的にDSLを実装する方法を見つけようとしていますが、私はパーサー生成のためにANTLR 4.Xを解決しましたが、私の問題はDSLが大きく、効率的に指定する必要があることです私のDSLのためのAST。Python、ツリートラバーサ/リライタ、高度なディスパッチ/パターンマッチングでDSL ASTを生成するためのlibs?

私はmacropyを見てきました。これはPython 3.6.x互換で、2.7.xのみではない場合には理想的です。

私はZephyr ASDL仕様からPythonクラスを生成できるiASTパッケージを見つけました。 ADT仕様からASTを生成するために知っておくべき他のオプションがありますか?

また、いくつかのディスパッチライブラリを見て、ASTトラバーサとリライタをモジュラで構成可能な方法で作成しています(単純なメソッド命名ベースの訪問者パターンを避けようとしています) PEAK-rules?multimethods?functools dispatch?)。 私はタイプと述語ベースのディスパッチが混在しているので、適切なパターンマッチングに近づけることができますが、これらのライブラリはどちらもスケッチで壊れやすいようです。

アドバイスはありますか?

答えて

0

更新:ちょうどmacropyはフォークとPythonで動作するように更新されたことが判明3.5+ :)

https://github.com/azazel75/macropy

それはペグパーサジェネレータ、Scalaのようなケースクラスとパターンマッチング、理想的なを持っていますPythonで蒸散器を作るため

関連する問題