GScript のバックアップ差分(No.1)


  • 追加された行はこの色です。
  • 削除された行はこの色です。
#contents

* GScript とは [#k5daa851]

-AviSynth スクリプト言語を拡張するプラグイン。
-複数行の if 〜 else ブロック、while ループ、for ループを利用可能にする。
-Gavino 氏作。

* GScript で利用可能な構文 [#o64859ac]

実際の利用方法については、下記の「利用方法」を参照。

** if 文 [#de942008]

条件文。

#code{{
# 例(GScript.htm より(日本語訳は引用者による。))
if ( 条件 ) {

}
else {

}
}}

else 文は省略可。

#code{{
# 例(GScript.htm より)
if ( 条件 ) {

}
else if {

}
else {

}
}}

このようにすれば、else if も使える。

** while 文 [#x69ee27b]

ループ

#code{{
# 例(GScript.htm より)
while (条件) {

}
}}

** for 文 [#t9a339c9]

ループ。

#code{{
for ( 変数 = init , limit , step ) {

}
}}

-init (初期値)、limit (上限/下限)、step (増減値)はすべて整数(step は非ゼロ)。
-limit を超えるか、下回るまで繰り返し。
-step はオプションで、デフォルトは 1。

* 収録関数 [#kf76caab]

-GScript
--GScript 拡張を引数に取る。
-GImport
--標準の Import() に似ているが、GScript 拡張をサポートしている。
-GEval
--標準の Eval() に似ているが、GScript 拡張をサポートしている。

* 利用方法 [#r4b4f1a6]

以下の方法のいずれかを使って、if 〜 else 文、while 文、for 文が利用できる。

** 1, GScript() 関数の中に記述する方法 [#g05d4d04]

#code{{
# 例(GScript.htm より)
GScript("""
if (i > 10) {
  x = 1
  y = 2
  z = 3
}
else {
  x = 4
  y = 5
  z = 6
}
""")
}}

MT() で複数のフィルタを指定するときのように。

** 2. GImport() 関数を使ってインポートする方法 [#c5e33df4]

#code{{
# 例(GScript.htm より)
GImport("MyGScript.avs")
}}

GImport() は、標準の Import() に似ているが、インポート対象のファイル内での GScript 拡張の使用をサポートしている。1 の方法と違い、MyGScript.avs の中では if 〜 else 文など GScript で追加された構文を直接記述できる。

* メモ [#d06e9661]

-GScript 呼び出しの中で、通常の AviSynth スクリプトを記述することも可能。
-GScript 環境の中で宣言された関数は外部から呼び出せる。逆もまた然り。
-すべて式ではなく(try 〜 catch のように)複合文なので、代入の右辺には使えない。
-ループは「コンパイル時」構文。ランタイムフィルタグラフにループはなく、グラフの構築においてのみ存在(再帰関数のように)。

* 関連リンク [#c7992916]

-[[GScript - language extensions for Avisynth - Doom9's Forum:http://forum.doom9.org/showthread.php?t=147846]]