stack式CUI計算機 芳ステム2021 (YOSHISUTEMU_2021) 本プログラムの名称は、リーナス氏がLinuxだから 僕の下の名前から「芳ステム」としました。 YOSYSTEMという名称が使用している人がいそうなので 英語表記はローマ字で「YOSHISUTEMU」とします 今年が2021年なので2021です 来年も作成していれば、2022として発表すると思います なんとなく、なんとかシステムという名称は考えていましたが 元ネタはたぶん将棋の藤井システムです 自分は振り飛車党で藤井システムは影響受けましたw でもコンピューターと対戦して8級くらいの強さですw ・製作期間 大体、プログラミングに2ヶ月間 マニュアル執筆。製作。TEST兼SAMPLE制作他で 2ヶ月間くらい 計4ヶ月間くらいだと思います 他にも、製作前にWHITESPACEをHSPに移植しようとして STACKのモジュールとか、HEAPのモジュールとか作成したのを 転用したり 演算の移植、命令の移植とかしてたのを 転用しました ・はじめに このプログラムはCUIプログラムのスタック処理計算機です。 計算機とは言っても、プログラム言語の初期スクリプトとして 電卓を作成している書式もままあって そっちの方向で作成した計算機です ・文字列読み込みの方針 このプログラムの文字列の処理は 1文字づつ字句解析をしているのではなく 先頭の半角スペースとタブを削除して 行末の半角スペースとタブを削除して 文字列を比較して各命令と比較しているだけです ちなみに一度に使用できる命令名もしくは数字列は一つだけです ・このプログラムの由来 計算を行い計算式を表示するかんじは 「プログラマーのためのソースコードを読む技術 他人が書いたプログラムの行間を読み取るコツ」 著者 高木 信尚 (著) という書籍の中の章の内容を参考としました 全体としての構造は 「やさしいインタプリタの作り方入門」 著者 日向俊二 (著) という書籍の第二章の内容を参考としました 構成としましてはそれらを参考とすると共に 動作は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モードで起動して読み込んで下さい ・お約束 このプログラムは色々と参考にしたプログラムがあり 著作権を主張出来るかはわかりませんが 主張出来る範囲で著作権を主張します このプログラムを使用したことによる 損害等においては、自己責任でよろしくお願いします 免責ってことで HN:製作著作:高畑ラボ(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> 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で作る奇妙なプログラミング言語」 毎日コミュニケーションズ。2008/12 日向俊二氏著「やさしいインタープリタの作り方入門」 株式会社カットシステム2009/3 まつもとゆきひろ氏著「まつもとゆきひろ 言語のしくみ」 日経Linux 2016/12 高木 信尚氏著 「プログラマーのためのソースコードを読む技術 他人が書いたプログラムの行間を読み取るコツ」 技術評論社 2010/6 石田綾氏著「スモールコンパイラの製作で学ぶプログラムのしくみ」 株式会社技術評論社。平成16/12 randy氏著「いまどきのプログラム言語の作り方」 毎日コミュニケーションズ 。2005/11 リーナス・トーバルズ氏、デイビッド・ダイヤモンド氏著 「それがぼくには楽しかったから」 小学館プロダクション。2001/5 他にもC版WHITESPACE言語。C++版WHITESPACE言語 Ruby版WHITESPACE言語等を参考にしたり写経したりしました