Archive for 2012年4月5日|Daily archive page

newLISP 組込関数の構文表示3...または、command-event の覚え書き

 前回の組込 command-event を使ったインタラクティブ環境のコマンドヘルプを改良しました。
 前回 command-event に使った関数では、文字列から、改行文字を取り除くのに、replaceを使っていました。Windows版では、CR と LF が、Java 上でのインタラクティブ環境(例えば、newLISP-GS のコマンドライン)では、LF が付加されているからです。V10.4.1からは Windows版で改行文字がつかなくなりますが、、、Java 上はそのままのようです。おそらく、Java 環境の仕様でしょう。
 しかし、だからといって、今回は、わざわざreplaceを使う必要もなく、eval-stringを使う必要もなかったのです。
 それは、read-exprを使うというもの。
 最終的なスクリプトの command-event 部分はこうなりました。

(command-event 
  (fn (s)
    (let (x (read-expr s))
      (if (and (symbol? x)(find x syntax:lst))(syntax x)))))

 こんな感じで、すっきり。これなら、オーバーヘッドも気にならない(笑)。
 全スクリプトcommand-help.lsp はこちらからどうぞ

 以上、如何でしょうか?

広告