- 1 名前:デフォルトの名無しさん [04/01/10 03:45.net]
- 第四世代
- 910 名前:デフォルトの名無しさん [2025/06/14(土) 06:37:53.81 ID:3Q/jS2n6.net]
- forthソースファイルをunices上で実行可能ファイルにする一般的な方法ってある?
PC上を想定していて超リッチなgforthなら #! 機構を想定して#!を\のシノニムとして定義してくれてて助かるんだけれども、これのない場合にも対応したい 思い付いたのは : && true ; \ exec forth "$0" -- "$@" forth側: ワード&&(普通未定義)をtrue=-1としてコロン定義、後はコメント sh側: :コマンドが成功したらtrueコマンドを実行、次にインタプリタを起動 なんだけれどsh側では " exec" "forth" ... とトークン化されてcommand not found \execとスペース開けずに書けたら良いんだけどするとforthはコメントとして認識しない 何かいい知恵あったら教えてください
- 911 名前:デフォルトの名無しさん [2025/06/14(土) 06:52:21.04 ID:3Q/jS2n6.net]
- >>902
forthのrollは n roll でn個先までを1回まわすけど postscriptのrollは n m roll でn個先までm回まわせてより強力なのよね mは負でも可で逆回転もできる あんまりコードに数値を入れるのはbad practiceとはいえforth書いてると時々欲しくなるやつ…
- 912 名前:デフォルトの名無しさん [2025/06/21(土) 00:54:36.13 ID:flEjrxpy.net]
- >>910だけど自己解決
: && true ; ( exec forth "$0" -- "$@" ) で行けた 潔癖症ではないから定義されたワード&&は気にしない、たぶん処理系定義の&&は見たこと無いこら潰す事もないはず 一応win32forthとか複数の処理系で forget && て消せたと思うんだけれど、今試してみたらgforthに無いからforgetは非標準ワードなのな
- 913 名前:デフォルトの名無しさん [2025/06/21(土) 11:16:23.88 ID:fGhLJfIJ.net]
- こら
- 914 名前:デフォルトの名無しさん [2025/06/26(木) 14:21:09.64 ID:nmyewptE.net]
- 神経質すぎじゃねる
まあforgetはmarkerで実装できそうな気がする
- 915 名前:デフォルトの名無しさん [2025/10/12(日) 02:30:37.41 ID:DKsy7+ZR.net]
- PCで触ってないからunix(shebang)+forth処理系のハックは詳しくないんだけれども、まあ面白そうだね
ワードを消すforgetは任意のワード対象、で良かったかな(たしかそう) しかしmarkerは事前に設定したマーカーまでオフセットずらして巻き戻し、よってそれまでのワードがリセットされる仕組みだったはずだから、任意ワードを、特に名指しで消すには不向きでは いやまあ消せるんだからマーカーの記録されてるメモリを退避したりリカバリしたり丁寧に管理してやればできるはずだが…
- 916 名前:デフォルトの名無しさん [2025/10/17(金) 05:21:31.52 ID:D1Ebmx1L.net]
- 別に余計なワードがあろうと問題なくね
たまたま同じ名前のワードを定義したらそれが有効な訳だし ブートストラップ用途なら別に潰されても困らん、ブートストラップにしか使わんのだからな
|

|