File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1+ import Parser from "tree-sitter" ;
2+ import type { SyntaxNode } from "tree-sitter" ;
3+ import Cpp from "tree-sitter-cpp" ;
4+
5+ const parser = new Parser ( ) ;
6+ parser . setLanguage ( Cpp as unknown as Parser . Language ) ;
7+
8+ export function parseCpp ( sourceText : string ) : SyntaxNode {
9+ return parser . parse ( sourceText ) . rootNode ;
10+ }
11+
12+ export function findFirstNamedNode ( rootNode : SyntaxNode , type : string ) : SyntaxNode | undefined {
13+ if ( rootNode . type === type ) {
14+ return rootNode ;
15+ }
16+
17+ return rootNode . namedChildren . find ( ( child ) => child . type === type ) ?? undefined ;
18+ }
19+
20+ export function walkNamed ( node : SyntaxNode , visit : ( node : SyntaxNode ) => void ) : void {
21+ visit ( node ) ;
22+ node . namedChildren . forEach ( ( child ) => walkNamed ( child , visit ) ) ;
23+ }
24+
25+ export function childForField ( node : SyntaxNode , fieldName : string ) : SyntaxNode | undefined {
26+ return node . childForFieldName ( fieldName ) ?? undefined ;
27+ }
You can’t perform that action at this time.
0 commit comments