Class RegionVariableSymbolComputer

All Implemented Interfaces:
Computer<List<VariableSymbol>>, BSLParserVisitor<ParseTree>, ParseTreeVisitor<ParseTree>

public final class RegionVariableSymbolComputer extends VariableSymbolComputer
Вычислитель символов переменных и регионов за один обход AST.

И сбор переменных (VariableSymbolComputer), и сбор регионов обходили всё дерево вглубь (методы — вместе с телами), и при перестроении дерева символов на каждый keystroke это были два отдельных полных обхода 48k-строчного модуля (по профилю набора текста на больших модулях обход визиторами — заметная доля стоимости перестроения). Наборы перекрытых узлов у них не пересекаются (директивы #Область/#КонецОбласти против объявлений переменных/параметров/lvalue/ циклов), поэтому сбор регионов добавляется поверх обхода переменных, и два полных обхода схлопываются в один.

VariableSymbolComputer остаётся самостоятельным (используется отдельно), а этот класс лишь расширяет его сбором регионов в том же visitFile.