2016-12-17 3 views
0

Есть ли эффективный алгоритм для поиска разбитых скобок в блоке текста с целью подсвечивания ошибок intellisense?Поиск сломанной скобки?

Например:

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

Где любой (, ), [, ], { или } персонаж может быть удален или добавление правильно и корректно вопрос может быть выделен, например, пятнистость конкретное заявление , функция, условный и т. д., вызывающий проблему?

ответ

0

Алгоритм не сложно:

  • Есть стек символов
  • Для каждого символа в коде:
    • Если это открывающая скобка, толкнуть его в стек
    • Если это закрывающая скоба, поплю один шар из стека, оба должны совпасть
  • В конце стопка должна быть пустой

Тогда вы могли бы выделить целую скобку (-ы).

+0

Это не удовлетворило бы вопрос, поскольку у вас может быть что-то отсутствует, и что-то добавлено в разных местах, которые его отбросят. – CoryG

+0

@CoryG У вас есть пример? – fafl

+0

Просто возьмите любую часть кода на несколько страниц и добавьте в нее круглую скобку, визуальная студия имеет разумное обнаружение, хотя все еще не идеальна, поскольку иногда вы можете настроить количество скобок в пределах одной функции, чтобы показать всю страницу как имеющую ошибка - я думаю, что это может потребоваться контекстно-зависимые поисковые запросы на новые функции или подобные, но для таких вещей, как JavaScript, даже это не идеально. – CoryG

0

Я думаю, что одним из способов приблизиться к вашей проблеме является проверка подходящих групп кронштейнов. Это может быть достигнуто с использованием регулярного выражения - см .: http://blog.stevenlevithan.com/archives/javascript-match-nested Стивена Левитана.

+0

lol, определенно не собирается с регулярным выражением для этого. – CoryG

Смежные вопросы