Metacontext.

コンテキストマネージャによるメタルーグラミング
今すぐダウンロード

Metacontext. ランキングとまとめ

広告

  • Rating:
  • ライセンス:
  • BSD License
  • 価格:
  • FREE
  • 出版社名:
  • Marko Mikulicic
  • 出版社のWebサイト:

Metacontext. タグ


Metacontext. 説明

Pythonにドメイン固有の言語を書くことは常に可能ですが、それは厳格な構文です。 Pythonの言語デザインの原則に従う強力な言語拡張メカニズムを提供し、Emacs Flymakeなどのエディタ拡張機能を使用して互換性を分割する混乱を招くことを避けるためのPythonライブラリです.MetaContextのMetacontextは、ASTを操作できるマクロを定義できます。それはボディであり、絶妙なコード。 Metacontextがありません。 DEF _(e):handle_error(e)PATTERN_MATCHコンテキストマネージャは、少なくとも1つのケースが実行されているかどうかを確認し、そうでない場合はNOMATCH例外を発生させることができます。このDSLには2つの問題があります。それは必要以上に冗長です。それはループを抜けないクローズを閉じる必要があります。 '何か'、any))として:do_something_with(value)case( 'error'、any))E:HANDLE_ERROR(e)このコンストラクトでは、ジェネレータベースのコルーチン(Twisted Inlineコールバックのように)ごとに正しく対話できます。 :PATTERN_MATCH(MSG):(( '何か'、any))の値として(( '何か'、any))値:rec = eum do_someth_with(value)do_something_else( 'rec)('エラー '、any))E:handle_error(e)またはpattern_match(msg)を使用します。例外の場合:RETRY(IOException):DO_SOMething()do_something_else()これは次のように書かれています:try:try:do_something()do_something_else()Exce PT IOException:PRESS:PASSHOWあなた自身のメタコンテキストを作成するためにBreakhowキーワードを作成する次のクラスのサブクラス:クラスの再試行(キーワード):DEF __init __(self、* EXCS):self.Exceptions = EXCS DEF変換(Self、Translator、Body、ARGS、 var):#...変換されたPython ASTオブジェクト#を返します.Metaコンテキストマンガーを使用するMetaコンテキストマンガーを使用するには、 `ボディーの中に`ボディが入ります。フック:Import MetacontextMetaContext.register_importer_hook()次に、キーワードのサブクラスに解決されるシンボルをインポートするすべてのソースファイルはインポートフックによって傍受され、それは通常の本文を変革するメタコンテキストの拡張子に与えられます。ステートメント:yourpackage.retrymangerのインポートretry#... retry():#....マクロの定義LanguageAgeAgeManiaMemaniaMemaniaMemaniaMemaniaMeNiaPlatingは、特にデバッグのための元の行番号情報を保存することを気にしなければならないので、詳細と面倒なプロセスです。Stack Trace Purtose.MetaContextは、あなたがすぐにあなた自身のメタコンテキストを早く作成するために使用できるマクロ定義DSLを提供します:マクロ定義DSL自体はMetacontextコンストラクトを使用して構築されています:クラスretry(キーワード):def __init __(self、* Excs):self .Exceptions = EXCS DEFテンプレート(Self、Transer、Body、ARGS、vars、var):Qとして:try:try:try:unquote_stmts(body):PASS ELSE:Break Return Qthe Metacontextライブラリは最適ですライブラリが開発中であるため、ソース内のコンストラクトをネイティブPython。彼らの出典の最初の行として:# - 言語コンパイル時の概要 - ##この制限は私達が私達がすべてのインポートフックラフエッジを正しく処理することができるようにするとすぐに持ち上げられるでしょう.Productのホームページ


Metacontext. 関連ソフトウェア