TinyHSPは最軽量のHSPを作成することを目標にしたプロジェクトです。マルチプラットフォーム(Windows・Linux・macOS)で動作するインタプリタを作成することを目指しています。
Palo Alto Tiny BASICを参考にした仕様になっています。
- プリプロセッサ
- なし
- 命令
- pset
- color
- redraw(引数はなし。redraw 1に相当)
- title
- wait
- 関数
- rnd(randomize使用時に相当)
- 構文
- 繰り返し: repeat...loop(カウンタ変数cntはなし)
- ジャンプ: *ラベル・goto・gosub・return
- 条件分岐: if 比較式 : 処理(else文はなし)
- 変数
- 変数はa-zの26個のみ(数値型)
- 配列は@のみ(一次元配列、数値型)
- コメント
- ;(行頭のみ)
- システム変数
- システム変数key(stick key,1+2+4+8...相当のキー情報が代入される)
- 演算子
- 比較演算子: ==, !=, >, >=, <, <=
- 算術演算子: +, -, *, /
- その他
- ウィンドウサイズは640x480で固定
- 字句解析器を実装する
- 構文解析器を実装する
- 再帰下降パーサを手書きで作る
- 難しいようなら文法を多少変更する
- 手書きが難しいようならyaccを使用する方法に切り替る
- それでも難しいならコンパイラの勉強をし直す
- 構文木生成コードを実装する
- 構文木実行コードを実装する
- メモリ管理コードを実装する
- グラフィック関連の処理を実装する
このプロジェクトは__楽しんで開発しよう__という基本方針で動いています。コミッター向けのルールは次のようなものです。
- 開発すること自体を楽しむ
- コミットメッセージは自由に書く
- C言語で実装する
- GUIはOpenGL+GLFWで実装する
1から作ることの楽しさを味わうのはもちろん、アルゴリズムに悩んだり難しい処理を実装したり、そういったことを含めて開発を楽しめればと思っています。
TinyHSPの開発に興味のある方は、以下のどの方法でも開発に貢献できます。
- プルリクエストを送る
- リポジトリをフォークする
- ローカル環境でコードを変更する
- プルリクエストを送る
- 独自に開発して知らせる
- 好きな言語でTinyHSPを実装する
- ソースコードを公開し、なんらかの方法で知らせる
- 質問や不具合・提案などのissuesを立てる
- ソースコードをダウンロードし、動作テストをする
不具合の報告やソースコードは、以下の方法で知らせることができます。
- ツイッターでつぶやく
- tinyhspの文字とソースへのリンクと入れる
- ハッシュタグ#tinyhspとソースへのリンクを入れる
- issuesを立てる
- 掲示板に投稿する(TinyHSPの提案)
このリポジトリはおおらかに管理しています。
- コーディングスタイルの指定はありません: 基本的にMozillaのコーディングスタイルを念頭に置いて書いてありますが、それに合わせる必要はありません。自由に書いていただいて大丈夫です。
- 自由に新しいディレクトリを作成してください: コア部分とGUIはC言語で記述しますが、それ以外の部分や新しいディレクトリ内の使用言語は指定しません。自分の使いやすい言語で実装してください。
- コア部分の書き換えも受け付けています: その際、多少コードが動かなくなるとか、コンパイルが通らなくなるといったミスは笑って見過ごす、くらいの気軽さで進めていければ、と思っています。
- 管理人の側がミスすることがあるかもしれません: Github及びGitの扱いにそれほど慣れていないために、ミスすることがあるかもしれません。あらかじめご了承ください。
Githubでは掲示板のスレッドのような機能「イシュー」を使うことができます。質問や提案がありましたら、ご自由にIssuesのページからイシューを立てていただければと思います。
※ 注意すべき点として、イシューは削除することができません。イシューを立てる際には内容をよく吟味するようお勧めします。
- きっかけ: TinyHSPの提案
TinyHSPはMITライセンスです。