/bone

プログラミング言語bone

Primary LanguageCGNU General Public License v3.0GPL-3.0

Codacy Badge Build Status

概要

bone はプロトタイピング言語をベースとしており、
いくつか独自のアイデアも加えられています。
また、この言語は実験的なものなので
他の言語にあるような人気のある機能のいくつかは含まれません。
例:

  • class, interface, overload
  • method
  • exception,try-catch
  • null

参考にした言語

特徴

この言語独自のアイデアはオブジェクトインジェクションとスコープインジェクションです。
これは名前つき戻り値と関連しています。
また、値を返す時は常に名前つき戻り値を使います。

具体例

名前つき戻り値

//mdtest
{} <- load("file.bn");
f := def()(value, error) {
    value := "value is string";
    error := false;
};

// オブジェクトインジェクション
v := object() <- f();
stdout.puts(v.value);
stdout.puts(v.error.to_string());

// スコープインジェクション
{} <- f();
stdout.puts(value);
stdout.puts(error.to_string());

// ネストした名前つき戻り値
f2 := def()(value, error, value2) {
    {}  <- f();
    value2 := "value 2";
};

オブジェクトインジェクション

//mdtest
stdio := object() <- load("./file.bn");
stdio.stdout.puts("hello, world");

スコープインジェクション

//mdtest
{} <- load("./file.bn");
stdout.puts("hello, world");

詳細

詳細は document フォルダを参照してください。