Leapスクリプト


  フリーソフト

Siolaが開発した独自のプログラミング言語であるLeap言語で記述したスクリプト(Leapスクリプト)の実行環境です(Leapはprogramming Language Easy and Powerfullの略で簡単かつ強力なプログラミング言語という意味です)。

Leap言語は基本的な文法をC/C++と共通にしてあり、普段C/C++で開発している開発者が違和感なく使用できることを最大の目的にして設計した言語です。
しかしスクリプト用の言語ということで、煩わしい構文を廃して直感的でシンプルな文法を目指した結果、比較的短いステップ数で処理を記述できるのが特徴となっております。

Ver.1.00以降は大幅な機能追加を行い、以下のことができるようになりました。

   ・CLR(いわゆる.NET)クラスの呼び出し
   ・COMサーバーの呼び出し
   ・DLLからエクスポートされている関数の呼び出し(_stdcallと_cdeclに対応)

CLRクラスの呼び出し機能を用いれば、.NET Frameworkクラスライブラリで 定義されているクラスがすべて使用できますので、かなりいろんなことができます。Windows標準のスクリプト環境であるJScriptや VBScriptでは.NET Frameworkクラスライブラリが使用できない(※)ので、コンパイルせずにスクリプトから.NET Frameworkクラスライブラリが使用できるのは使ってみるとかなり便利ですよ。もちろんユーザーが作成したアセンブリDLLからパブリックなクラ スを使用することもできます。
※JScriptやVBScriptでもコンパイルすれば.NET Frameworkクラスライブラリを使用することができますがいちいちコンパイルするのは面倒です^^

COMサーバーの呼び出しはJScriptやVBScriptでもできますが、同じことがLeapスクリプトでもできますので、スクリプト内でExcelを呼び出して処理したり、WScriptクラスを呼び出したりできます。

DLLからエクスポートされている関数の呼び出し機能はかなり強力です。これができるということは、つまりWin32 APIをスクリプトから直接呼び出せると いうことです。よってもはや何でもありとなります^^ もちろんCRT(Cランタイム)の関数も呼び出せます。ユーザーが作成したDLLからエクスポートされている関数も当然呼び出せますので、例えばスクリプ ト内でUNLHA32.DLLを呼び出してLHA書庫を解凍なんてこともできます。

また、Leapスクリプトではスクリプトの引数を文字列に限定しておらず、さらにスクリプトから返り値も返すことができるため、あるスクリプトから別ファイルのスクリプトを関数としてシームレスに呼び出すことができます。そのため、よく使用する処理をライブラリ化しておくことができ、非常に便利です。これはJScriptやVBScriptではできないことです。

本ソフトは作者自身も日常的に使用しており、今後もさらに便利になるように改良を重ねていく予定です。

アーカイブには詳細なヘルプとサンプルのスクリプトが同梱されておりますので、是非一度使ってみてください。

なお別ソフトとして公開している「うぇぶ写本」はすべてLeapスクリプトで記述されており、汎用的なコードも多く含まれておりますので、もしよろしければこちらもダウンロードして参照してみてください^^



添付のchmドキュメントについて

本ソフトに付属するchm形式のドキュメント(「Leap言語文法解説」と「システム関数リファレンス」)はWindows Vista及びWindows 7の環境において正常に閲覧できない場合があります。この場合、以下のいずれかの方法により閲覧できるようになります(ただし②と③は動作未確認で す;)。

① chmファイルに対して「ブロックの解除」を行う

Windows XP SP2以降ではZone IDという仕組みが導入されていて、インターネットからダウンロードしたファイルなどを開こうとした場合のセキュリティが強化されています。
chmファイルに対して「ブロックの解除」を行うことでファイルのZone ID設定が変更され、OSがそのファイルが安全であると判断するため正常に開けるようになります。
参考: ブロックの解除方法

② WinHlp32.exeを導入する

Windows Vista以降ではヘルプファイルの形式が変更されており、古い形式のヘルプファイルは標準ではサポートされていません。
WinHlp32.exeというモジュール(Microsoftが提供)を導入することにより、古い形式のヘルプファイルが開けるようになります。
参考: WinHlp32.exeの導入方法

③ フリーのchmファイル閲覧ソフトを使用する

フリーソフトとして配布されているchmファイル閲覧ソフトを利用することにより、Windows VistaやWindows 7でchmファイルを閲覧できるようになります。ソフトはあえて紹介しませんが検索するなどして探してみてください。



ダウンロード

ダウンロードは以下のリンク先からどうぞ。

  このサイトからダウンロード  (最新バージョン v1.04,2013/10/30 公開)

  ベクターでダウンロード



履歴

日 付 バー ジョン 更 新内容
2013/10/301.04(不具合修正)
  ・'を含む文字列をコマンドライン引数で渡された場合にエ
   ラー終了(エラーメッセージなし)していたのを、正常に
   処理できるように修正。
