2011-12-13 48 views
4

似乎有人必須在確定如何推斷或建議放置圓括號的位置方面做過工作。我的意思是,突出顯示匹配的parens非常棒,但建議會更好。這是一個確定的問題?如果是這樣,它的名字是什麼(例如,Google Scholar應該如何?)。如果不是,爲什麼不呢?這是一個明顯不可能/很差的問題?推測開啓/關閉的夥計?

要機智,讓我們說我有一些畸形,Ruby代碼:

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

請注意,我錯過了最初的括號。我所說的問題是,「當我將光標移到不成對的paren上時,我如何在開始時插入paren?」

如果這不是一個不好提出的問題,爲什麼沒有人做到這一點呢?

+0

+1有趣的想法 – kol 2011-12-13 19:01:13

回答

0

隨着用戶的輸入,人們可以跟蹤「平衡」與「不平衡」的關係。然後建議一旦parens變得不平衡,paren。

例如,打字(something))會在s之前建議打開文件。正確地擺放「修復它」可能會有挑戰性。例如,如果用戶鍵入something(else)),則可以選擇:在g之後或在字符串的開頭插入fix-it開頭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))