2008年4月20日

[ruby-list:44849] Re: [Q] Ruby のパーサについて

まつもと ゆきひろです

In message "Re: [ruby-list:44848] [Q] Ruby のパーサについて"
on Sun, 20 Apr 2008 23:43:43 +0900, "Makoto Kuwata" <kwa@xxxxx> writes:

|Ruby のパーサについて質問があります。
|Q1. コマンドラインオプションの有無で、予約語を追加したり
| しなかったりを制御することはできますか。

|Q2. 拡張ライブラリとして、Ruby のパーサ関数を置き変える
| ことはできますか。

ご推察の通り、現在の実装ではパーサーを動的に変えたり予約語を
追加したりということは簡単にはできません。残念ながら。

もっとも、コマンドラインオプションや拡張ライブラリによって言
語そのものが変質してしまうというのは、個人的に好みではないの
で、たとえ容易であったとしても、採用される率は高くなさそうで
すが。

|Ruby のパーサに、新しい予約語として endif や endfor や enddef
|などを追加するパッチを作成しました。
http://rubyforge.org/projects/mismatched-end/
http://mismatched-end.rubyforge.org/
|
|これは、end の閉じ忘れがあったときに Ruby ではそれを探し出すのが
|非常にコストがかかるという問題の解決を目指して作られました。

インデント情報を使ってendの不整合を見つけやすくするという試
みがあった(昨年のRubyKaigiで発表された)と聞いてますが、その
後の消息を知りませんね。取り込んでもよいと思ってたのに。

あるいは end の後ろに

end # if

とかコメントをつけて、その情報を使って整合性をチェックする別
コマンドを用意するという手もありえるかもしれません。

まつもと ゆきひろ /:|)
p.s.

最初期のRubyは

if cond
...
end if

とか書けた、というのは知る人ぞ知る情報。

投稿者 xml-rpc : 2008年4月20日 23:54
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/72335
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。