Class AbstractCfgVisitor

java.lang.Object
com.github._1c_syntax.bsl.languageserver.cfg.AbstractCfgVisitor

public abstract class AbstractCfgVisitor extends Object
Абстрактный класс обхода графа управления. Переопределяйте методы-визиторы для обхода конкретных узлов графа управления
  • Field Details

  • Constructor Details

  • Method Details

    • visitVertex

      public void visitVertex(CfgVertex v)
      Parameters:
      v - начинает обход с указанной вершины
    • visitBasicBlock

      protected void visitBasicBlock(BasicBlockVertex v)
      Parameters:
      v - вершина линейного блока.
    • visitBranchingVertex

      protected void visitBranchingVertex(BranchingVertex v)
      Метод рекомендуется переопределять, если необходимо одним методом обрабатывать любые типы ветвлений. Вызвать super, если надо диспетчеризовать визитор к более специальным листовым классам ветвлений
      Parameters:
      v - посещаемая ветка
    • visitLoopVertex

      protected void visitLoopVertex(LoopVertex v)
      Метод рекомендуется переопределять, если необходимо одним методом обрабатывать любые типы циклов. Вызвать super, если надо диспетчеризовать визитор к более специальным листовым классам циклов
      Parameters:
      v - посещаемая ветка
    • visitConditionalVertex

      protected void visitConditionalVertex(ConditionalVertex v)
      Parameters:
      v - обход условной ветки
    • visitWhileLoopVertex

      protected void visitWhileLoopVertex(WhileLoopVertex v)
      Parameters:
      v - обход цикла while
    • visitForLoopVertex

      protected void visitForLoopVertex(ForLoopVertex v)
      Parameters:
      v - обход цикла for
    • visitForeachLoopVertex

      protected void visitForeachLoopVertex(ForeachLoopVertex v)
      Parameters:
      v - обход цикла forEach
    • visitLabelVertex

      protected void visitLabelVertex(LabelVertex v)
      Parameters:
      v - обход узла метки
    • visitTryExceptVertex

      protected void visitTryExceptVertex(TryExceptVertex v)
      Parameters:
      v - обход узла метки
    • visitExitVertex

      protected void visitExitVertex(ExitVertex v)
      Parameters:
      v - обход узла метки
    • visitDirectEdge

      protected boolean visitDirectEdge(CfgEdge e)
      Parameters:
      e - ребро перехода по потоку управления
      Returns:
      true - если переход нужно совершить. false - если обход в этом направлении не нужен
    • visitTrueEdge

      protected boolean visitTrueEdge(CfgEdge e)
      Parameters:
      e - ребро перехода по потоку управления
      Returns:
      true - если переход нужно совершить. false - если обход в этом направлении не нужен
    • visitFalseEdge

      protected boolean visitFalseEdge(CfgEdge e)
      Parameters:
      e - ребро перехода по потоку управления
      Returns:
      true - если переход нужно совершить. false - если обход в этом направлении не нужен
    • visitLoopIterationEdge

      protected boolean visitLoopIterationEdge(CfgEdge e)
      Parameters:
      e - ребро перехода по потоку управления
      Returns:
      true - если переход нужно совершить. false - если обход в этом направлении не нужен
    • dispatchVertex

      protected final void dispatchVertex(CfgVertex v)
      Parameters:
      v - возможность вызвать прямую диспетчеризацию вершины из подкласса