あどばんすど NScLisper オフィシャルガイド
土曜日, 12月 29th, 2007zickです。
リリカル☆Lispの通販特典としていた
『あどばんすど NScLisper オフィシャルガイド』
を一般公開しようかと思います。
こちらからご自由にお持ち帰り下さい。
内容はNScripterでのLispインタプリタの作り方をかなり大雑把に書いてあるという感じです。
テキトーなことを書いてあるので鵜呑みにしないようにしてください(笑)
zickです。
リリカル☆Lispの通販特典としていた
『あどばんすど NScLisper オフィシャルガイド』
を一般公開しようかと思います。
こちらからご自由にお持ち帰り下さい。
内容はNScripterでのLispインタプリタの作り方をかなり大雑把に書いてあるという感じです。
テキトーなことを書いてあるので鵜呑みにしないようにしてください(笑)
お久しぶりです。zickです。
数日前、『Lispの歌』という言葉を目にし、一体何なのかと思ったら、
『かっこうの歌』のことだったんですね。(「かっこう→括弧」という洒落)
某所でネタとしてLisperが実際に歌った由緒正しきモノだそうです。
—
話は変わりますが、相変わらずErlang触ってます。
それで、今はソケットの勉強をしているのですが、
練習という名目で毒電波(SSTP)を飛ばしてみました。
即席で作った怪しげなスクリプトを読み込んで、それに基づいてErlangがSSTPを飛ばします。
毒電波を飛ばしているErlangの関数はこんな感じです。
send_and_receive(Str) -> {ok,Sock} = gen_tcp:connect("localhost", 9801, [binary, {packet, 0}]), ok = gen_tcp:send(Sock, Str), receive_data(Sock, []). receive_data(Sock, SoFar) -> receive {tcp,Sock,Bin} -> receive_data(Sock, [Bin|SoFar]); {tcp_closed,Sock} -> list_to_binary(lists:reverse(SoFar)) end. send_sstp(Body, Ver, Retry) -> Header = "SEND SSTP/"++Ver++"\r\n" "Sender: "++?SENDER++"\r\n" ++Body++ "Charset: "++?CHAR_SET++"\r\n\r\n", case {Retry, send_and_receive(Header)} of {true, <<"SSTP/1.1 409",_/binary>>} -> timer:sleep(2000), send_sstp(Body, Ver, Retry); {_, Any} -> Any end.
怪しげなスクリプトはこんな感じ。
%ラベルは*から始まり、命令は^から始まります %字句は全て改行区切りという不気味な作りです(笑) *start \h\s0電波、\w8届いた? 届いた 届いてない わからない ^list_speak 届いた arrive ^eq_jump わからない not_understand ^eq_jump \h\s0それじゃあ、もう一度送るね\w8…\w8…そりゃ! ^next_speak start ^jump *arrive \u\s0いや、むしろErlangから毒電波がこっちに届いてるんだけど ^normal_speak ^exit *not_understand \h\s0聞くは一時の恥、聞かぬは一生の恥。わからないことは悪いことじゃないよ\uどーでもいい\e ^normal_speak ^exit