Class Context

Nested Relationships

Nested Types

Class Documentation

class Context

Public Functions

inline void clear_packrat_cache(const char *pos, size_t def_id)
inline void write_packrat_cache(const char *pos, size_t def_id, size_t len, const std::any &val)
inline Context(const char *path, const char *s, size_t l, size_t def_count, std::shared_ptr<Ope> whitespaceOpe, std::shared_ptr<Ope> wordOpe, bool enablePackratParsing, TracerEnter tracer_enter, TracerLeave tracer_leave, std::any trace_data, bool verbose_trace, Log log)
inline ~Context()
Context(const Context&) = delete
Context(Context&&) = delete
Context operator=(const Context&) = delete
template<typename T>
inline void packrat(const char *a_s, size_t def_id, size_t &len, std::any &val, T fn)
inline SemanticValues &push_semantic_values_scope()
inline void pop_semantic_values_scope()
inline void push_args(std::vector<std::shared_ptr<Ope>> &&args)
inline void pop_args()
inline const std::vector<std::shared_ptr<Ope>> &top_args() const
inline Snapshot snapshot(const SemanticValues &vs) const
inline void rollback(SemanticValues &vs, const Snapshot &snap)
inline size_t skip_whitespace(const char *a_s, size_t n, SemanticValues &vs, std::any &dt)
inline void set_error_pos(const char *a_s, const char *literal = nullptr)
inline void trace_enter(const Ope &ope, const char *a_s, size_t n, const SemanticValues &vs, std::any &dt)
inline void trace_leave(const Ope &ope, const char *a_s, size_t n, const SemanticValues &vs, std::any &dt, size_t len)
inline bool is_traceable(const Ope &ope) const
inline std::pair<size_t, size_t> line_info(const char *cur) const

Public Members

const char *path
const char *s
const size_t l
ErrorInfo error_info
bool recovered = false
std::vector<std::shared_ptr<SemanticValues>> value_stack
size_t value_stack_size = 0
std::vector<Definition*> rule_stack
std::vector<std::vector<std::shared_ptr<Ope>>> args_stack
size_t in_token_boundary_count = 0
std::shared_ptr<Ope> whitespaceOpe
bool in_whitespace = false
std::shared_ptr<Ope> wordOpe
std::vector<std::pair<std::string_view, std::string>> capture_entries
std::vector<bool> cut_stack
const size_t def_count
const bool enablePackratParsing
std::vector<bool> cache_registered
std::vector<bool> cache_success
std::map<std::pair<size_t, size_t>, std::tuple<size_t, std::any>> cache_values
std::map<std::pair<const Definition*, const char*>, LRMemo> lr_memo
std::set<const Definition*> lr_refs_hit
std::set<std::pair<const Definition*, const char*>> lr_active_seeds
TracerEnter tracer_enter
TracerLeave tracer_leave
std::any trace_data
const bool verbose_trace
Log log
std::vector<PackratStats> *packrat_stats = nullptr
const std::vector<bool> *packrat_rule_filter = nullptr
size_t next_trace_id = 0
std::vector<size_t> trace_ids
bool ignore_trace_state = false
mutable std::once_flag source_line_index_init_
mutable std::vector<size_t> source_line_index
struct LRMemo

Public Members

size_t len = static_cast<size_t>(-1)
std::any val
struct PackratStats

Public Members

size_t hits = 0
size_t misses = 0
struct Snapshot

Public Members

size_t sv_size
size_t sv_tags_size
size_t sv_tokens_size
std::string_view sv_sv
size_t choice_count
size_t choice
size_t capture_size