|
Lime Parser Generator 0.1.0
Runtime-extensible LALR(1) parser with SIMD tokenization and LLVM JIT
|
Deep-copy parser state for forking. More...
Functions | |
| 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. | |
Deep-copy parser state for forking.
| 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 | ||
| ) |
#include <include/parser_fork.h>
Clone the parser state from an opaque parser handle.
The caller must provide correct layout parameters derived from the generated parser's compile-time constants. Use the PARSER_FORK_LAYOUT_PARAMS() macro for convenience.
| parser | Pointer to a yyParser (cast to void*). | |
| parser_size | sizeof(yyParser) for this grammar. | |
| stack_entry_size | sizeof(yyStackEntry) for this grammar. | |
| inline_stack_offset | offsetof(yyParser, yystk0). | |
| inline_stack_count | YYSTACKDEPTH (number of inline stack entries). | |
| stack_field_offset | offsetof(yyParser, yystack). | |
| tos_field_offset | offsetof(yyParser, yytos). | |
| stack_end_offset | offsetof(yyParser, yystackEnd). | |
| [out] | out | On success, filled with the cloned state. |
| true | Cloning succeeded. |
| false | Allocation failure. |
| void cloned_parser_state_destroy | ( | ClonedParserState * | cloned | ) |
#include <include/parser_fork.h>
Free a cloned parser state.
After this call, the ClonedParserState is zeroed and must not be used.
| cloned | State to destroy. |