202 size_t stack_entry_size,
203 size_t inline_stack_offset,
204 uint32_t inline_stack_count,
205 size_t stack_field_offset,
206 size_t tos_field_offset,
207 size_t stack_end_offset,
254 size_t stack_entry_size,
255 size_t inline_stack_offset,
256 uint32_t inline_stack_count,
257 size_t stack_field_offset,
258 size_t tos_field_offset,
259 size_t stack_end_offset,
314 void (*free_fn)(
void *));
438#define PARSER_FORK_LAYOUT_PARAMS(ParserType, StackEntryType) \
439 sizeof(ParserType), \
440 sizeof(StackEntryType), \
441 offsetof(ParserType, yystk0), \
442 (uint32_t)(sizeof(((ParserType*)0)->yystk0) \
443 / sizeof(StackEntryType)), \
444 offsetof(ParserType, yystack), \
445 offsetof(ParserType, yytos), \
446 offsetof(ParserType, yystackEnd)
bool clone_parser_state(const void *parser, size_t parser_size, size_t stack_entry_size, size_t inline_stack_offset, uint32_t inline_stack_count, size_t stack_field_offset, size_t tos_field_offset, size_t stack_end_offset, ClonedParserState *out)
Clone the parser state from an opaque parser handle.
void cloned_parser_state_destroy(ClonedParserState *cloned)
Free a cloned parser state.
struct ParserSnapshot * parse_fork_get_snapshot(const ParseFork *fork)
Get the snapshot associated with a fork.
void parse_fork_fail(ParseFork *fork)
Mark a fork as failed.
void parse_fork_abandon(ParseFork *fork)
Mark a fork as abandoned (pruned).
void parse_fork_complete(ParseFork *fork, void *result, void(*free_fn)(void *))
Mark a fork as completed with the given semantic result.
void * parse_fork_get_parser(ParseFork *fork)
Get a mutable pointer to the cloned yyParser inside a fork.
uint64_t parser_fork_next_id(void)
Return a globally unique fork ID.
ParseFork * fork_parser(const void *parser, size_t parser_size, size_t stack_entry_size, size_t inline_stack_offset, uint32_t inline_stack_count, size_t stack_field_offset, size_t tos_field_offset, size_t stack_end_offset, struct ParserSnapshot *snapshot, int priority)
Create a new fork from a base parser state.
void free_parse_fork(ParseFork *fork)
Destroy a fork and release all resources.
bool parse_fork_set_add(ParseForkSet *set, ParseFork *fork)
Add a fork to the set.
uint32_t parse_fork_set_active_count(const ParseForkSet *set)
Return the number of forks still active.
void parse_fork_set_destroy(ParseForkSet *set)
Destroy a fork set and all forks it contains.
ParseForkSet * parse_fork_set_create(uint32_t max_forks)
Create a fork set with the given maximum fork count.
ParseFork * parse_fork_set_best(const ParseForkSet *set)
Find the best completed fork.
uint32_t parse_fork_set_prune(ParseForkSet *set)
Remove and destroy all failed or abandoned forks.
ParseForkStatus
Status of a forked parse attempt.
@ FORK_RUNNING
Fork is actively consuming tokens.
@ FORK_FAILED
Fork encountered an unrecoverable error.
@ FORK_ABANDONED
Fork was pruned (lower priority or timeout)
@ FORK_COMPLETED
Fork reached accept state.
@ FORK_PENDING
Fork created, not yet started/completed.
Deep copy of a grammar-specific parser state.
size_t state_size
sizeof(yyParser) for this grammar
size_t stack_size
Number of bytes in the cloned stack.
uint32_t stack_capacity
Total entry slots in the cloned stack.
void * state_data
Deep copy of the yyParser struct (malloc'd)
void * stack_data
Separately allocated stack (if stack was on heap)
bool stack_is_inline
True if stack lives inside state_data (yystk0)
uint32_t stack_depth
Number of entries currently on the stack.
A set of active forks being evaluated in parallel.
uint32_t capacity
Allocated slots.
uint32_t count
Number of forks in the set.
uint32_t max_forks
Upper bound (0 = unlimited)
ParseFork ** forks
Dynamic array of fork pointers.
A forked parser instance.
void(* free_result)(void *)
Optional destructor for semantic_result.
struct ParserSnapshot * snapshot
Grammar snapshot (ref acquired)
uint32_t tokens_consumed
Number of tokens fed to this fork.
uint64_t fork_id
Unique identifier for tracing/debugging.
ClonedParserState cloned_state
Deep copy of parser state.
void * semantic_result
Result produced by semantic actions.
ParseForkStatus status
Current status of this fork.
int priority
Fork priority.
uint32_t error_count
Cumulative error count.