|
ルールは他のプログラミング言語の関数に相当する機能である。
# ルールrule_aを定義する
rule rule_a
{
}
ルールの戻り値はreturn文で設定する。
#「a」、「b」、「c」のリストを返すルール
rule rule_b
{
return a b c ;
}
ルール名に続く括弧内で仮引数を持たせることができる。
# 二つの文字列aとbを引数にとるルール
rule rule_c ( a b )
{
}
# 任意サイズのリストaと空でないリストbとオプションの文字列cを引数に取るルール
rule rule_d ( a * : b + : c ? )
{
}
ルール名に続き、定義にマッチした引数を並べるとルールを呼び出すことができる。
rule rule_c ( a b )
{
}
rule_c 1 2 ; # a = 1 , b = 2
rule rule_d ( a * : b + : c ? )
{
}
rule_d 1 2 : 1 2 : 1 ; # a = 1 2 , b = 1 2 , c = 1
rule_d : 1 ; # a = , b = 1 , c =
戻り値を利用したい場合は、ルール呼び出しを「[」と「]」で囲む。
rule rule_e ( a b )
{
return $(a)-$(b) ;
}
X = [ rule_e x y ] ; # X = x-y