「PIONEチュートリアル-PNML」の版間の差分
(→基本1(特定のファイルを出力する)) |
|||
| 行1: | 行1: | ||
[[PIONE]]は、直接、[[pione定義書]]を記述する事もできますが、[[PNML]]を用いて、ペトリネットの形式で記述することもできます. | [[PIONE]]は、直接、[[pione定義書]]を記述する事もできますが、[[PNML]]を用いて、ペトリネットの形式で記述することもできます. | ||
| − | [[WoPeD]](推奨)により、ペトリネットを記述し、[[PNML]] | + | [[WoPeD]](推奨)により、ペトリネットを記述し、[[PNML]]形式で保存します。それぞれのアクションは、[[マークダウン]]形式で記述する事ができます. |
== [[WoPeD]]を使った[[pione]]定義書の作成 == | == [[WoPeD]]を使った[[pione]]定義書の作成 == | ||
| 行14: | 行14: | ||
<br> | <br> | ||
| − | [[WoPeD]]でフローを作成したら、次は"□"(Transition) | + | [[WoPeD]]でフローを作成したら、次は"□"(Transition)の中身を作成します。こちらは下記のような[[マークダウン]]形式ファイルを作成します。##が意味持っていることに注意して下さい。<br> |
<pre> | <pre> | ||
## Transition名 | ## Transition名 | ||
| 行32: | 行32: | ||
<br> | <br> | ||
| − | [[PNML]] | + | [[PNML]]ファイルと[[マークダウン]]ファイルを作成した後は下記のコマンドによって、[[pione定義書]]へコンパイルすることができます。<br> |
<pre> | <pre> | ||
$ pione compile (pnmlファイル) --action (アクション定義ファイル) > (pione定義書ファイル名) | $ pione compile (pnmlファイル) --action (アクション定義ファイル) > (pione定義書ファイル名) | ||
| 行83: | 行83: | ||
<br> | <br> | ||
| − | + | [[PIONEチュートリアル#基本1(特定のファイルを出力する)]]と同様の機能を持つファイルHelloWorld.pioneが作成されました。<br> | |
<br> | <br> | ||
| 行112: | 行112: | ||
</pre> | </pre> | ||
同様にHelloWorld/output/message.txt へHello PIONE world !が出力されています。 | 同様にHelloWorld/output/message.txt へHello PIONE world !が出力されています。 | ||
| + | <br> | ||
| + | |||
| + | === 基本2(複数ルールによる処理)=== | ||
| + | 少しルールを増やした例を試してみましょう。<br> | ||
| + | 今回は各行に1つずつの数値が記述されている全ての.inファイルに対して、各数に2を掛ける処理(First)、さらに1を足す処理(Second)を施して、.outを出力するルールを作成します。<br> | ||
| + | <br> | ||
| + | [[PNML]]ファイル<br> | ||
| + | [[画像:PIONE-PNML-Basic2.png]]<br> | ||
| + | <br> | ||
| + | [[マークダウン]]ファイル<br> | ||
| + | <pre> | ||
| + | |||
| + | </pre> | ||
<br> | <br> | ||
2014年11月4日 (火) 04:13時点における版
PIONEは、直接、pione定義書を記述する事もできますが、PNMLを用いて、ペトリネットの形式で記述することもできます. WoPeD(推奨)により、ペトリネットを記述し、PNML形式で保存します。それぞれのアクションは、マークダウン形式で記述する事ができます.
WoPeDを使ったpione定義書の作成
ここではWoPeDを使って、PNMLファイルを作成し、pione定義書を作成するチュートリアルを行います。
まず、WoPeDを起動し、新規作成するためにFileのNewを選択します。
新規作成したファイル内のProcess上で右クリックすると、アイテムを選択することができます。

pione定義書を作成する上では上部2つの"○"(Place)と"□"(Transition)を使用します。主に"○"(Place)はファイルなどの入出力データを指し、"□"(Transition)はRuleなどの処理を指します。そして、"○"(Place)と"□"(Transition)の間をドラッグ操作による矢印(Annotation)でつなぐと、入力ファイルからある処理を経て出力ファイルを作成するフローが完成します。

WoPeDでフローを作成したら、次は"□"(Transition)の中身を作成します。こちらは下記のようなマークダウン形式ファイルを作成します。##が意味持っていることに注意して下さい。
## Transition名 ここにコメントを記述することができます。 ``` Transition内のAction ``` ## 次のTransition名 . . .
PNMLファイルとマークダウンファイルを作成した後は下記のコマンドによって、pione定義書へコンパイルすることができます。
$ pione compile (pnmlファイル) --action (アクション定義ファイル) > (pione定義書ファイル名)
基本1(特定のファイルを出力する)
では、PIONEチュートリアル#基本1(特定のファイルを出力する)と同様にHelloプログラムを作ってみましょう。
まず、下記のようなHelloWorld.pnmlを作成します。このとき出力ファイルの">"はMain Ruleにおける出力を指しています。("<"はMain Ruleの入力)

次に下記のようなHelloWorld.mdを作成します。
# HelloWorld.pione
## Hello
Here, you can write Comment.
```
echo "Hello PIONE world !" > {$O[1]}
```
最後にコンパイルを行います。
pione compile HelloWorld.pnml --action HelloWorld.md > HelloWorld.pione
コンパイル後のpione定義書
Rule Main
output 'message.txt'
Flow
rule Hello
End
Rule Hello
output 'message.txt'
Action
echo "Hello PIONE world !" > {$O[1]}
End
PIONEチュートリアル#基本1(特定のファイルを出力する)と同様の機能を持つファイルHelloWorld.pioneが作成されました。
実行結果
/Basic1$ pione-client HelloWorld.pione -b HelloWorld
==> &Anonymous:Root([],{})
--> Rule Application: &Anonymous:Root([],{})
--> Distribution: &Anonymous:Root([],{})
>>> &Anonymous:Main([],{})
==> &Anonymous:Main([],{})
--> Rule Application: &Anonymous:Main([],{})
--> Distribution: &Anonymous:Main([],{})
>>> &Anonymous:Hello([],{})
==> &Anonymous:Hello([],{})
SH ------------------------------------------------------------
SH echo "Hello PIONE world !" > message.txt
SH ------------------------------------------------------------
<== &Anonymous:Hello([],{})
<-- Distribution: &Anonymous:Main([],{})
<-- Rule Application: &Anonymous:Main([],{})
<-- Distribution: &Anonymous:Root([],{})
<== &Anonymous:Main([],{})
<-- Rule Application: &Anonymous:Root([],{})
<== &Anonymous:Root([],{})
/Basic1$ cat HelloWorld/output/message.txt
Hello PIONE world !
同様にHelloWorld/output/message.txt へHello PIONE world !が出力されています。
基本2(複数ルールによる処理)
少しルールを増やした例を試してみましょう。
今回は各行に1つずつの数値が記述されている全ての.inファイルに対して、各数に2を掛ける処理(First)、さらに1を足す処理(Second)を施して、.outを出力するルールを作成します。
PNMLファイル

マークダウンファイル