yash 2 開発順調
一から書き直している yash は、現在構文パーサの実装の途中。従来の yash では対応していなかった if コマンドなどもこの機会に実装する。
以前よりも処理ごとに関数を細かく分けているので、関数の数が多くなってコード行数も増えているが、個個のコードが何をしているのか把握しやすくなったと思う。
ところで、bash でも ksh でも dash でも (従来の yash でも) { (:)>/dev/null }
が構文エラーになるのだが、規格書を読む限りこれは文法的に正しいとしか思えない。yash 2 ではこれはエラーにしないことにする。(zsh でもエラーにならない)
何が問題かというと、{ (:); }
も { (:) }
も { (:)>/dev/null; }
もエラーにならないのになぜ { (:)>/dev/null }
だけエラーになるのか、ということだ。本来 } の直前には ; が必要なのだが、前に ) があるので ; は不要の筈。そして ) の後にリダイレクトがあるからといって ; が必要になることもない筈。
| 固定リンク
コメント