etolisp 進捗 (6)
San Jose と California 中北部の森の余韻に浸っていたら,この一週間はあっという間に過ぎてしまった。
今日は一旦休憩して parser の改良と print 系の関数を実装。parser はカッコとコッカとコメントしか考慮しないインチキなものだったので,ちゃんと「'」とか「#'」とか「&」とかにも対応できるようにコンテキストを構造化した。出力関数は Ruby の p と,C の puts に加えて,prin1,princ,terpri,format 辺りを実装。 format が思ったよりリッチなのでどこまで実装するか悩む。あまり言語の勉強にはならないかも知れないけど,こういう細かいところにチマチマ拘りたくなるという,悪い癖が出てきて疼く…。Lisp をいじってる時点で既にトラップに嵌ってるから,何も怖いものはないはずなんだが。
~~/name/ ~i[text0;...~;textn~] ~n{text~} ~(text~) ~w,n,m,p<+text0~;...~;textn~>
この辺りがくせ者。と,めんどくさそうなのをリストアップしてみたら意外と少ない。正規表現が使えたら楽なんだが。二番めのやつが一番よく分からない
~/name/
Calls the function whose name is name with at least four arguments: the stream, the next argument, a value that is true if : was used, and a value that is true if @ was used ---- plus any parameters given to the directive.
なんだこれ?