「PIONEチュートリアル」の版間の差分
提供: Eospedia
(ページの作成:「'''PIONE''チュートリアル ここでは、PIONEのチュートリアルを行います。 == 基本1 == まず、動かすためのPIONE定義書をつく...」) |
(→基本1) |
||
| 行5: | 行5: | ||
まず、動かすためのPIONE定義書をつくります。次の内容のファイル'HelloWorld.pione'を作成してみましょう。 | まず、動かすためのPIONE定義書をつくります。次の内容のファイル'HelloWorld.pione'を作成してみましょう。 | ||
| − | + | ||
Rule Main | Rule Main | ||
output 'message.txt' | output 'message.txt' | ||
| 行12: | 行12: | ||
echo "Hello PIONE world !" > message.txt | echo "Hello PIONE world !" > message.txt | ||
End | End | ||
| − | |||
この後、pione-clientを実行します。 | この後、pione-clientを実行します。 | ||
| 行47: | 行46: | ||
さっきと比べると、Main Ruleが動いていないことが分かります。 | さっきと比べると、Main Ruleが動いていないことが分かります。 | ||
| + | |||
| + | さて、改めて設定したファイルを眺めてみます。 | ||
| + | |||
| + | まず、最初に呼び出されるルール(Main)が定義されています。 | ||
| + | Rule Main | ||
| + | |||
| + | Mainは、C言語などと同様に特別な意味をもつルールです。 | ||
| + | |||
| + | 次に、出力ファイルが定義されています。 | ||
| + | |||
| + | output 'message.txt' | ||
| + | |||
| + | ここに書かれたファイルが最終的に-oで指定されたディレクトリに出力として戻ってきます。 | ||
| + | Action以降が実際に起動するプログラムになります。 | ||
| + | Action | ||
| + | echo "Hello PIONE world !" > message.txt | ||
| + | |||
| + | 実際にはシェルスクリプトが動きますので、どんなものも実行が可能です。 | ||
| + | #!/bin/csh | ||
| + | で始めれば、cshを使って記述することもできますし、スクリプト系の言語であれば自由に記述し、実行形式を実行出来ます。 | ||
| + | |||
| + | 最後に、RuleをEndで終了します。 | ||
| + | |||
| + | End | ||
| + | |||
| + | これが、一番シンプルなルールの書き方です。 | ||
2014年3月28日 (金) 23:59時点における版
'PIONEチュートリアル ここでは、PIONEのチュートリアルを行います。
基本1
まず、動かすためのPIONE定義書をつくります。次の内容のファイル'HelloWorld.pione'を作成してみましょう。
Rule Main output 'message.txt' Action echo "Hello PIONE world !" > message.txt End
この後、pione-clientを実行します。
$ pione-client HelloWorld.pione -o helloOutput
例えば、次のような出力が流れます。
==> &Anonymous:Root([],{})
--> Rule Application: &Anonymous:Root([],{})
--> Distribution: &Anonymous:Root([],{})
>>> &Anonymous:Main([],{})
==> &Anonymous:Main([],{})
SH ------------------------------------------------------------
SH echo "Hello PIONE world !" > message.txt
SH ------------------------------------------------------------
<== &Anonymous:Main([],{})
<-- Distribution: &Anonymous:Root([],{})
<-- Rule Application: &Anonymous:Root([],{})
<== &Anonymous:Root([],{})
その結果、helloOutputというディレクトリができます。その中に指定したファイルmessage.txtが出力されています。
$ cat helloOutput/message.txt
Hello PIONE world !
もう一度、実行すると今度は、実行の必要がないために次のようなものが出力されます。
==> &Anonymous:Root([],{})
--> Rule Application: &Anonymous:Root([],{})
<-- Rule Application: &Anonymous:Root([],{})
<== &Anonymous:Root([],{})
さっきと比べると、Main Ruleが動いていないことが分かります。
さて、改めて設定したファイルを眺めてみます。
まず、最初に呼び出されるルール(Main)が定義されています。
Rule Main
Mainは、C言語などと同様に特別な意味をもつルールです。
次に、出力ファイルが定義されています。
output 'message.txt'
ここに書かれたファイルが最終的に-oで指定されたディレクトリに出力として戻ってきます。 Action以降が実際に起動するプログラムになります。
Action echo "Hello PIONE world !" > message.txt
実際にはシェルスクリプトが動きますので、どんなものも実行が可能です。
- !/bin/csh
で始めれば、cshを使って記述することもできますし、スクリプト系の言語であれば自由に記述し、実行形式を実行出来ます。
最後に、RuleをEndで終了します。
End
これが、一番シンプルなルールの書き方です。