言語仕様

字句解析仕様

基本的にVBと似たような感じです。
まぁここを見るよりサンプルコードを見たほうがわかりやすいかと。

基本的に大文字と小文字は区別しませんが、変数・関数名は大文字・小文字を区別します。
コメント文はVB風の'の他でなくC++風に//、/* 〜 */を用います。
行末に _ (アンダースコア)を用いると次の行と連結します。

構文仕様

プログラム全体の構成

Dim文によるグローバル変数の宣言に続き、関数の宣言が続きます。
グローバル変数の宣言は先頭になければ行けません。

関数の構成

Dim文によるローカル変数の宣言に続き、文が続きます。
ローカル変数の宣言は関数の文の前に無ければ行けません。

変数の宣言

Dimを用いて宣言します。
Dim 変数をカンマ区切りで指定 As 型
型はint(4byte整数型、VBのLongと同じ)、float(4byte浮動小数型、VBのSingleと同じ)、string(文字列)のいずれかです。
配列を宣言したい場合は変数名の後に[]または()をつけます。(C風表記及びVB風表記)
動的配列も静的配列も作成できますが、VBの動的配列と異なり、次元の数だけは固定する必要があります。
静的配列は整数の定数を入れる必要があります。
VBと異なり、配列は要素の数を指定するため、利用できるインデックスは0〜要素数-1です。

Dim a , b As Int             //いずれも整数型
Dim c[12] , d(12) As Float   //いずれも要素数12個、0〜11まで利用できる浮動小数型の1次元配列
Dim e[][] , f(,,,) As String //それぞれ2次元、4次元の動的配列
関数の宣言

VBと同じです。
値を返さない関数はSub、返す関数はFunctionで定義します。
VBと異なり、値を返す場合はreturn文を用います。
Exit SubやExit Functionは用いません。
関数の引数は値渡しです。
ただし、配列は配列への参照を渡すので関数内で配列の中身を書きかえると、呼び出し元でも配列の中身が書き換わります。
Sub 関数名 (引数リスト)
  文のリスト
End Sub

Function 関数名 (引数リスト) As 返り値の型
  文のリスト
End Function

(例)数値型配列の和を返す関数
Function SumInt(a[] as int) as int
  Dim i , s As int
  
  For i = 0 to (int)a - 1
    s += a[i]
  Next
  return s
End  Function
文(Statement)

文は値を返さないプログラムの要素です。
式(Expression)とは違うのでここらへんなれない人は注意。
Call文
関数を呼びます。
VB風の括弧を用いない関数呼び出しは利用できません。
返り値の有る関数を呼び出した場合、返り値は捨てられます。
引数の無い関数でも括弧が必要です。
Call 関数名 (引数リスト)

(例)
Call AddInt(3,4)
Call test()
Redim文
動的配列を生成します。
VBと異なり、後ろに「As 型名」をつける必要はありません。
変数の宣言時と次元数が一致する必要があります。
配列はVBスタイルとC言語スタイルの両方が利用できます。
Redim 変数名(要素数リスト)
Redim 変数名[要素数][要素数]・・・

(例)
Dim a[][] , b(,,,) As Float //それぞれ2次元、4次元の動的配列
Redim a(5,4)         //別にどちらのスタイルを用いてもよい
Redim b[-1][4][5][6] //実際は要素数が-1は不正なので実行時エラー
Exit文・Return文・Continue文
Exit ForおよびExit DoはVBと同じで一番内側のFor文、Do文を抜けます。
Continue文はC言語と同じで、一番内側のループの先頭位置に移動します。(例えば、For文なら変数にStep分を足すところに移動)
Return文はExit Sub及びExit Functionと同様に関数を抜けるのに利用します。
VBと異なり、値を返す関数ではReturn文と同時に返り値を使用します。
(例)
For i = 0 to 5
  if i = 3 then continue
  Call test() //ここが呼ばれるのはi=0,1,2,4のとき。
              //i=3の時はcontinue文で飛ばされる。
  if i = 4 then exit for //i=4ならここでForを抜けるので、i=5にならない。
Next
return (j+3) //関数を抜け、返り値としてj+3を返す
代入文
変数に代入します。
普通の代入だけでなく、C言語風の+=や-=等の代入も行えます。
配列に配列を代入することもできますが、これは参照を代入しているだけでコピーは行いません。
変数 = 代入値
変数[要素][要素]… = 代入値 //配列への代入
変数(要素,要素,…) = 代入値 //配列への代入
変数 += 代入値              //実際は 変数 = 変数 + 代入値
他に-=、*=、/=、%=、|=、&=、^=、<<=、>>=が利用可能。

(例)
a = 3
a[3] = 5
s += "あいうえお"
a <<= 5

Dim b[3][5] , c[3] As Int
b[1] = c //b[0]、b[2]はそれぞれb[0][4]、b[2][4]と5個ずつ要素があるが、
         //この代入の結果、b[1]だけはb[1][2]までと4つだけ利用可能
