Team Ai
Apppublic

aravagarwal/CodeCloakPII

sourceHugging Faceupdated 3y agoView on Hugging Face
0likes
parser.h225 linesDownload Raw Back to tree_sitter
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