Я пишу функцию автоматического завершения скобок для текстового редактора, мой текущий подход заключается в том, чтобы вызывать процедуру сопоставления скобок (предположим, что она правильная и эффективная) на каждой новой строке, где последний набранный символ - это открытая скобка, начиная с новой строка (с этой последней набранной открытой скобкой в верхней части стека) до тех пор, пока либо стек не станет пустым, либо он достигнет конца источника, где не найдены соответствующие закрывающие скобки.
Однако этот подход кажется медленным для больших исходных файлов (> 1 МБ), особенно когда новая строка добавляется в первой половине строк исходного текста (новая строка в первой строке = наихудший случай = весь текст сканируется). Некоторые IDE имеют эту возможность и могут быстро ее обработать, поэтому они должны использовать другой подход. Итак, я хотел бы знать, какой алгоритм они используют или какой-либо другой подход лучше моего.