Files
crib/include/syntax/parser.h
Syed Daanish 5b66f503e4 Improve highlighting structure
- switched to a sparse delta based map
- true lazy-loading to avoid any unneccessary allocations
- fixed windows management api
2026-02-11 18:18:28 +00:00

30 lines
970 B
C++

#ifndef SYNTAX_PARSER_H
#define SYNTAX_PARSER_H
#include "ruby/decl.h"
#include "syntax/decl.h"
#include "syntax/line_map.h"
struct Parser {
struct Editor *editor = nullptr;
std::string lang;
std::unique_ptr<StateBase> (*parse_func)(std::vector<Token> *tokens,
StateBase *in_state,
const char *text, uint32_t len,
uint32_t line_num);
bool (*state_match_func)(StateBase *state_1, StateBase *state_2);
mrb_value parser_block = mrb_nil_value();
mrb_value match_block = mrb_nil_value();
bool is_custom{false};
std::atomic<uint32_t> scroll_max{0};
std::atomic<bool> scroll_dirty{false};
LineMap line_map = LineMap();
Parser(Editor *editor, std::string n_lang, uint32_t n_scroll_max);
void edit(uint32_t start_line, uint32_t removed_rows, uint32_t inserted_rows);
void work();
void scroll(uint32_t line);
};
#endif