找到破碎的括号?

时间:2016-12-17 22:28:54

标签: parsing intellisense

为了智能感知错误突出显示,是否有一种有效的算法可以在文本块中查找断括号?

例如:

function f() {
    var a = [1, 2, 3];
    if ((a[1] < 1) || (a[0] > 2)) {
        console.log((a + 5).toString());
    }
}

任何()[]{}字符可能会被删除或正确添加可能会突出显示正确的问题,例如发现导致问题的特定声明,函数,条件等级别项目?

2 个答案:

答案 0 :(得分:0)

算法并不困难:

  • 拥有一堆字符
  • 代码中的每个字符:
    • 如果它是一个开口支架,请将其推入堆叠
    • 如果它是一个结束括号,从堆栈中弹出一个字符,两者必须匹配
  • 最后堆栈必须为空

然后你可以突出显示不匹配的支架。

答案 1 :(得分:0)

我认为解决问题的一种方法是验证匹配的括号组。这可以使用正则表达式来实现 - 请参阅:Steven Levithan的http://blog.stevenlevithan.com/archives/javascript-match-nested