jihg です。新入りです。


># <========= ここから(A)
>
>def hikaku(a)if 1 == aprint "1です。"elseprint "1ではありません。"endend
>
>b = 
>
>
>hikaku(b)# <========= ここから(B)
>
>b = [  
>
>a,
>
>b
>
>]−−−−−−−−−−−−−−−−−−−−−−−−−Aを悪?として、Bを善とする。この難しい線引き!−−−−−−−−−−−−−−−−−−−−−−−−−


言語の問題と人間の問題がまざってる。

* 言語エンジン(インタプリタやコンパイラ)は、プログラムが正しい構文で
記述されていることを要求する。

* プログラマは、プログラムが期待通りに動作することを望む。

今問題にしているのは後者。だから、記述的に問題のある部分を警告するツール
を作ればいい。Ruby 本体を変える必要はない。

...わけだけど、とりあえず、ツールをでっちあげてみる。

flnm = ARGV.shift
open(flnm ,"r") do |flh|
    row = 1
    while line = flh.gets
        line.scan(/(^.*?=\s$)/) do |s|
            print "warning : #{flnm}(#{row})---\"#{s}\"\n"
        end
        row += 1
    end
end

イコール(=)で改行してるとこしか調べてない。

warning : a.rb(9)---"b = "