Setting up tree-sitter on macOS
November 12th, 2019
Tree-sitter is an incremental parsing library recently open sourced by GitHub. Incredible technology (highly suggest watching a talk, as the website does not do it justice). I ran into some problems setting it up (as of November 12th, 2019) and for others (especially future me) using macOS and wanting to play with this tech, here’s the solutions I found.
1. Install the system dependencies
brew install git and
xcode-select --install are simple.
emscripten’s installation instructions are excellent.
2. Install the node packages
Unsurprisingly, I ran into my first problems with node. As of today, if you’re running latest node and try to
node-gyp compile error. Instead, you’ll need to
brew install node@10 and
brew link node@10 to get this working.
The version of
tree-sitter.wasm linked in the web version’s README is version 9, which is incompatible if you follow the instruction the instructions to generate the .wasm files, which will build the latest (at the time of writing, it was version 10). To build the latest, clone down the tree-sitter repo and
./script/build-wasm and “[t]his will create the tree-sitter CLI executable in the target/release folder.”
<script>for an index.html.
I had some problems with await (it didn’t like that I was using it outside an async function). There’s probably a better way, but this snippet worked for me. I use the node
http-server to serve up this
locahost:8080 and voilá!
(program (lexical_declaration (variable_declarator name: (identifier) value: (number))) (expression_statement (call_expression function: (member_expression object: (identifier) property: (property_identifier)) arguments: (arguments (identifier)))))