「PIONE定義書のTIPS」の版間の差分

提供: Eospedia
移動: 案内検索
(pione action execをPIONE定義書で使用したいとき)
行13: 行13:
  
 
=== [[pione action exec]]を[[PIONE定義書]]で使用したいとき ===
 
=== [[pione action exec]]を[[PIONE定義書]]で使用したいとき ===
[[pione action exec]]は[[アクション文書]](.mdファイル)の[[マークダウン]]で記述されたルールを単独で実行することができますので、デバッグの際に非常に有効なコマンドであるといえます。しかし、この[[pione action exec]]は通常の[[PIONE定義書]]に対応していません。元の[[アクション文書]]が無い場合(コンパイルでなく直接の記述で[[PIONE定義書]]を作成した場合)、そのままのフォーマットでは[[pione action exec]]が使用できません。[[PIONE定義書]]を下記のように記述すれば、[[pione-client]]でも実行でき、かつ[[pione action exec]]も使用できます。<br>
+
[[pione action exec]]は[[アクション文書]](.mdファイル)の[[マークダウン]]で記述されたルールを単独で実行することができますので、デバッグの際に非常に有効なコマンドであるといえます。しかし、この[[pione action exec]]は通常の[[PIONE定義書]]に対応していません。元の[[アクション文書]]が無い場合(コンパイルでなく直接の記述で[[PIONE定義書]]を作成した場合)、そのままのフォーマットでは[[pione action exec]]が使用できません。<br>
 
<br>
 
<br>
  
 +
例えば、[[PIONE定義書]]を下記のように記述すれば、[[pione action exec]]に対応でき、かつ[[pione-client]]も実行できます。<br>
 
<pre>
 
<pre>
 
Rule Main
 
Rule Main
行35: 行36:
 
# この中はどちらも実行される
 
# この中はどちらも実行される
 
echo "Message for Shell"
 
echo "Message for Shell"
    echo "Message for File" > $Out
+
echo "Message for File" > $Out
 
:<<:
 
:<<:
 
```
 
```

2014年12月26日 (金) 05:21時点における版

 ここではPIONE定義書に関するTIPSを示します。実装例はPIONEチュートリアルPIONEチュートリアル-PNML、実行例はPIONE Webclientチュートリアルをご覧下さい。

デバッグ

構文エラーに関する注意点

下記に陥りやすい構文ミスやルールを記載します。
 *rule名の先頭を数字で定義することはできない。(× 3Dto2D, ○ Ref3Dto2D)
 *ルールヘッダーはRule、フロー定義ではruleを書く。
 *Mainルールのinputファイルはpione-clientの-iで指定しているディレクトリ内に全てあるか。
 *Mainルールのoutputファイルは必ずいずれかのルールで全て作成されているか。
 *パラメータのブロック定義はルール内では使用できない。

pione action execPIONE定義書で使用したいとき

pione action execアクション文書(.mdファイル)のマークダウンで記述されたルールを単独で実行することができますので、デバッグの際に非常に有効なコマンドであるといえます。しかし、このpione action execは通常のPIONE定義書に対応していません。元のアクション文書が無い場合(コンパイルでなく直接の記述でPIONE定義書を作成した場合)、そのままのフォーマットではpione action execが使用できません。

例えば、PIONE定義書を下記のように記述すれば、pione action execに対応でき、かつpione-clientも実行できます。

Rule Main
    output 'out.txt'
Action

# この中はpione-clientのみの動作を記述可能
Out={$O[1]}

:<<:
※ ↓## (ルール名)の上は必ず1行空ける

## Main
```
# この中はpione action execのみの動作を記述可能(#:: 〜 :<<:までがどちらも実行される処理)
Out='out.txt'

#::
# この中はどちらも実行される
	echo "Message for Shell"
	echo "Message for File" > $Out
:<<:
```
::

# この中はpione-clientのみの動作を記述可能

End

このように記述すれば、PIONE定義書でもpione action execに対応できるようになります。

pione-clientで実行した場合

$ pione-client test.pione
  ==> &Anonymous:Root([],{})
    --> Rule Application: &Anonymous:Root([],{})
      --> Distribution: &Anonymous:Root([],{})
            >>> &Anonymous:Main([],{})
  ==> &Anonymous:Main([],{})

-中略-

  <== &Anonymous:Main([],{})
      <-- Distribution: &Anonymous:Root([],{})
    <-- Rule Application: &Anonymous:Root([],{})
  <== &Anonymous:Root([],{})
$ cat process/output/out.txt 
Message for File


pione action execで実行した場合

$ pione action exec test.pione Main
Message for Shell
$ cat out.txt 
Message for File