ScriptGrammar のバックアップ差分(No.5)


  • 追加された行はこの色です。
  • 削除された行はこの色です。
*スクリプト文法 [#xab250fc]

すべてのAviSynthスクリプトの命令文は、これらの形式のうちの1つをとります:
すべてのAviSynthスクリプトのステートメントは、これらの形式のうちの1つをとります:

+変数名 = 式
+式
+return 式
+end

1つ目の場合、式は評価され、結果(つねにビデオクリップ)は変数名にアサイン((割り当てる、という意味。))されます。2つ目の場合、式は評価され、結果は特別な変数lastに割り当てられます。3つ目の場合、式は評価され、スクリプトの"戻り値" -- すなわち、AVSを開くアプリケーションによって描かれるビデオクリップとして使われます。4つ目の場合は、return lastに相当します。

式は、これらの形式のうちの1つをとることができます:

+数値定数か文字列定数
+変数名かクリップのプロパティ
+関数([[Args>#args]])
+式.関数([[Args>#args]])
+式1 演算子 式2
+bool式 ? 式1 : 式2

1つ目の場合、式の値は定数の値です。2つ目の場合、値は[[クリップのプロパティ>ClipProperties]]か[[スクリプト変数>ScriptVariables]](これは、前もって初期化されていなければなりません)に相当します。3つ目の場合、値はAVS関数の戻り値です(下記参照)。4つ目の場合は、関数(引数, 式)に相当する、("OOP表記法"と呼ばれる)代替シンタックスです。

最後の2つの場合は、三項演算子を使って条件付きでコードを実行するばかりではなく、int、float、val、boolに関して期待されるように、通常の計算や(C言語からの)[[論理演算子>LogicalOperators]]のすべてを使って、式を操作することができるということを示しています。文字列は'+'を使って連結することができます。また、以下の演算子は、ビデオクリップに関して、次のように定義されます:a + bは[[UnalignedSplice>Splice]](a, b)に相当し、a ++ bは[[AlignedSplice>Splice]](a, b)に相当する。

AviSynthのスクリプト言語における関数は、概して、ビデオフィルタです(あなた自身の[[スクリプト関数>ScriptFunctions]]を定義することもできます)。関数は60個までの引数をとることができ(それで十分足りることを望みます)、戻り値はつねにクリップです。関数は、つねに新しいビデオクリップを生成します。けっして存在するクリップを修正するのではありません。各内蔵フィルタ用の関数呼び出しのシンタックスを見るためには、FiltersByCategoryを見てください。

&aname(args);Argsは、コンマによって区切られた、関数の引数のリストです。引数リストは、空にすることもできます。各引数は、文字列、整数、浮動小数点数、またはビデオクリップ(すなわち、式)でなければなりません。フィルタ関数が1つ目の引数としてビデオクリップを期待していて、なおかつ、その引数が与えられないとしたら、そのときは、特別なlast変数の中のクリップが使われるでしょう。

AviSynthのフィルタは、名前付きの引数を取ることができます。名前付きの引数は、どんな順番でも、指定することができます。そしてフィルタは、使用するのをやめた引数に対しては、デフォルト値を選びます。たとえば、
 [[Subtitle]]("Hello, World!", 100, 200, 0, 999999, "Arial", 24, $00FF00)
の代わりに、
 [[Subtitle]]("Hello, World!", text_color=$00FF00, x=100, y=200)
と書くことができます。

また、あなたは、関数を、丸括弧なしで呼び出すこともできます。たとえば、以下のように。
 フィルタ名 引数1 引数2
このような書き方をする主な理由は、古いスクリプトとの互換性を維持するためです。しかし、混乱の可能性がないときに、丸括弧を使用しないことは、時には、便利です。

Avisynth ignores anything from a # character to the end of that line. This can be used to add comments to a script.
AviSynthは、#記号から行末までのあらゆるものを無視します。これは、スクリプトにコメントを付け加えるために利用されます。

Avisynth ignores case: aViSouRCe is just as good as AVISource.
AviSynthは、大文字と小文字の別を無視します: aViSouRCeは、AVISourceとまったく同じです。

Multiple Avisynth statements on a single line can only be achieved in the context of OOP notation or embedding filters as parameters of another function such as:

 AviSource("c:\video.avi").Trim(0, 499)
or
 AudioDub(AviSource("c:\video.avi"), WavSource("c:\audio.wav"))

Avisynth statements can be split across multiple lines by placing a backslash ("\") either as the last non-space character of the line being extended, or as the first non-space character on the next line.

Line splitting examples (both valid and equal):

 Subtitle("Hello, World!", 100, 200, 0, \
 999999, "Arial", 24, $00FF00)

or

 Subtitle("Hello, World!", 100, 200, 0,
 \ 999999, "Arial", 24, $00FF00)

''Back to AviSynthManual''

#hr
//註: このページは、http://www.avisynth.org/ScriptGrammarの日本語訳です。