stack式CUI計算機 芳ステム２０２１ (YOSHISUTEMU_2021）

本プログラムの名称は、リーナス氏がLinuxだから
僕の下の名前から「芳ステム」としました。
YOSYSTEMという名称が使用している人がいそうなので
英語表記はローマ字で「YOSHISUTEMU」とします
今年が２０２１年なので２０２１です
来年も作成していれば、２０２２として発表すると思います

なんとなく、なんとかシステムという名称は考えていましたが
元ネタはたぶん将棋の藤井システムです
自分は振り飛車党で藤井システムは影響受けましたｗ
でもコンピューターと対戦して８級くらいの強さですｗ

・製作期間
大体、プログラミングに２ヶ月間
マニュアル執筆。製作。TEST兼SAMPLE制作他で
２ヶ月間くらい
計４ヶ月間くらいだと思います
他にも、製作前にWHITESPACEをHSPに移植しようとして
STACKのモジュールとか、HEAPのモジュールとか作成したのを
転用したり
演算の移植、命令の移植とかしてたのを
転用しました


・はじめに
このプログラムはCUIプログラムのスタック処理計算機です。
計算機とは言っても、プログラム言語の初期スクリプトとして
電卓を作成している書式もままあって
そっちの方向で作成した計算機です

・文字列読み込みの方針
このプログラムの文字列の処理は
１文字づつ字句解析をしているのではなく
先頭の半角スペースとタブを削除して
行末の半角スペースとタブを削除して
文字列を比較して各命令と比較しているだけです
ちなみに一度に使用できる命令名もしくは数字列は一つだけです

・このプログラムの由来
計算を行い計算式を表示するかんじは
「プログラマーのためのソースコードを読む技術 
他人が書いたプログラムの行間を読み取るコツ」
著者 高木 信尚 （著）
という書籍の中の章の内容を参考としました
全体としての構造は
「やさしいインタプリタの作り方入門」
著者 日向俊二 （著）
という書籍の第二章の内容を参考としました
構成としましてはそれらを参考とすると共に
動作はWHITESPACEという簡単言語を由来としています
WHITESPACEの理解は
「Rubyで作る奇妙なプログラミング言語」
著者 原悠（著）
という書籍を読んで理解しました
ただRubyの生産性の高さを利用しまくっていて
HSPに移植するのは大変そうです
スクリプトとしましては
NET上にある
C版。C++版。Python版で学びました
Python版Whitespace言語はMITライセンスっぽいです
このプログラムの元のプログラムです

・FILE構成

・stack_calc_芳ステム_2021_single.exe
芳ステム2021をシングルモードで起動する実行FILEです
シングルモードとは一行づつ入力していくかんじの
stack式計算機です

・stack_calc_芳ステム_2021_multi.exe
芳ステム2021をマルチモードで起動する実行FILEです
マルチモードとはコマンドを打ち込んだFILEから
読み込んでまとめて実行するかんじの
stack式計算機です

・stack_calc_manual.exe（ショートカット）
芳ステムのマニュアルです
HSPで作成しました

・srcフォルダ
芳ステム2021のソーススクリプトが入っています
singleモードとmultiモードはマクロ分岐の
同じスクリプトに入っています

intp_2021.hsp
メインのFILEです

HSP_intp_stack.hsp
スタックの処理と演算処理のFILEです

HSP_intp_heap.hsp
ヒープの処理のFILEです

HSP_intp_easy_string.hsp
簡単な文字処理のFILEです

・manualフォルダ
芳ステム2021のマニュアルはHSPで作成していて
そのソーススクリプトが入ってます
マニュアル内でREADMEだのTEST_SAMPLEだの色々参照してるので
結構、ごちゃごちゃになってて申し訳ない

・test_and_sampleフォルダ
芳ステム2021のsample兼TESTコードが入ってます
芳ステム2021をmultiモードで起動して読み込んで下さい

・お約束
このプログラムは色々と参考にしたプログラムがあり
著作権を主張出来るかはわかりませんが
主張出来る範囲で著作権を主張します

このプログラムを使用したことによる
損害等においては、自己責任でよろしくお願いします
免責ってことで

ＨＮ：製作著作：高畑ラボ（Y_repeat）

mail to：
y.tack2010@gmail.com
gmailへのメールはたまに届かないことがあります
bat20170515@yahoo.co.jp
yahooのメルアドはそんなにcheckしていません

このプログラムの元のPython版WHITESPACE言語は
MITライセンスっぽいです
http://code.activestate.com/recipes/577110/
色々参考にしましたが一番参考にしたプログラムが
MITライセンスという範囲で
このプログラムのライセンスをMITライセンスとします

Copyright (c) <2021> <高畑ラボ（Y_repeat）>
以下に定める条件に従い、本ソフトウェアおよび関連文書のファイル（以下「ソフトウェア」）の複製を取得するすべての人に対し、ソフトウェアを無制限に扱うことを無償で許可します。これには、ソフトウェアの複製を使用、複写、変更、結合、掲載、頒布、サブライセンス、および/または販売する権利、およびソフトウェアを提供する相手に同じことを許可する権利も無制限に含まれます。上記の著作権表示および本許諾表示を、ソフトウェアのすべての複製または重要な部分に記載するものとします。

ソフトウェアは「現状のまま」で、明示であるか暗黙であるかを問わず、何らの保証もなく提供されます。ここでいう保証とは、商品性、特定の目的への適合性、および権利非侵害についての保証も含みますが、それに限定されるものではありません。作者または著作権者は、契約行為、不法行為、またはそれ以外であろうと、ソフトウェアに起因または関連し、あるいはソフトウェアの使用またはその他の扱いによって生じる一切の請求、損害、その他の義務について何らの責任も負わないものとします。

注：ライセンスの日本語訳は原文の英文と意味合いにズレがあることが予想され　あくまで参考扱いでありライセンスの正確な定義は原文の英文とします

Copyright (c) <2021> <TAKABATAKE_LABO (Y_repeat)>

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be includedin all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

参考文献

原悠氏著「Rubyで作る奇妙なプログラミング言語」
毎日コミュニケーションズ。２００８/１２

日向俊二氏著「やさしいインタープリタの作り方入門」
株式会社カットシステム２００９/３

まつもとゆきひろ氏著「まつもとゆきひろ　言語のしくみ」
日経Linux ２０１６/１２

高木 信尚氏著
「プログラマーのためのソースコードを読む技術 
他人が書いたプログラムの行間を読み取るコツ」
技術評論社　２０１０/６

石田綾氏著「スモールコンパイラの製作で学ぶプログラムのしくみ」
株式会社技術評論社。平成１６/１２

randy氏著「いまどきのプログラム言語の作り方」
毎日コミュニケーションズ 。２００５/１１

リーナス・トーバルズ氏、デイビッド・ダイヤモンド氏著
「それがぼくには楽しかったから」
小学館プロダクション。２００１/５

他にもＣ版WHITESPACE言語。Ｃ＋＋版WHITESPACE言語
Ruby版WHITESPACE言語等を参考にしたり写経したりしました