【月1言語企画】文法がVBぽいだけのプログラミング言語VBLを作ってみた
3〜5月にかけて、月1プログラミング言語企画が続いていない、これは良くない!ということで、急遽お茶を濁すために作った言語です。基本的に、Klassicをベースに構文だけVBぽくした言語です。リポジトリは以下です。
次のような構文が使えます。
変数宣言
次のようにして書けます。
Dim x = 1 // x As Integerと同じ
型を書いてもいいです。
Dim x As Integer = 1
While式
元の言語が言語だけに、Whileも文ではなく式です。
Dim i = 0 Dim result = While i < 10 PrintLine(i) i = i + 1 End While PrintLine(result)
ちゃんと、End Whileで閉じるところなどはVBを踏襲しています。
If式
やっぱりIfも文ではなく式です。
Dim i = If x < 10 Then 1 Else 2 End If
ちなみに、現状は都合により、Elseは省略できません。
Foreach式
VBぽいForを実装するのも難しくないのですが、パーザ以外にも手を入れなければならずめんどくさいので、代わりにForeach式があります。
Foreach i in [1, 2, 3, 4, 5] PrintLine(i) End Foreach
関数定義
関数定義は Function ではじまり、 End Function で終わります。
Function Add(x, y) x + y End Function
変数宣言と同様に型を書いても良いです(同じ意味です)
Function Add(x As Integer, y Integer) As Integer x + y End Function PrintLine(Add(1, 2))
サブルーチン定義
サブルーチン定義は Sub で始まり、 End Sub で終わります。
Sub Put(x) PrintLine(x) End Sub Put(1)
同じく、型を書いてもいいです。
Sub Put(x As Integer) PrintLine(x) End Sub Put(1)
その他にも、なんとなくVBぽい構文をいくつか実装していますが、とりあえず今日はこんなところで。
ちなみに、こういうEnd FunctionとかEnd Whileとか、対応するキーワードが指定されているタイプのやつは、文法の衝突をあんまり考えなくていいので、パーザ書くときにやはり楽ですね。