# HG changeset patch # User anatofuz # Date 1611986431 -32400 # Node ID ada9b562891db8dab66dc0928a3e5ea89ea23468 # Parent 48d1dc04c1c43faeef580e685ce9f699d7800464 ... diff -r 48d1dc04c1c4 -r ada9b562891d paper/chapter/02-interface.tex --- a/paper/chapter/02-interface.tex Sat Jan 30 13:40:36 2021 +0900 +++ b/paper/chapter/02-interface.tex Sat Jan 30 15:00:31 2021 +0900 @@ -34,13 +34,16 @@ StubCodeGearは自動生成されてしまうため、 値の取り出し以外のことを行う場合は自分で実装する必要がある。 しかしモデル検査に関する処理は様々なCodeGearの後に行う必要があるため、 すべてのCodeGearのStubを静的に実装するのは煩雑である。 -ノーマルレベルのCodeGearの処理の後に、\texttt{\_\_code meta}以外のMeta CodeGearに遷移可能なAPIが必要となる。 +ノーマルレベルのCodeGearの処理の後に、StubCodeGear以外のMeta Code Gearを実行したい。 +Stub Code Gearに直ちに遷移してしまう\texttt{\_\_code meta}以外のMeta CodeGearに、 特定のCodeGearの計算が終わったら遷移したい。 +このためには、特定のCodeGearの遷移先のMetaCodeGearをユーザーが定義できるAPIが必要となる。 このAPIを実装すると、ユーザーが柔軟にメタ計算を選択することが可能となる。 GearsOSのビルドシステムのAPIとして\texttt{meta.pm}を作製した。 これはPerlのモジュールファイルとして実装した。 Perlで実装されたGearsOSのトランスコンパイラであるgenerate\_stub.plから呼び出される。 meta.pmの中のサブルーチンである\texttt{replaceMeta}に変更対象のCodeGearと変更先のMetaCodeGearへのgotoを記述する。 +ユーザーはmeta.pmのPerlファイルをAPIとしてGearsOSのトランスコンパイラにアクセスすることが可能となる。 具体的な使用例をコード\ref{src:metapm}に示す。 meta.pmはサブルーチン\texttt{replaceMeta}が返すリストの中に、特定のパターンで配列を設定する。 diff -r 48d1dc04c1c4 -r ada9b562891d paper/master_paper.pdf Binary file paper/master_paper.pdf has changed