「PIONE定義書」の版間の差分
(→変数束縛文) |
(→パラメータ定義) |
||
行43: | 行43: | ||
==== パラメータ定義 ==== | ==== パラメータ定義 ==== | ||
− | パラメータにはbasicとadvancedの2つがあり、定義したルール内で有効です。外で定義した場合はグローバル変数のように全てのルールで有効となります。前者を基本パラメータ、後者を上級者向けパラメータとして定義します。basicはparamもしくはbasic paramあるいはBasic Param - | + | パラメータにはbasicとadvancedの2つがあり、定義したルール内で有効です。外で定義した場合はグローバル変数のように全てのルールで有効となります。前者を基本パラメータ、後者を上級者向けパラメータとして定義します。basicはparamもしくはbasic paramあるいはBasic Param - End間(ルール外のみ可能)で定義し、advancedはadvanced paramあるいはAdvanced Param - End間(ルール外のみ可能)で定義します。:=にてパラメータのデフォルト値を定義することができます。デフォルト値が定義されていない変数は実行時に値が必ず設定されていなければなりません。(参照: [[pione-client#オプション --params]]、[[PIONEチュートリアル#基本6(パラメータの定義)]])<br> |
<pre> | <pre> | ||
param $val | param $val | ||
行58: | 行58: | ||
$a_val2 := 864 | $a_val2 := 864 | ||
End | End | ||
+ | |||
+ | Main Rule | ||
+ | param $m_val := 731 | ||
+ | basic param $m_b_val := 426 | ||
+ | advanced param $m_a_val := 971 | ||
+ | . | ||
+ | . | ||
+ | . | ||
+ | |||
</pre> | </pre> | ||
<br> | <br> |
2014年12月24日 (水) 03:03時点における版
ここではPIONEの定義書における基本的な記述ルールを示します。具体的な記述や動作についてはPIONEチュートリアルをご覧下さい。厳密な定義などはこちらのpione-docをご覧下さい。
目次
ルールの記述方法
ルール内は大きく#ルールヘッダーと#条件定義と#振る舞い定義に分かれます。#ルールヘッダーはルール名を宣言し、#条件定義は入力ファイルや出力ファイル、パラメータなど、#振る舞い定義はその条件に対する処理を定義します。
ルールヘッダー
Ruleを使用してルール名を宣言します。ここで、Mainは特殊な宣言で実行時に最初に実行されるルールですので、注意して下さい。
条件定義
条件定義では#入力定義、#出力定義、#パラメータ定義、#特性定義を必要に応じてそれぞれ記述します。
入力定義
input 'XXX.YYY'といったように定義します。このように定義するとそのルール内であればどこでも{$I[N]}として使用できるようになります。ここでNは入力定義されている順番を指します。例えば、
input 'abc.def' input 'ghi.jkl' input 'mno.pqr'
上記の場合は{$I[1]}が'abc.def'を、{$[2]}が'ghi.jkl'を指します。
さらに、*(アスタリスク)を任意の文字として使用することができます。このときの任意の文字列を取り出す場合は{$[N][M]}として使用します。ここでNは入力定義の順番、Mはinputで定義したフォーマットで左から数えた*に該当する文字列となります。但し、*の間にある区切り文字(下記ではピリオド)は右から判定します。例えば、ディレクトリに
ab.cd.ef gh.ij.kl mn.op.qr
の3つのファイルがあったとします。このとき入力定義にて
input '*.*.*' input '*.*.ef' input '*.*'
上記の場合は{$[1][3]}がそれぞれef, kl, qrとなり、{$I[2][1]}はab、{$I[3][1]}はそれぞれab.cd, gh.ij, mn.opとなります。
出力定義
output 'XXX.YYY'といったように定義します。#入力定義と同様{$O[N]}や{$O[N][M]}としてルール内で使用することができます。
パラメータ定義
パラメータにはbasicとadvancedの2つがあり、定義したルール内で有効です。外で定義した場合はグローバル変数のように全てのルールで有効となります。前者を基本パラメータ、後者を上級者向けパラメータとして定義します。basicはparamもしくはbasic paramあるいはBasic Param - End間(ルール外のみ可能)で定義し、advancedはadvanced paramあるいはAdvanced Param - End間(ルール外のみ可能)で定義します。:=にてパラメータのデフォルト値を定義することができます。デフォルト値が定義されていない変数は実行時に値が必ず設定されていなければなりません。(参照: pione-client#オプション --params、PIONEチュートリアル#基本6(パラメータの定義))
param $val basic param $b_val := 456 advanced param $a_val := 987 Basic Param $b_val1 := 135 $b_val2 End Advanced Param $a_val1 := 975 $a_val2 := 864 End Main Rule param $m_val := 731 basic param $m_b_val := 426 advanced param $m_a_val := 971 . . .
使用するときは{ }を用います。
echo "{$val} {$b_val1} {$b_val2} {$a_val1} {$a_val2}" > {$O[1]}
特性定義
振る舞い定義
振る舞い定義では#アクション定義もしくは#フロー定義のいずれかを記述します。
アクション定義
ActionとEndで挟んで記述します。この間の記述は基本的にシェルスクリプトです。但し、#条件定義で記述した入出力や変数などを使用するときはルール内の記述に従って、{$I[N]}, {$O[N][M]}, {$val}などのように記述します。
フロー定義
FlowとEndで挟んで記述します。この間の記述はPIONEの記法になりますので、#アクション定義と混同しないように注意が必要です。#変数束縛文、#ルール呼び出し文、#条件処理文を必要に応じて記述します。
変数束縛文
このルールで使用する変数(パラメータ)に値を設定します。設定方法やその後の使用方法については#パラメータ定義をご覧下さい。
ルール呼び出し文
rule (ルール名)として他のルールを呼び出します。
rule SubRule1
条件処理文
パラメータなどを用いた条件処理にてフロー制御します。条件処理には#if文と#case文があります。使用する式についてはPIONEの式をご覧下さい。
if文
ifやelseを使用します。文の終わりにはendを使用します。
if {$val} <= 100 rule Sub1 else rule Sub2 end
case文
caseやwhen, elseを使用します。文の終わりにはendを使用します。
case {$mode} when 1 rule Abc when 2 rule Def else rule Ghi end