Sha256: 5e3c6796e7b64e29fd7fb0af6c68e626a406808f1893394e28e89b5c0cbff602

Contents?: true

Size: 1.94 KB

Versions: 1

Compression:

Stored size: 1.94 KB

Contents

# TreeSitter

This gem wraps around [tree-sitter](https://github.com/tree-sitter/tree-sitter).

## Installation

Add this line to your application's Gemfile:

```ruby
gem 'tree-sitter'
```

And then execute:

    $ bundle

Or install it yourself as:

    $ gem install tree-sitter

## Usage

Tree-sitter performs [two different operations](https://github.com/tree-sitter/tree-sitter#overview): compiling grammars and parsing text with those grammars.

This gem is only concerned with parsing a blob of text, given the appropriate grammars. Compiling grammars from JSON is trivial and can just be kept as an executable generated from C.

### Running the parser

The libruntime static library needs to make use of the C code generated by the libcompile executable. Once you've got those, you'll need to provide an absolute path to the directory containing the C files that the library can incorporate. For example:

``` bash
# if you've installed this gem
$ TREE_SITTER_PARSER_DIR=/somewhere/code bundle install
# if you're using this gem locally
$ TREE_SITTER_PARSER_DIR=/somewhere/code bundle exec rake compile
```

This directory is appended with the glob suffix `**/*.{c,cc}`, so it can contain as many nested parser files as necessary.

Then, you can start making use of the parser:

``` ruby
# first argument is the string to parse
# second argument is a set of options; currently, only one is available, `language:`,
# which identifies the text's language
document = TreeSitter::Document.new('a + b * 5', language: 'tree_sitter_arithmetic')

# you can change any of these values whenever you want, just remember to call `parse`
# provide the function name
document.input_string = '12 * 12'
document.language = "tree_sitter_python"
document.parse
```

## Development

After checking out the repo, run `script/bootstrap` to install dependencies. Then, run `script/test` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
tree-sitter-0.1.0 README.md