« \d{4}で数字4桁を検索って | トップページ | HP:AutoLispについて、更新 »

2011年9月19日 (月)

clispでツールを

 Common Lisp の一つ、clisp。いつも、楽しく遊んでいますが、なかなか、実用では使っていません。ということで、少しは、実用的に使おうじゃないかと思ったわけです。

 一番単純にはテキストファイルを処理するユーティリティ。Cで書くと心が痛むようなメモリの虫食いも、lispで書くなら、気にしないで済みます(気にしても仕方がないから)。

 windowsのコマンドラインで動かすので、プログラムにパラメータを渡せないと、使いにくい。ということで調べると、

 clisp では、 clisp リスプファイル名 a b c とか書くと、a b cが、*ARGS* というリストに格納されるようです。(Common Lisp にはこの辺の規定がないらしいですが…)

 パラメータはスペース区切り(Tabもですね)。問題は、中にスペースを含む文字列をどう指定するか。

 clisp testprog "ab c" 'de f' とすると、*ARGS*は、("ab c" "'de" "f'")。引用符としては「"」が有効。「'」は無効のようです。
 となると、後は、引用符「"」の中に引用符「"」を書く方法は?
 「""」と書くか、「\"」と書くか、その辺が普通なので、試します。

 clisp testprog "ab""c" だと、("ab\"c") 。おお、いいぞ。と思ったのもつかの間。
 clisp argtest "ab""c" "def"だと、("ab\"c def") 。二つの引数がつながってしまった。いっったい何が起こったのだろう?

 気を取り直して、\"を試すと、
 clisp testprog "ab\"c"はうまく動かない。後ろにパイプをつけるとそれも含まれてしまう。
 clisp testprog "ab\""c" は、("ab\"c")になるんだけど…。どうも、""を"にする処理と\"を"にする処理がバッティングしてうまく動いていない印象です。

 もっと詰めてもいいだろうけど、これでは。汎用では使いにくいですね。とりあえず、スペースを含める場合には引用符として「"」が使える。が、引用符の中に引用符をうまく書けない。としておきましょう。

 まぁ、そういうことで、少しもたもたしています。

|

« \d{4}で数字4桁を検索って | トップページ | HP:AutoLispについて、更新 »

コメント

I would like to thnkx for your efforts you might have place in creating this weblog. I'm hoping the same high-grade weblog article from you in the upcoming as well. In fact your creative composing abilities has inspired me to obtain my own website now. Actually the running a blog is spreading its wings quickly. Your write up is really a great example of it.

投稿: Diablo 3 | 2011年9月27日 (火) 16時28分

Diablo 3 さん、コメントありがとうございます。

 お褒め頂いて、ありがとうございます。過分なお言葉に、元気付けられました。
 英文で書いてないので、海外の方にお読みいただけるとは思ってもいませんでした。
 これからも、お楽しみ頂ければ幸いです。

投稿: algosampodo | 2011年9月28日 (水) 07時44分

コメントを書く



(ウェブ上には掲載しません)




« \d{4}で数字4桁を検索って | トップページ | HP:AutoLispについて、更新 »