Lime Parser Generator 0.1.0
Runtime-extensible LALR(1) parser with SIMD tokenization and LLVM JIT
Loading...
Searching...
No Matches
Fork Lifecycle

Create and destroy forked parser instances. More...

Functions

ParseForkfork_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.
 

Detailed Description

Create and destroy forked parser instances.

Function Documentation

◆ fork_parser()

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 
)

#include <include/parser_fork.h>

Create a new fork from a base parser state.

Clones the parser state, acquires a reference to the snapshot, and returns a heap-allocated ParseFork ready for token feeding.

Parameters
parserPointer to the base yyParser (void*).
parser_sizesizeof(yyParser).
stack_entry_sizesizeof(yyStackEntry).
inline_stack_offsetoffsetof(yyParser, yystk0).
inline_stack_countYYSTACKDEPTH.
stack_field_offsetoffsetof(yyParser, yystack).
tos_field_offsetoffsetof(yyParser, yytos).
stack_end_offsetoffsetof(yyParser, yystackEnd).
snapshotGrammar snapshot for this fork. A reference is acquired (refcount incremented).
priorityPriority for disambiguation (lower = preferred).
Returns
Heap-allocated ParseFork, or NULL on failure.
See also
free_parse_fork()
PARSER_FORK_LAYOUT_PARAMS()

◆ free_parse_fork()

void free_parse_fork ( ParseFork fork)

#include <include/parser_fork.h>

Destroy a fork and release all resources.

  • The cloned parser state is freed.
  • The snapshot reference is released.
  • The semantic_result is freed via free_result (or free()).
  • The ParseFork struct itself is freed.
Parameters
forkFork to destroy. Passing NULL is safe.