「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
これが、一番シンプルなルールの書き方です。