Squirrel

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動: 案内検索
Squirrel
パラダイム マルチパラダイム
設計者 Alberto Demichelis
最新リリース 3.0.4 / 2012年11月10日(6か月前) (2012-11-10
評価版リリース 3.1 / 2011年03月13日(2年前) (2011-03-13
プラットフォーム クロスプラットフォーム
ライセンス MIT License
ウェブサイト squirrel-lang.org
テンプレートを表示

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

目次

特徴 [編集]

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

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

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

  • C/C++に似た構文を採用している。
  • テーブルと配列が別のオブジェクトである。
  • 整数と浮動小数点数が別のオブジェクトである。
  • 配列のインデックスが 0 から始まる。
  • クラス継承を扱う構文を組み込みで持っている。

構文 [編集]

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 は以下のソフトウェアで利用されている。

  • OpenTTD - COMプレーヤ用AIモジュール(NoAI)の記述スクリプトにSquirrelが採用されている [2]

歴史 [編集]

2003年に開発され、zlib/libpng license として公開された。 開発とメンテナンスは Alberto Demichelis によって行われている。

関連項目 [編集]

外部リンク [編集]