Class SemanticTokensHelper

java.lang.Object
com.github._1c_syntax.bsl.languageserver.semantictokens.SemanticTokensHelper

@Component public class SemanticTokensHelper extends Object
Вспомогательные методы для создания семантических токенов.

Предоставляет методы для добавления токенов в список с учетом легенды семантических токенов.

  • Constructor Details

  • Method Details

    • addRange

      public void addRange(List<SemanticTokenEntry> entries, Range range, String type)
      Добавить токен с заданным типом без модификаторов.
      Parameters:
      entries - Список токенов для наполнения
      range - Диапазон токена
      type - Тип токена (из SemanticTokenTypes)
    • addRange

      public void addRange(List<SemanticTokenEntry> entries, Range range, String type, String... modifiers)
      Добавить токен с заданным типом и модификаторами.
      Parameters:
      entries - Список токенов для наполнения
      range - Диапазон токена
      type - Тип токена (из SemanticTokenTypes)
      modifiers - Модификаторы токена (из SemanticTokenModifiers)
    • addRange

      public void addRange(List<SemanticTokenEntry> entries, Range range, int explicitLength, String type, String[] modifiers)
      Добавить токен с явно указанной длиной (для многострочных токенов).
      Parameters:
      entries - Список токенов для наполнения
      range - Диапазон токена
      explicitLength - Явная длина токена
      type - Тип токена (из SemanticTokenTypes)
      modifiers - Модификаторы токена (из SemanticTokenModifiers)
    • addEntry

      public void addEntry(List<SemanticTokenEntry> entries, int line, int start, int length, String type)
      Добавить токен по позиции и длине без модификаторов.
      Parameters:
      entries - Список токенов для наполнения
      line - Номер строки (0-индексированный)
      start - Начальная позиция в строке
      length - Длина токена
      type - Тип токена (из SemanticTokenTypes)
    • addEntry

      public void addEntry(List<SemanticTokenEntry> entries, int line, int start, int length, String type, String... modifiers)
      Добавить токен по позиции и длине с модификаторами.
      Parameters:
      entries - Список токенов для наполнения
      line - Номер строки (0-индексированный)
      start - Начальная позиция в строке
      length - Длина токена
      type - Тип токена (из SemanticTokenTypes)
      modifiers - Модификаторы токена (из SemanticTokenModifiers)
    • addTokenRange

      public void addTokenRange(List<SemanticTokenEntry> entries, Token token, String type)
      Добавить токен из ANTLR токена с явно указанным типом.
      Parameters:
      entries - Список токенов для наполнения
      token - ANTLR токен
      type - Тип семантического токена (из SemanticTokenTypes)
    • addTokenRange

      public void addTokenRange(List<SemanticTokenEntry> entries, @Nullable Token token, String type, String... modifiers)
      Добавить токен из ANTLR токена с явно указанным типом и модификаторами.
      Parameters:
      entries - Список токенов для наполнения
      token - ANTLR токен
      type - Тип семантического токена (из SemanticTokenTypes)
      modifiers - Модификаторы токена (из SemanticTokenModifiers)
    • addTerminalNodeRange

      public void addTerminalNodeRange(List<SemanticTokenEntry> entries, @Nullable TerminalNode node, String type, String... modifiers)
      Добавить токен из TerminalNode с явно указанным типом и модификаторами.
      Parameters:
      entries - Список токенов для наполнения
      node - Терминальный узел AST
      type - Тип семантического токена (из SemanticTokenTypes)
      modifiers - Модификаторы токена (из SemanticTokenModifiers)
    • addContextRange

      public void addContextRange(List<SemanticTokenEntry> entries, @Nullable ParserRuleContext ctx, String type, String... modifiers)
      Добавить токен из ParserRuleContext (от начала до конца контекста).
      Parameters:
      entries - Список токенов для наполнения
      ctx - Контекст парсера
      type - Тип семантического токена (из SemanticTokenTypes)
      modifiers - Модификаторы токена (из SemanticTokenModifiers)
    • getTypeIndex

      public int getTypeIndex(String type)
      Получить индекс типа токена в легенде.
      Parameters:
      type - Тип токена (из SemanticTokenTypes)
      Returns:
      Индекс типа в легенде или -1, если тип не найден
    • computeModifierMask

      public int computeModifierMask(String... modifiers)
      Вычислить битовую маску модификаторов.
      Parameters:
      modifiers - Модификаторы токена (из SemanticTokenModifiers)
      Returns:
      Битовая маска модификаторов