【月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
とか、対応するキーワードが指定されているタイプのやつは、文法の衝突をあんまり考えなくていいので、パーザ書くときにやはり楽ですね。