2011-12-13 19 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))