プログラミング言語を作った

https://bitbucket.org/x768/fox-lang

Programming Language fox

プログラミング言語fox。

特徴

  • インタプリタ型言語です。中間コードを生成しても大して速くならなかったので、これで十分かと。
  • 変数は動的型ですが、関数の引数の型チェック構文があります(ただし実行時エラーとして検出されますが)。
  • 文字列はすべてUTF-8です。ソースコードUTF-8で書かないとエラーとなります。
  • cgiモードで実行すると、エラーメッセージがphpみたいに画面に表示されます。
  • Windows, Linux+GTK, MacOSXで使えるようになる予定です。

サンプル

ぱっと見、Swiftに似ていなくもない。

let array = [1, 2, 3, 4, 5]  // letで宣言した変数は再代入不可
var sum = 0                  // varで宣言した変数は再代入可能

for v in array {
    sum += v
}
puts(sum)
puts sum  // 単独で呼び出して、戻り値を利用しない場合、カッコを省略できる

ラムダ式もどきも使えます。

let array = [1, 2, 3, 4, 5]
for v in array.map(i => i * 2) {
    puts v
}
// result: 2, 4, 6, 8, 10

画像処理ライブラリも標準で使えます。

// QRコードを出力
import barcode.qrcode
import image

let src = "ALL YOUR BASE ARE BELONG TO US"
let q = QRCode(src, "auto", "H")

let img = q.to_image()
let img2 = Image(img.width * 8, img.height * 8, "rgb")
img2.copy_resized img

img2.save "aybabts.png"

GUIライブラリも、少しだけ使えます。

import foxtk

if let str = clip_get(Str) {
    alert "クリップボードには「$str」が入っています。"
} else {
    alert "クリップボードには文字列が入っていません。"
}

使い方

# ソースコードから実行
$ fox test.fox
# コマンドラインから実行
$ fox -e "puts 1+1"

Windows 32bitバイナリ

Linux用はソースからmakeしてください。

https://bitbucket.org/x768/fox-lang/downloads

リファレンス

準備中

https://bitbucket.org/x768/fox-lang/wiki/Home