Squirrel

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動: 案内検索
Squirrel
パラダイム マルチパラダイム
設計者 Alberto Demichelis
最新リリース 3.0.6 / 2014年04月2日(4か月前) (2014-04-02
評価版リリース 3.1 / 2011年03月13日(3年前) (2011-03-13
プラットフォーム クロスプラットフォーム
ライセンス

MIT License(3.0 beta3 以降)

zlib/libpng license(3.0 beta2 以前)
ウェブサイト squirrel-lang.org

Squirrel(スクワール) は軽量な高級スクリプト言語である。手続き型言語オブジェクト指向言語関数型言語データ駆動などの特性を併せ持つ。メモリ消費量やリアルタイム応答性の面で優れ、ゲームへの組み込み言語として採用が進んでいる。

特徴[編集]

C言語のホストプログラムに組み込まれることを目的に設計されており、高速な動作と、高い移植性、組み込みの容易さが特徴である。いったんバイトコードにコンパイルされ、仮想機械 (VM) で実行される。コンパイラと VM は共に6000行程度のC++で実装されており、全てオープンソースで公開されている。ライブラリは C言語 からも利用できる。

その他に、以下の特徴を持つ。

Luaを強く意識して設計された言語であり、組み込みのためのライブラリの構文は Lua と類似性がある。ただし、以下のような差異がある。

  • C/C++に似た構文を採用している。
  • テーブルと配列が別のオブジェクトである。
  • 整数と浮動小数点数が別のオブジェクトである。
  • 配列のインデックスが 0 から始まる。
  • クラス継承を扱う構文を組み込みで持っている。
  • 変数への代入式で変数名をtypoした際に、typoした名前の新しい変数が定義されることでバグの温床となるのを防ぐために、定義されていない変数への代入はエラーとし、変数定義用の構文を用意している。
  • テーブルの定義にJSON形式の記法を利用できる。

構文[編集]

class BaseVector {
  constructor(...) {
    if (vargv.len() >= 3) {
      x = vargv[0]
      y = vargv[1]
      z = vargv[2]
    }
  }
 
  x = 0
  y = 0
  z = 0
}
 
class Vector3 extends BaseVector {
  function _add(other) {
    if (other instanceof this.getclass())
      return ::Vector3(x + other.x, y + other.y, z + other.z)
    else
      throw "wrong parameter"
  }
  function _tostring() {
    return x + "," + y + "," + z
  }
}
 
local v0 = Vector3(1, 2, 3)
local v1 = Vector3(11, 12, 13)
local v2 = v0 + v1
print(v2.tostring())

採用ソフトウェア[編集]

Squirrel は以下のソフトウェアで利用されている。

歴史[編集]

Alberto Demichelis によって2003年に開発され、zlib/libpng license として公開された(Squirrel3.0 beta3 から、MIT License へと変更された)

オープンソースではあるが、開発とメンテナンスは Alberto Demichelis が中心となって行っている。

zlib/libpng lincense ではライセンスの表記義務が無いため、 上記の採用ソフトウェア以外にも、Squirrelの採用を公開していないソフトウェアが多数存在する。

関連項目[編集]

外部リンク[編集]