#gosh test.scm
gosh: "read-error": Read error at "./test.scm":line 3: dot in wrong context
cat -n test.scm
1: (define PUNCT '((:. . "どっと") (:/ . "すら") (:? . "はてな")
2: (:: . "ころん") (:- . "まいなす") (:+ . "ぷらす")
3: (:' . "くぉーと") (:@ . "あっと") (:& . "あんど")
4: (:( . "かっこ") (:) . "こっか") (:! . "びっくり")
<sinp>
#ちょっと、ねたっぽいですが、:' とか :( は、使えないんですね。
#それは、そうと、記号類は皆さん、どう発音されてます?
#先日、shiroさんに助言頂いた、gaucheで喋るプログラム、取り合えず版が出来ました。
#ありがとうございました。
#あら、時間が経つと別になっちゃうんですね。
#リミット時間は、どれくらいなのかな?
#FUJI ROCKのリアルタイムレポートをみてると、日本中の体力と忍耐力が苗場に集まってるような錯覚を憶える
#s/憶/覚/
#@sakae emacs での編集は scheme-mode でやってるんですかね?
#leque さんの gauche-mode だと :' とかは違う色で表示されるようです。
#はい、emacs です。正常なのは、灰色、異常なのは、通常のテキスト色でしたので、何かあるぞと思ったら、案の定でした。
#苗場山でFuji Rockとはこれ如何に
#keywordに出来る文字って、制限ありと理解しました。
#マニュアルの字句構造の項目を見ても詳細は書いてないなぁ。
#ほぼシンボルと同じと思っていいんだろうか? < キーワード
#gosh> (make-keyword "'")
:'
gosh> (make-keyword "(")
:(
gosh>
#作れないことはないので、リーダーの問題なのかしら
#シンボルと違って | で囲む記法は無いみたいですね。
#ほとんどキーワード引数のための仕組だと思えばそういったわかりにくい名前にするのはどちらにせよ好ましくないですけどね。
#あーそうか。シンボルと似た構文を許した方がいいかなあ。:|'| とか。
#要するにちゃんと考えてなかったってだけだけど。こういうキーワードを使うことは推奨しないけれど、例外があるのは気持ち悪い。
#gauche-package compile は Windows 環境でも sh を使うんですね。
#gauche-package を使うような人は sh くらいは入れてるでしょうけど。
#私の場合、インストール場所が /bin/sh じゃなかったんでパスだけ修正したら gcc の呼出し等には成功しているようです。
#gauche-packageについては、windows native環境のことは全く考えてないです。
#どこまでを仮定するか、という話もあります。MSVC版ならVC++のバッチコンパイラを呼ぶのか、とか。
#mingwまでサポートするなら、mingw+msysってことにしてもいいかなとは思うんですが、msys使うにしてもいろいろ修正は必要だと思います。
#ただ、何故か genstub が呼出されてなくてコンパイル対象のファイルが無い旨のエラーになるんですけど、これって Mingw 固有の問題でしょうか?
#コマンドじゃなくて gauche-package から genstub 相当のモジュールを直接呼んでいるように見えるのですが。
#なんで c ソースが生成されてないんだろう…
#trunkだとcgen-genstub関数を直接呼んでますね。Linuxではこれで使えてます。
#私は msys にこだわってますけど、 Cygwin から -mno-cygwin をつけてコンパイルすれば割とすんなり通ったりしますし、 VC を使うにしてもコンパイラとリンカ以外は Cygwin 環境を使うとかいった方法をとっているプロジェクトもありますね。
#cgen-genstubには特にwindowsファイル名に依存するようなところは無さげだが…なぜだろう
#変な文字を含んだキーワードをreader/printerでサポートした。
#gosh> (make-keyword "'")
:|'|
gosh> (keyword->string :|(|)
"("
#なお、:' とか :( とかは 「:というキーワード」+「'とか(などのトークン」として読まれます。
#シンボルと同じルールですね。
#ありゃ、やっぱ gcc がコンパイルに失敗してるから genstub の前で止まっただけっぽい
#いや、シンボルと同じルールでいいやと最初思ってそう実装したんだけど、シンボルと違って':'を読んだ時点でkeywordであることが確定するので、最初の文字に関するエスケープは行わなくてもいいということに気づいた
#:1とか::は:|1|とか:|:| などとprintしなくてもいいってこと。
#もちろん :|1| を読むことはできるけど、印字時には :1 になる。
#なるほど。 用途からするとちょっとでも簡単な表記になった方がよいですよね。
#gauche-gl を make したときのメッージがこんな感じでした。
#gauche-gl を make したときのメッージがこんな感じでした。
/d/gauche/bin/gauche-package compile --verbose \
--cflags="-DPACKAGE_NAME=\"Gauche-gl\" -DPACKAGE_TARNAME=\"gauche-gl\" -DPACKAGE_VERSION=\"0.4.4\" -DPACKAGE_STRING=\"Gauche-gl\ 0.4.4\" -DPACKAGE_BUGREPORT=\"shiro@acm.org\" -DX_DISPLAY_MISSING=1 -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 " --ldflags="" --libs="" \
libgauche-math3d gauche-math3d.c math3d-lib.stub
gcc -std=gnu99 -c -Id:/gauche/lib/gauche/0.8.14/include -DPACKAGE_NAME="Gauche-gl" -DPACKAGE_TARNAME="gauche-gl" -DPACKAGE_VERSION="0.4.4" -DPACKAGE_STRING="Gauche-gl\ 0.4.4" -DPACKAGE_BUGREPORT="shiro@acm.org" -DX_DISPLAY_MISSING=1 -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -o 'math3d-lib.o' 'math3d-lib.c'
d:/gauche/bin/gauche-package: compile: No such file or directory
*** ERROR: command execution failed: gcc -std=gnu99 -c -Id:/gauche/lib/gauche/0.8.14/include -DPACKAGE_NAME="Gauche-gl" -DPACKAGE_TARNAME="gauche-gl" -DPACKAGE_VERSION="0.4.4" -DPACKAGE_STRING="Gauche-gl\ 0.4.4" -DPACKAGE_BUGREPORT="shiro@acm.org" -DX_DISPLAY_MISSING=1 -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -o 'math3d-lib.o' 'math3d-lib.c'
#で、失敗したはずのコマンドをコピペで sh に貼り付けると問題なくコンパイルできるんです。
#エラーハンドリングの問題かな?
#失敗した後に、math3d-lib.cは残ってるんですか?
#いや、無いです。
#あれ? 無いならコピペでコンパイルできるはずないな。 わけわかんないこと言ってるな。
#なんかの表紙な混ざっただけで、結局は genstub が出来てないだけか…。
#math3d-lib.cはgenstubが成功しててもgccがエラーを投げると消されちゃいます。
#なのでこのことからだけでgenstubが出来てないかどうかはわからない。
#no such file or directoryは誰が出してるんだろう。
#gccがmath3d-lib.cを見つけられないって場合は "gcc: math3d-lib.c: No such file or directory" とかになりそうだが
#sys-unlink を消してみたら math3d-lib.c は残ってました。
#それっぽいのが出来てます?
#内容的にはちゃんと stub から変換されたものらしく見えます。
#単独でコンパイルしたらコンパイルできます。
#gauche-package から gauche-package を呼出すことってあります?
#もしかして、gccの実行が返すステータスコードがうまく取れてないとか
#/bin/sh -c "gcc..." の実行が0以外のステータスコードを返したらエラーとみなす
#んだけど、mingwのrun-processでステータスコードってちゃんとサポートしてたかなあ
#でもno such file or directoryのメッセージは説明つかんな。
#最新のコミットでChangeLogに変な行が混ざってました
#@@ -43,6 +51,7 @@
* src/symbol.c (Scm_Intern): Doh! Scm_Intern wasn't MT-safe. Fixed.
+>>>>>>> .r6697
2009-06-15 Shiro Kawai <shiro@acm.org>
* src/gauche/vm.h (ScmVM): Use of queueNotEmpty flag had a race
#干渉があったときに svn が作るやつです。
#ChangeLog はコンパイラ通りませんから気付きにくいですね。
#干渉じゃなくて衝突か。
#おっとと。
#aaaa