aravagarwal/CodeCloakPII
0
1#ifndef TREE_SITTER_PARSER_H_2#define TREE_SITTER_PARSER_H_3 4#ifdef __cplusplus5extern "C" {6#endif7 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 014#define TREE_SITTER_SERIALIZATION_BUFFER_SIZE 102415 16#ifndef TREE_SITTER_API_H_17typedef uint16_t TSStateId;18typedef uint16_t TSSymbol;19typedef uint16_t TSFieldId;20typedef struct TSLanguage TSLanguage;21#endif22 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 Macros130 */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 Macros167 */168 169#define SMALL_STATE(id) ((id) - LARGE_STATE_COUNT)170 171#define STATE(id) id172 173#define ACTIONS(id) id174 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 __cplusplus221}222#endif223 224#endif // TREE_SITTER_PARSER_H_225 