Open6
Ruby で scheme 処理系の実装をしてみる
以下の書籍を参考に言語処理系を実装してみる
CSの基礎を大学で学んでいないので、そもそもプログラミング言語処理系って何、という疑問からRubyソースコード完全解説を読んでみたものの、C言語がうまく頭に入ってこなかったので実践
thor を使うとコマンドラインで直接呼ぶのが楽そう
thor で呼び出すクラスの中でKernel.#gets
するとエラー出る...?
`gets': No such file or directory @ rb_sysopen
thor の ドキュメント(or コード)を読んでみる
公式HP
公式HPはそんなに情報が多くない。
でもサブコマンドやクラスオプションはちょっと面白そう、ちょっとしたCLIコマンドなら楽しく作れるみたい。
Github の wiki
どちらかというとこちらの方が情報量が多い。
Actions - Thor::Actions are helpers for your Thor tasks that make typical actions, like file system interaction or command line user dialogue, easier.
今回知りたい情報は actions 周りにありそうなのでそこを確認していく。
エラー原因はこれのような気もする
-
ARGVとgetsの併用
thor によるエラーではなくて、ARGVとgetsを合わせて使っているためエラーとなった
thor のソースを見たところ、デフォルト値としてARGVを用いている
自身で書いたコードではARGVを使用していないため、原因はここ
下記のエラーはこれを考慮せずに Thor#start
メソッドを呼び出したため発生
`gets': No such file or directory @ rb_sysopen
Thor のソースを読んでみる
Thor#ask, Thor#say はどちらも Thor::Shell::Basic
なので、Actions ではなく、Thor 本体の機能で十分そう