Class RegionVariableSymbolComputer
java.lang.Object
org.antlr.v4.runtime.tree.AbstractParseTreeVisitor<ParseTree>
com.github._1c_syntax.bsl.parser.BSLParserBaseVisitor<ParseTree>
com.github._1c_syntax.bsl.languageserver.context.computer.VariableSymbolComputer
com.github._1c_syntax.bsl.languageserver.context.computer.RegionVariableSymbolComputer
- All Implemented Interfaces:
Computer<List<VariableSymbol>>, BSLParserVisitor<ParseTree>, ParseTreeVisitor<ParseTree>
Вычислитель символов переменных и регионов за один обход AST.
И сбор переменных (VariableSymbolComputer), и сбор регионов обходили всё дерево вглубь
(методы — вместе с телами), и при перестроении дерева символов на каждый keystroke это были два
отдельных полных обхода 48k-строчного модуля (по профилю набора текста на больших модулях обход
визиторами — заметная доля стоимости перестроения). Наборы перекрытых узлов у них не пересекаются
(директивы #Область/#КонецОбласти против объявлений переменных/параметров/lvalue/
циклов), поэтому сбор регионов добавляется поверх обхода переменных, и два полных обхода
схлопываются в один.
VariableSymbolComputer остаётся самостоятельным (используется отдельно), а этот класс лишь
расширяет его сбором регионов в том же visitFile.
-
Constructor Summary
ConstructorsConstructorDescriptionRegionVariableSymbolComputer(DocumentContext documentContext, ModuleSymbol module, List<? extends MethodSymbol> methods) -
Method Summary
Modifier and TypeMethodDescriptioncompute()Выполнить вычисление данных.Собранные за тот же обход регионы.Methods inherited from class VariableSymbolComputer
visitForEachStatement, visitForStatement, visitLValue, visitModuleVarDeclaration, visitParam, visitSub, visitSubVarDeclarationMethods inherited from class BSLParserBaseVisitor
visitAcceptor, visitAccessCall, visitAccessIndex, visitAccessProperty, visitAddHandlerStatement, visitAnnotation, visitAnnotationName, visitAnnotationParam, visitAnnotationParamName, visitAnnotationParams, visitAnnotationParamValue, visitAssignment, visitBoolOperation, visitBreakStatement, visitCallParam, visitCallParamList, visitCallStatement, visitCodeBlock, visitCompareOperation, visitCompilerDirective, visitCompilerDirectiveSymbol, visitComplexIdentifier, visitCompoundStatement, visitConstValue, visitContinueStatement, visitDefaultValue, visitDoCall, visitElseBranch, visitElsifBranch, visitEvent, visitExceptCodeBlock, visitExecuteStatement, visitExpression, visitFile, visitFileCodeBlock, visitFileCodeBlockBeforeSub, visitFuncDeclaration, visitFunction, visitGlobalMethodCall, visitGotoStatement, visitHandler, visitIfBranch, visitIfStatement, visitIncompleteAccess, visitLabel, visitLabelName, visitMember, visitMethodCall, visitMethodName, visitModifier, visitModuleAnnotations, visitModuleVar, visitModuleVars, visitModuleVarsList, visitMultilineString, visitNewExpression, visitNumeric, visitOperation, visitParamList, visitPreproc_boolOperation, visitPreproc_else, visitPreproc_elsif, visitPreproc_endif, visitPreproc_expression, visitPreproc_if, visitPreproc_logicalExpression, visitPreproc_logicalOperand, visitPreproc_native, visitPreproc_stack, visitPreproc_symbol, visitPreproc_unknownSymbol, visitPreprocessor, visitProcDeclaration, visitProcedure, visitRaiseStatement, visitRegionName, visitRemoveHandlerStatement, visitReturnStatement, visitShebang, visitStatement, visitString, visitSubCodeBlock, visitSubName, visitSubs, visitSubVar, visitSubVars, visitSubVarsList, visitTernaryOperator, visitTryCodeBlock, visitTryStatement, visitTypeName, visitUnaryModifier, visitUse, visitUsedLib, visitVar_name, visitWaitExpression, visitWaitStatement, visitWhileStatementMethods inherited from class AbstractParseTreeVisitor
aggregateResult, defaultResult, shouldVisitNextChild, visit, visitChildren, visitErrorNode, visitTerminalMethods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface ParseTreeVisitor
visit, visitChildren, visitErrorNode, visitTerminal
-
Constructor Details
-
RegionVariableSymbolComputer
public RegionVariableSymbolComputer(DocumentContext documentContext, ModuleSymbol module, List<? extends MethodSymbol> methods)
-
-
Method Details
-
compute
Description copied from interface:ComputerВыполнить вычисление данных.- Specified by:
computein interfaceComputer<List<VariableSymbol>>- Overrides:
computein classVariableSymbolComputer- Returns:
- Вычисленные данные
-
getRegions
Собранные за тот же обход регионы. Вызывать послеcompute().- Returns:
- список символов регионов модуля.
-
visitRegionStart
- Specified by:
visitRegionStartin interfaceBSLParserVisitor<ParseTree>- Overrides:
visitRegionStartin classBSLParserBaseVisitor<ParseTree>
-
visitRegionEnd
- Specified by:
visitRegionEndin interfaceBSLParserVisitor<ParseTree>- Overrides:
visitRegionEndin classBSLParserBaseVisitor<ParseTree>
-