PIONE定義書

提供: Eospedia
2014年12月11日 (木) 07:38時点におけるKinoshita (トーク | 投稿記録)による版

移動: 案内検索

 ここでは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#オプション --paramsPIONEチュートリアル#基本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


使用するときは{ }を用います。

	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