2013/05/201.03
(本バージョンは未公開)
(機能追加/変更)
  ・システム関数 _get_script_file() を追加。
  ・コンソール版のエラーメッセージを標準出力ではなく標準
    エラー出力に出力するように変更。
  ・同一ブロック内に複数の finally 文がある場合に、ブロッ
   ク終了時に実行される順序を逆順に変更。
   例えば finally { A; } finally { B; } の順で記述されて
    いる場合、変更前はブロック終了時に A、B の順で実行して
    いたのを B、A の順で実行するように変更。

(不具合修正)
  ・スクリプトファイル読み込み時に読み取り共有モードで読む
   ように修正。これにより複数プロセスもしくは複数スレッド
   で同じスクリプトファイルを同時に実行しようとした場合に
   エラーとなる不具合を解消。
  ・_exec_script() 実行時にスレッドセーフ用のミューテックス
   を解放していなかったのをするように修正。
2012/02/17 1.02 (不具合修正)
  ・System.Int32型などのCLRオブジェクトに対して++/--演算を
   行っても値が変わらない不具合を修正
2012/02/03 1.01 (不具合修正)
  ・System.String型のCLRオブジェクトを空文字列で作成すると
   落ちる不具合を修正。
  ・System.String型のCLRオブジェクトが全角文字を含む場合に、
   インデックス指定による部分文字列取得が正しく行えない
   不具合を修正。
2012/01/24 1.00 (機能追加/変更)
  ・システム関数 _exec_dllapi() を追加。
    これにより DLL 内の関数呼び出しに対応。
  ・システム関数 _create_clr_object() 及び _create_clr_type() を追加。
    これにより .NET アセンブリからオブジェクトを作成して
    使用できるようにした。
  ・システム関数 _create_com_object() 及び _create_com_type() を追加。
    これにより COMサーバーのクライアントとなるオブジェクトを
    作成して使用できるようにした。
  ・CLR 列挙型に対して | 演算子(ビット和)を新規導入。
  ・CLR タイプオブジェクト及び CLR列挙型/COM列挙型に対して
    :: 演算子による静的メンバへのアクセスを可能にした。
  ・CLR タイプオブジェクトに対して -> 演算子(型キャスト)
    を新規導入。
  ・システム関数 _malloc()、_free()、_mem_read() を追加。
  ・変数属性の導入。変数属性 global を追加。
  ・コンソール版ではエラーメッセージをメッセージボックス
    ではなく標準出力で表示するように変更。
  ・システム関数 _get_version() の追加。

(不具合修正)
  ・数多くの不具合修正を実施。
    主な修正不具合は、
        ・配列がネストしている場合に子配列の要素の値が変更でき
          ない場合がある
        ・特定の文字列リテラルが正常に構文解析できない
    その他細かいものも含めて多数。
2009/04/18 0.93
(本バージョンは未公開)
(機能追加/変更)
  ・システム関数 _shell_open() を追加
  ・システム関数 _is_null() を追加
  ・Leap.dll の以下の新 API を新設
      RegAppFunctionEx()
      GetExecRetValue()

(不具合修正)
  ・_exec_script() に相対パスを渡したときは、呼び出した
    スクリプトファイルからの相対パスとして処理するように変更
2008/12/03 0.92 (機能追加/変更)
  ・_echo() の改行文字を LF から CR + LF に変更
  ・_load_script() に相対パスを渡したときは、呼び出した
    スクリプトファイルからの相対パスとして処理するように変更

(不具合修正)
  ・アンインストール時にベンダーキーが空でないときは削除
    しないように修正
  ・Windows が Cドライブ以外にインストールされている環境で
    _exec_con() が失敗する不具合を修正
2008/11/18 0.91a (機能追加/変更)
  ・CRT8.0のランタイムがない環境でも動作するように、CRTを
    静的リンクするように変更
2008/11/17 0.91 (機能追加/変更)
  ・システム関数 _set_textcolor() の追加
  ・
システム関数 _get_clipboardtext() の追加
  ・
システム関数 _set_clipboardtext() の追加
  ・
システム関数 _exist_file() の追加
  ・_open_console() で開いたコンソールを勝手に閉じないように変更
  ・スクリプト処理速度の向上
  ・サンプルスクリプトの追加

(不具合修正)
  ・メモリリークの修正
  ・マルチスレッド動作時の排他処理の修正
  ・_stoi() に不正な文字列を渡した場合の返り値を修正
  ・文字列と整数値の乗算が未実装だったので実装
  ・一部エラーに関して、エラー発生時の文言が「不明なエラー」
    となっていたのをエラー内容に即した文言に修正
2008/11/11 0.90   ・初公開


戻る