if (FALSE) { # rlang::is_installed("treesitter.r")
language <- treesitter.r::language()
parser <- parser(language)
text <- "fn <- function() { 1 + 1 }"
tree <- parser_parse(parser, text)
node <- tree_root_node(tree)
# The whole `<-` binary operator node
node <- node_child(node, 1)
node
# The byte range points to a location in the word `function`
node_descendant_for_byte_range(node, 7, 9)
node_named_descendant_for_byte_range(node, 7, 9)
start <- point(0, 14)
end <- point(0, 15)
node_descendant_for_point_range(node, start, end)
node_named_descendant_for_point_range(node, start, end)
# OOB returns the input
node_descendant_for_byte_range(node, 25, 29)
}
Run the code above in your browser using DataLab