hamigaki.png

前のページ 上に戻る ホーム 次のページ

データ

データ型
変数
変数展開

データ型

BBv2で用いられるデータ型は文字列リストだけである。リストの要素は空白文字で区切られる。

foo
foo bar
1 2 3
"if" ":" ";"

上記の各行は全て有効な文字列リストである。

変数

変数は宣言なしに使用できる。変数の名前には制限はない。BBv2のキーワードを変数名に使う場合はクォーティングかエスケープ処理を施す。

# 変数aに文字列「1」を代入
a = 1 ;

# 変数bが空なら文字列「hoge」を代入
b ?= hoge ;

# 変数bに文字列「foo」と「bar」を追加
b += foo bar ; 

# 変数ifに文字列「else」を代入
"if" = else ;

代入文の前にlocalを付けると、スコープ内でのみ有効なローカル変数を定義できる。

# ローカル変数aに文字列「1」を代入
local a = 1 ;

# ローカル変数には「?=」、「+=」は使えない
#local b ?= hoge ;
#local b += foo bar ; 

変数展開

トークン中の「$(変数名)」は対応する変数の値に展開される。変数の値が複数ある場合、変数値と前後の文字列を連結した結果は直積になる。

A = a ;
B = 1 2 ;
C = x y z ;

D = _$(A)_ ; # D = _a_ ;
E = a$(B) ; # E = a1 a2 ;
F = $(B)$(C) ; # F = 1x 2x 1y 2y 1z 2z ;

また次の表に示す修飾子を変数名の後ろに付けることで展開後の文字列を整形できる。

修飾子 効果
[n] n番目の要素のみ選択される
[n-m] n番目からm番目の要素のみ選択される
[n-] n番目以降の要素のみ選択される
:U 大文字にする
:L 小文字にする
:G グリスト部分を選択する
:D ディレクトリ部分を選択する
:P 親ディレクトリ部分を選択する
:B ベース名部分を選択する
:S 拡張子部分を選択する
:M アーカイブメンバ部分を選択する
:T 「\」を「/」に置換する
:W CygwinのパスをWindowsのパスに変換する (Cygwinのみ)
:G=grist グリスト部分をgristに置換する
:R=root パスが絶対パスでなければ、rootを先頭に追加する
:D=dir ディレクトリ部分をdirに置換する
:B=base ベース名部分をbaseに置換する
:S=suf 拡張子部分をsufに置換する
:M=mem アーカイブメンバ部分をmemに置換する
:E=value 変数の値が空の場合、valueに置換する
:J=joinval 変数の各値をjoinvalで区切って連結した文字列に置換する
X = a b c;
A = X[2] ; # A = b
B = X[1-2] ; # B = a b
C = X[2-] ; # C = b c
D = X[-1] ; # D = c
J = $(X:J=-) ; # J = a-b-c ;

X = ABCdef ;
U = $(X:U) ; # U = ABCDEF
L = $(X:L) ; # L = abcdef

ph = <grist>dir/base.suf(mem) ;
G = $(ph:G) ; # G = <grist>
P = $(ph:P) ; # P = <grist>dir
D = $(ph:D) ; # D = dir
B = $(ph:B) ; # B = base
S = $(ph:S) ; # S = .suf
M = $(ph:M) ; # M = (mem)

G = $(ph:G=g) ; # G = <g>dir/base.suf(mem)
R = $(ph:R=/) ; # R = <grist>/dir/base.suf(mem)
D = $(ph:D=d) ; # D = <grist>d/base.suf(mem)
B = $(ph:B=b) ; # B = <grist>dir/b.suf(mem)
S = $(ph:S=.s) ; # S = <grist>dir/base.s(mem)
M = $(ph:M=m) ; # M = <grist>dir/base.suf(m)

ph = C:\\Windows\\System32 ;
T = $(ph:T) ; # T = C:/Windows/System32

ph = /cygdrive/c/Windows
W = $(ph:W) ; # W = C:\\Windows

E = $(not_defined:E=default) ; # E = default

前のページ 上に戻る ホーム 次のページ