3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

日本語プログラミング言語Mindのバージョン9βで最小Tcllibのビルドを試みる

Last updated at Posted at 2025-01-16

はじめに

日本語プログラミング言語Mindの開発元@killyさんの御厚意により日本語プログラミング言語Mindのバージョン9βをご提供いただいております。前回の記事までは9βの言語拡張機能「評価」でTcl乱数関数を定義してみております。現状の9の仕様では言語拡張機能「評価」はguilib側に組み込まれているとのことで、わたしとしては若干想定外でした。今後の予定としてはtclのRDBM接続機能todbcとかでCGIのバックエンドとか構築できないかとか妄想しておりました。

昨年の3月ごろまではMind8のC言語ランタイムを拡張してMind単語を拡張するということもチャレンジしておりましたので、Mindの内部構造はおぼろげながらハンドインレベルである程度理解しております。

ということから、現在公開されている情報を元に最小Tcllibというのをビルドできないかというお題にチャレンジでしてみます。今回はC/C++2020のmake環境が整っていないので、Mind側だけでどこまでいけるかというのがお題です。

お題のソースコード

前々回の記事への@killyさんのコメントであきらかになった、「評価」の前段階のユーティリティ単語を下記のようにライブラリ化してみます。

tclライブラリ

tcllib.src
コマンドラインは 文字列実体 長さ 2048桁。

コマンドラインにトークンを設定とは		処理単語 .S (トークン → ・)
	(トークンを)	コマンドラインに 入れ。

コマンドラインにトークンを追加とは		処理単語 .S (トークン → ・)
	(トークンを)	コマンドラインに 追加し。

コマンドラインにトークンを一文字追加とは	処理単語 .N (文字 → ・)
	(トークンを)	コマンドラインに 一文字追加し。

コマンドラインに空白とトークンを追加とは	処理単語 .S (トークン → ・)
	半角空白を	コマンドラインに 一文字追加し
	(トークンを)	コマンドラインに 追加し。

コマンドラインに空白と数値トークンを追加とは	処理単語 .N (数値 → ・)
		_バッファは 文字列実体 長さ 24桁
	半角空白を	コマンドラインに 一文字追加し
	(トークンを) _バッファをつかい 文字列変換し
			コマンドラインに 追加し。

お題のソースコードのMind9βでのビルド

これをfileライブラリにリンクしてビルドしてみます。

C:\developments\vscode\mind9>mind tcllib file       

日本語プログラミング言語 Mind Version 8.11 for Windows
          Copyright(C) 1985 Scripts Lab. Inc.
コンパイル中 .. 終了

C:\developments\vscode\mind9>

これはいけました!@killyさんが例示されたMind9のユーティリティ単語に

コマンドラインに空白と囲みトークンを追加

というのがあったのですが、これはかっこ関連の単語が未定義となりましたので、とりあず除外しました。Tclコマンドの「 { 」「 } 」はとりあえず文字列側で対応できそうなので、最小限のインターフェースをとれればよいという点ではマストではないかなと判定しました。

乱数ライブラリ

前回の記事で、とりあえず乱数ライブラリ部分だけの定義としたソースファイルです。前回と同じです。「捨て」てるのは手抜きです:joy:

randomtcl.src
疑似乱数とは 関数 小数出力 (・ → 小数)
    ※ 0.0以上~1.0未満 の 乱数を戻す

    「expr { rand() }」を コマンドラインにトークンを設定し
     コマンドラインを 評価した値を 数値変換・小数として
     捨てる。

種子指定の疑似乱数とは 関数 整数入力 小数出力 (変数 → 小数)
    ※ シード値指定の0.0以上~1.0未満 の 乱数を戻す  
        種子は 変数

    種子に 入れ
    「expr { srand(」を コマンドラインにトークンを設定し
    種子を  文字列変換し コマンドラインにトークンを追加し
    「)}」を コマンドラインにトークンを追加し
     コマンドラインを 評価した値を 数値変換・小数として
    捨てる。

テスト用コード

前回のテストコードはGUIで書いていましたが、今回はコンソールベースです。

randomtcl3.src
"randomtcl.src"を コンパイルする。
簡易小数表示とは (小数 → ・)
	8桁で 小数形式で表示し 改行すること。

    ※ テスト用
メインとは

    疑似乱数()を 簡易小数表示し
    疑似乱数()を 簡易小数表示し
    種子指定の疑似乱数(10)を 簡易小数表示し
    種子指定の疑似乱数(10)を 簡易小数表示し
    種子指定の疑似乱数(30)を 簡易小数表示すること。  

お題のソースコードのMind9βでのビルド

これを先ほどビルドしたtcllibライブラリにリンクしてビルドしてみます。ポイントは標準fileライブラリがC言語定義された中核単語「評価」「評価した値」をインクルードしているかどうかです。

C:\developments\vscode\mind9>mind randomtcl3 tcllib

日本語プログラミング言語 Mind Version 8.11 for Windows
          Copyright(C) 1985 Scripts Lab. Inc.
コンパイル中 .. 終了
2 個のエラーが有ります。

残念!はやりだめでした:joy:

randomtcl3.inf
randomtcl3.src 5 行目でエラー。行内容は、
     コマンドラインを 評価した値を 数値変換・小数として
      要因1:"評価した値"は未定義の単語です。

randomtcl3.src 16 行目でエラー。行内容は、
     コマンドラインを 評価した値を 数値変換・小数として
      要因1:"評価した値"は未定義の単語です。

2 個のエラーが有ります。

今回は「評価」は使っていないので、「評価した値」で2か所未定義エラーとなっていますね。

cwordsw.wrd
評価は アセンブラ定義の処理単語。
評価した値は アセンブラ定義の処理単語。

ソースはmind2tcl.cとそのインクルードにあるみたいなので、makeしなおせる環境があればtcllib(最小限版)をビルド通過させることもできなくはなさそうですね。このあたりは開発元の@killyさんの企画しだいかと思いますが、Mind9.xとかでぜひご検討ください。

おわりに

いかがでしたでしょうか?なにかの参考になれば幸いです。まだほんのさわりの部分ですが、今年で生誕40周年を迎える日本語プログラミング言語Mind、ついに新バージョンがベールをぬぎはじめます!

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?