2011-12-13 8 views
4

誰かが閉じ括弧をどこに置くかを推測する方法を考え出す作業をしているに違いないようです。つまり、一致する括弧を強調表示することは素晴らしいことですが、さらに良いと示唆しています。これは定義された問題ですか?もしそうなら、その名前は何ですか(Google Scholarはどうすればいいですか?)。そうでない場合は、どうしてですか?それは明らかに不可能な/不十分に提起された質問ですか?私は最初の括弧が欠落してい開閉括弧を推論しますか?

foo.all.map { |i| i.bar }).uniq.compact.reject { |j| j.match /baz/i } 

注:ウィットに

は、のは、私はいくつかの不正な、Rubyのコードを持っているとしましょう。私が話している問題は、「私はカーソルをペアのないパレンに移動すると、最初にパレンを挿入するように提案するのですか?

これは不適切な質問ではない場合、なぜまだ誰かがこれをしていないのですか?

+0

+1面白いアイデア – kol

+0

のように不要な括弧を探すために必要がある場合があります、あなたは、1つのまたは2つの例を用いて、あなたの考えを示してもらえそのような提案がどのように機能するのか? – NPE

+0

VimとEclipseのようなエディタ/ IDEがあります。これは、開き括弧を入力した後に自動的に閉じ括弧を追加します。しかし、私はあなたが想像した通りではないと確信しています:) – kol

答えて

0

ユーザーが入力する「バランスのとれた」対「不平衡」の括弧を追跡することができます。次に、括弧がアンバランスになるとすぐに父親を提案します。

たとえば、(something))と入力すると、sの前にオープニングパンが表示されます。 「fix-it」のパンを正しく配置することは難しいかもしれません。たとえば、ユーザがsomething(else))と入力した場合は、gの後にfix-it opening parenを挿入するか、文字列の先頭に?バランスの取れた括弧の

キープトラックは比較的簡単になります:

int parenCount = 0 

event keyUp(char c){ 
    if(c is close-paren){ 
     parenCount--; 
    }else if(c is open-paren){ 
     parenCount++; 
    } 
    if(parenCount < 0){ 
     // missing an open-paren somewhere 
    } 
} 

// handle missing close-parens when user finished typing the string... 
// for example if user types "myObject.something(" and hits enter 

a.doSomethingWith((aNumber))

関連する問題