tableEntry method

TreeSitterLanguageTableEntry tableEntry(
  1. int state,
  2. int symbol
)

Exact valid-input counterpart of ts_language_table_entry.

Implementation

TreeSitterLanguageTableEntry tableEntry(int state, int symbol) {
  if (symbol == treeSitterBuiltinErrorSymbol ||
      symbol == treeSitterBuiltinErrorRepeatSymbol) {
    return const TreeSitterLanguageTableEntry(
      actions: <TreeSitterParseAction>[],
      reusable: false,
    );
  }
  if (symbol < 0 || symbol >= tokenCount) {
    throw RangeError.range(symbol, 0, tokenCount - 1, 'symbol');
  }
  final index = actionIndex(state, symbol);
  if (index < 0 || index >= parseActions.length) {
    throw StateError(
      'Parse action index $index is outside the action table.',
    );
  }
  final entry = parseActions[index];
  return TreeSitterLanguageTableEntry(
    actions: entry.actions,
    reusable: entry.reusable,
  );
}