queries c.h c.scm cpp.h cpp.scm cuda.h cuda.scm glsl.h glsl.scm go.h go.scm javascript.h javascript.scm kotlin.h kotlin.scm lua.h lua.scm odin.h odin.scm php.h php.scm python.h python.scm rust.h rust.scm tcl.h tcl.scm zig.h zig.scm
tests
depth_test
sub level1.c
level0.c
test.c test.cpp test.cu test.cuh test.glsl test.go test.js test.kt test.lua test.odin test.php test.py test.rs test.tcl test.zig
vendor
tree-sitter
lib
include
tree_sitter api.h parser.h
src
unicode ICU_SHA LICENSE README.md ptypes.h umachine.h urename.h utf.h utf16.h utf8.h
alloc.c alloc.h array.h atomic.h clock.h error_costs.h get_changed_ranges.c get_changed_ranges.h host.h language.c language.h length.h lexer.c lexer.h lib.c node.c parser.c point.h query.c reduce_action.h reusable_node.h stack.c stack.h subtree.c subtree.h tree.c tree.h tree_cursor.c tree_cursor.h unicode.h
LICENSE Makefile
tree-sitter-c
src
tree_sitter parser.h
grammar.json node-types.json parser.c
LICENSE Makefile
tree-sitter-cpp
src
tree_sitter alloc.h array.h parser.h
grammar.json node-types.json parser.c scanner.c
LICENSE Makefile
tree-sitter-cuda
src
tree_sitter alloc.h array.h parser.h runtime.h
grammar.json node-types.json parser.c scanner.c
LICENSE Makefile
tree-sitter-glsl
src
tree_sitter alloc.h array.h parser.h runtime.h
grammar.json node-types.json parser.c
LICENSE Makefile
tree-sitter-go
src
tree_sitter alloc.h array.h parser.h
grammar.json node-types.json parser.c
LICENSE Makefile
tree-sitter-javascript
src
tree_sitter alloc.h array.h parser.h
grammar.json node-types.json parser.c scanner.c
LICENSE Makefile
tree-sitter-kotlin
src
tree_sitter alloc.h array.h parser.h
grammar.json node-types.json parser.c scanner.c
LICENSE Makefile
tree-sitter-lua
src
tree_sitter alloc.h array.h parser.h
grammar.json node-types.json parser.c scanner.c
LICENSE.md Makefile
tree-sitter-odin
src
tree_sitter alloc.h array.h parser.h
grammar.json node-types.json parser.c scanner.c
LICENSE Makefile
tree-sitter-php
src
common common.mak define-grammar.js scanner.h
tree_sitter alloc.h array.h parser.h
grammar.json node-types.json parser.c scanner.c
LICENSE Makefile
tree-sitter-python
src
tree_sitter parser.h
grammar.json node-types.json parser.c scanner.c
LICENSE Makefile
tree-sitter-rust
src
tree_sitter alloc.h array.h parser.h
grammar.json node-types.json parser.c scanner.c
LICENSE Makefile
tree-sitter-tcl
src
tree_sitter parser.h
grammar.json node-types.json parser.c scanner.c
LICENSE Makefile
tree-sitter-template Makefile
tree-sitter-zig
src
tree_sitter alloc.h array.h parser.h
grammar.json node-types.json parser.c
LICENSE Makefile
.clang-format .gitattributes .gitignore LICENSE Makefile README.md abicheck.c compile_flags.txt file.c file.h list.c list.h main.c tests.sh tpool.c tpool.h
vendor/tree-sitter/lib/include/tree_sitter/parser.h raw
  1#ifndef TREE_SITTER_PARSER_H_
  2#define TREE_SITTER_PARSER_H_
  3
  4#ifdef __cplusplus
  5extern "C" {
  6#endif
  7
  8#include <stdbool.h>
  9#include <stdint.h>
 10#include <stdlib.h>
 11
 12#define ts_builtin_sym_error ((TSSymbol)-1)
 13#define ts_builtin_sym_end 0
 14#define TREE_SITTER_SERIALIZATION_BUFFER_SIZE 1024
 15
 16#ifndef TREE_SITTER_API_H_
 17typedef uint16_t TSStateId;
 18typedef uint16_t TSSymbol;
 19typedef uint16_t TSFieldId;
 20typedef struct TSLanguage TSLanguage;
 21#endif
 22
 23typedef struct {
 24  TSFieldId field_id;
 25  uint8_t child_index;
 26  bool inherited;
 27} TSFieldMapEntry;
 28
 29typedef struct {
 30  uint16_t index;
 31  uint16_t length;
 32} TSFieldMapSlice;
 33
 34typedef struct {
 35  bool visible;
 36  bool named;
 37  bool supertype;
 38} TSSymbolMetadata;
 39
 40typedef struct TSLexer TSLexer;
 41
 42struct TSLexer {
 43  int32_t lookahead;
 44  TSSymbol result_symbol;
 45  void (*advance)(TSLexer *, bool);
 46  void (*mark_end)(TSLexer *);
 47  uint32_t (*get_column)(TSLexer *);
 48  bool (*is_at_included_range_start)(const TSLexer *);
 49  bool (*eof)(const TSLexer *);
 50};
 51
 52typedef enum {
 53  TSParseActionTypeShift,
 54  TSParseActionTypeReduce,
 55  TSParseActionTypeAccept,
 56  TSParseActionTypeRecover,
 57} TSParseActionType;
 58
 59typedef union {
 60  struct {
 61    uint8_t type;
 62    TSStateId state;
 63    bool extra;
 64    bool repetition;
 65  } shift;
 66  struct {
 67    uint8_t type;
 68    uint8_t child_count;
 69    TSSymbol symbol;
 70    int16_t dynamic_precedence;
 71    uint16_t production_id;
 72  } reduce;
 73  uint8_t type;
 74} TSParseAction;
 75
 76typedef struct {
 77  uint16_t lex_state;
 78  uint16_t external_lex_state;
 79} TSLexMode;
 80
 81typedef union {
 82  TSParseAction action;
 83  struct {
 84    uint8_t count;
 85    bool reusable;
 86  } entry;
 87} TSParseActionEntry;
 88
 89struct TSLanguage {
 90  uint32_t version;
 91  uint32_t symbol_count;
 92  uint32_t alias_count;
 93  uint32_t token_count;
 94  uint32_t external_token_count;
 95  uint32_t state_count;
 96  uint32_t large_state_count;
 97  uint32_t production_id_count;
 98  uint32_t field_count;
 99  uint16_t max_alias_sequence_length;
100  const uint16_t *parse_table;
101  const uint16_t *small_parse_table;
102  const uint32_t *small_parse_table_map;
103  const TSParseActionEntry *parse_actions;
104  const char * const *symbol_names;
105  const char * const *field_names;
106  const TSFieldMapSlice *field_map_slices;
107  const TSFieldMapEntry *field_map_entries;
108  const TSSymbolMetadata *symbol_metadata;
109  const TSSymbol *public_symbol_map;
110  const uint16_t *alias_map;
111  const TSSymbol *alias_sequences;
112  const TSLexMode *lex_modes;
113  bool (*lex_fn)(TSLexer *, TSStateId);
114  bool (*keyword_lex_fn)(TSLexer *, TSStateId);
115  TSSymbol keyword_capture_token;
116  struct {
117    const bool *states;
118    const TSSymbol *symbol_map;
119    void *(*create)(void);
120    void (*destroy)(void *);
121    bool (*scan)(void *, TSLexer *, const bool *symbol_whitelist);
122    unsigned (*serialize)(void *, char *);
123    void (*deserialize)(void *, const char *, unsigned);
124  } external_scanner;
125  const TSStateId *primary_state_ids;
126};
127
128/*
129 *  Lexer Macros
130 */
131
132#define START_LEXER()           \
133  bool result = false;          \
134  bool skip = false;            \
135  bool eof = false;             \
136  int32_t lookahead;            \
137  goto start;                   \
138  next_state:                   \
139  lexer->advance(lexer, skip);  \
140  start:                        \
141  skip = false;                 \
142  lookahead = lexer->lookahead; \
143  eof = lexer->eof(lexer);
144
145#define ADVANCE(state_value) \
146  {                          \
147    state = state_value;     \
148    goto next_state;         \
149  }
150
151#define SKIP(state_value) \
152  {                       \
153    skip = true;          \
154    state = state_value;  \
155    goto next_state;      \
156  }
157
158#define ACCEPT_TOKEN(symbol_value)     \
159  result = true;                       \
160  lexer->result_symbol = symbol_value; \
161  lexer->mark_end(lexer);
162
163#define END_STATE() return result;
164
165/*
166 *  Parse Table Macros
167 */
168
169#define SMALL_STATE(id) ((id) - LARGE_STATE_COUNT)
170
171#define STATE(id) id
172
173#define ACTIONS(id) id
174
175#define SHIFT(state_value)            \
176  {{                                  \
177    .shift = {                        \
178      .type = TSParseActionTypeShift, \
179      .state = (state_value)          \
180    }                                 \
181  }}
182
183#define SHIFT_REPEAT(state_value)     \
184  {{                                  \
185    .shift = {                        \
186      .type = TSParseActionTypeShift, \
187      .state = (state_value),         \
188      .repetition = true              \
189    }                                 \
190  }}
191
192#define SHIFT_EXTRA()                 \
193  {{                                  \
194    .shift = {                        \
195      .type = TSParseActionTypeShift, \
196      .extra = true                   \
197    }                                 \
198  }}
199
200#define REDUCE(symbol_val, child_count_val, ...) \
201  {{                                             \
202    .reduce = {                                  \
203      .type = TSParseActionTypeReduce,           \
204      .symbol = symbol_val,                      \
205      .child_count = child_count_val,            \
206      __VA_ARGS__                                \
207    },                                           \
208  }}
209
210#define RECOVER()                    \
211  {{                                 \
212    .type = TSParseActionTypeRecover \
213  }}
214
215#define ACCEPT_INPUT()              \
216  {{                                \
217    .type = TSParseActionTypeAccept \
218  }}
219
220#ifdef __cplusplus
221}
222#endif
223
224#endif  // TREE_SITTER_PARSER_H_