isReservedWord method

bool isReservedWord(
  1. int state,
  2. int symbol
)

Exact ts_language_is_reserved_word row scan.

Implementation

bool isReservedWord(int state, int symbol) {
  final setId = lexModeForState(state).reservedWordSetId;
  if (setId <= 0 || maxReservedWordSetSize <= 0) return false;
  final start = setId * maxReservedWordSetSize;
  final end = start + maxReservedWordSetSize;
  if (start < 0 || end > reservedWords.length) {
    throw StateError('Reserved-word set $setId is outside the table.');
  }
  for (var index = start; index < end; index++) {
    final candidate = reservedWords[index];
    if (candidate == symbol) return true;
    if (candidate == 0) break;
  }
  return false;
}