c[1] = 3 //b[1]とcは同じ配列をさすので、b[1][1]も3になる
IF文
VBのIF文とほぼ同様。
1行のIF文と複数行のIF文がある。
1行のIF文はELSE節を持てません。
1行スタイル
IF 条件式 THEN 式

複数行スタイル、ELSEIF節やELSE節はあってもなくてもよい。ELSE文は1つまで可能。
IF 条件式 THEN
  文のリスト
[ELSEIF 条件式 THEN
   文のリスト]
[ELSE
   文のリスト]
ENDIF
(注) 後のFORやDOにも関わりますが、条件文は基本的にint型として判断します。
VBではSingle型の変数fに対してIF f THEN 〜〜 とある時、実際はIF f <> 0 THEN 〜〜と判断します。
これはVBがBoolean型とInteger型を別物と考えているからです。
ここではBoolean方は無いため、IF f THEN 〜〜はIF (int)f <> 0 THEN 〜〜と判断します。
つまり、0≦f<1の値の時はint型にキャストした時0となるため、IF文の中身を実行しません。
DO WHILEの判断でも同じような動作をします。
「fが0でない時」を判定する場合は比較演算子を使う必要があります。
(そもそも、浮動小数の場合は精度の問題もあり、等号ではなく不等号を使うことが望ましいです。)

FOR文
VBのFOR文とほぼ同様。
FOR 変数 = 初期値 TO 終了値 [STEP 増加値]
  文のリスト
NEXT

変数はint型かfloat型の変数しか使えません。
配列も利用することはできません。
終了値や増加値はFOR文に中身に入る時に1度しか評価しません。
例えば、以下の場合を考えます。

a = 10
b = 50
c = 1
For i = a To b Step c
  b = b - 1
  c = c + 1
Next

この文では終了値や増加値がFor文の中で変化していますが、iはFor文に入った段階の終了値や増加値に則って変化します。
増加値cが増加していってもFor文に入る時c=1なので、iは10、11、12、・・・、50と変化します。
ただし、対象となる変数i自体はFor内部で変化した場合、例えばi=60と範囲外の値を指定するとすぐループを抜けます。
これは変な仕様かと思うかもしれませんが、VBのFor文はそう言う仕様になっています。
(CやJavaでは普通毎回その時点の増加値や終了値と比較しますね。)
Do文
VBのDo文とほぼ同様。
Do [While 条件式 | Until 条件式]
  式のリスト
Loop [While 条件式 | Until 条件式]

WhileやUntil節はDoとLoopの両方の隣につけても構いません。
Doの横につけるとループ突入時もチェックを行います。
式(Expression)

式は値を返すプログラムの構成要素です。
定数
定数は整数・小数・文字列からなります。
文字列はC言語スタイルで記述します。(エスケープシーケンスを用いる)
16進数もC言語スタイルで「0x」を頭につけて記述します。
(例)
0 1 -10 0x7F           //いずれもint
0.0 1.5 1.3e5          //いずれもfloat
"あいうえお" "a\tb\tc" //いずれもstring
変数・関数
変数名・関数名は半角英数字のみ利用できます。
最初の1文字はアルファベットのみ利用できます。
当然、他の予約語(subやintやfor)を使うことはできません。

関数またはグローバル・ローカル変数として定義されているもの以外を使用するとエラーになります。
配列の添え字は[]と()のどちらも利用することができます。
関数呼び出しもどちらでも可能ですが、できれば配列は[]、関数呼び出しは()と統一したほうがいいでしょう。
(例)
a + b(1) //bが変数名か関数名かによって1が配列の添え字か関数呼び出しかが決まる
キャスト(型変換)
他の式をint・float・string型にキャストします。
配列でない値はどの型からどの型でもキャストします。
配列型はint型にのみキャスト可能です。
この場合は配列のサイズが返ります。
以下のどちらの形式も利用可能です。
(型名)式
型名(式)

(例)
(int)3         //元がintだからなんにもならない
(float)"5.2"   //文字列をfloatにする
int(3.5 + 4.2) //和をfloatにする
Dim a[3][5]
(int)a         //配列のサイズ=3が返る
(int)a[1]      //配列のサイズ=5が返る
演算子
各演算は配列に対しては行えません。int・float・stringは必要に応じてキャストされます。

算術演算子(+ - * / %(mod)) 剰余はmod・%のどちらでも構いません。
加算は両者の型に対して string > float > int の優先度で高いほうに合わせて計算します。
- * / %はfloat > int で高いほうに合わせて計算します。stringはfloatやintにキャストされます。

ビット演算子(<< >> | & ^ ! ||(or) &&(and) ^^(xor) !!) ||、&&、^^はor、and、xorでも構いません。
これらは演算する値をintにキャストして行います。

比較演算子(= !=(<> ><) < <= > >=) 一致しないは!=でも<>でも><でも構いません。 いずれも両者の型に対して string > float > int の優先度で高いほうに合わせて計算します。

(例)
3.5 * (5 + "6") //最初の加算はintで行われ、その後の乗算はfloat
5 << 2.3        //intにキャストして5を2bit左シフト
IF "aiueo" < "b" THEN 〜〜 //文字列は辞書順で比較