selectTree025ParityProbe method
Direct decision probe for Tree-sitter 0.25.10's private
ts_parser__select_tree helper.
Implementation
Map<String, Object?> selectTree025ParityProbe() {
const zero = TreeSitterTablePoint(0, 0);
const one = TreeSitterTablePoint(0, 1);
GeneratedTreeSitterNode leaf(int symbol, {int? structuralSymbol}) =>
GeneratedTreeSitterNode(
symbol: symbol,
structuralSymbol: structuralSymbol,
type: language.symbols[symbol].name,
startByte: 0,
endByte: 1,
startPoint: zero,
endPoint: one,
named: language.symbols[symbol].named,
visible: language.symbols[symbol].visible,
extra: false,
);
GeneratedTreeSitterNode node({
List<GeneratedTreeSitterNode> children = const [],
int dynamicPrecedence = 0,
int errorSpan = 0,
}) {
final isError = errorSpan > 0;
return GeneratedTreeSitterNode(
symbol: isError ? _treeSitterBuiltinErrorSymbol : 16,
type: isError ? 'ERROR' : language.symbols[16].name,
startByte: 0,
endByte: isError ? errorSpan : 1,
startPoint: zero,
endPoint: TreeSitterTablePoint(0, isError ? errorSpan : 1),
named: true,
visible: true,
extra: false,
dynamicPrecedence: dynamicPrecedence,
children: children,
);
}
return <String, Object?>{
'null_left': _selectGraphTree(null, leaf(1)),
'null_right': _selectGraphTree(leaf(1), null),
'right_lower_error': _selectGraphTree(
node(children: [leaf(1)], errorSpan: 10),
node(children: [leaf(1)], errorSpan: 1),
),
'left_lower_error': _selectGraphTree(
node(children: [leaf(1)], errorSpan: 1),
node(children: [leaf(1)], errorSpan: 10),
),
'right_higher_precedence': _selectGraphTree(
node(children: [leaf(1)], dynamicPrecedence: 1),
node(children: [leaf(1)], dynamicPrecedence: 2),
),
'left_higher_precedence': _selectGraphTree(
node(children: [leaf(1)], dynamicPrecedence: 2),
node(children: [leaf(1)], dynamicPrecedence: 1),
),
'equal_positive_error': _selectGraphTree(
node(children: [leaf(1)], errorSpan: 1),
node(children: [leaf(1)], errorSpan: 1),
),
// Both nodes deliberately retain the same pre-alias structural symbol.
// Native compares their effective (post-alias) symbols instead.
'right_lower_effective_symbol': _selectGraphTree(
leaf(2, structuralSymbol: 7),
leaf(1, structuralSymbol: 7),
),
'left_lower_effective_symbol': _selectGraphTree(
leaf(1, structuralSymbol: 7),
leaf(2, structuralSymbol: 7),
),
'right_fewer_children': _selectGraphTree(
node(children: [leaf(1), leaf(1)]),
node(children: [leaf(1)]),
),
'right_lower_recursive_symbol': _selectGraphTree(
node(children: [leaf(2)]),
node(children: [leaf(1)]),
),
'equal_clean_tree': _selectGraphTree(
node(children: [leaf(1)]),
node(children: [leaf(1)]),
),
};
}