TreeSitter (TreeSitter v0.0.1-dev)
View SourceBindings for TreeSitter
It is NIF library
This library uses NIF to provide tree-sitter bindings, so if there will be segmentation faults or any errors on the NIF side - it will crash whole Erlang VM
So wrap this library in a separate OS process using
Ports
or something else to prevent VM crashes.
Usage example:
# Create parser
parser = TreeSitter.new()
# Create a language (check new_language/2 docs for more info)
language = TreeSitter.new_language("./languages/libtree-sitter-css.dylib", "tree_sitter_css")
# Set language to parser
:ok = TreeSitter.set_language(parser, language)
# Parse!
{:ok, tree} = TreeSitter.parse_string(parser, "body {color: red}")
# Covert to map or do queries
{:ok, tree_map} = TreeSitter.to_map(tree)
Summary
Functions
Execute query for given tree
Initialize new parser
Create language from compiled library (.so or .dylib).
Create new query for given language
Parse string with given parser
Set lagnuage for given parser
Convert native tree sitter tree to elixir map
Types
Functions
@spec exec_query(query(), tree()) :: capture_result()
Execute query for given tree
Initialize new parser
You must set language (see new_language/2
and set_language/2
) to use it for parsing
Create language from compiled library (.so or .dylib).
You can get it by running 'make' in root of some parser for tree sitter.
Params
library
- path to the compiled library file
function
- function name, based on library name. For example tree-sitter-css lib must have 'tree_sitter_css' function name
@spec new_language(string_like(), string_like()) :: language()
Create new query for given language
Parse string with given parser
Remember that you should do set_language/2
before
Set lagnuage for given parser
Params
parser
- parser reference
language
- language reference, that you created with new_language/2
Convert native tree sitter tree to elixir map