Lime Parser Generator 0.1.0
Runtime-extensible LALR(1) parser with SIMD tokenization and LLVM JIT
Loading...
Searching...
No Matches
Convenience Macro for Generated Parsers

Helper macro to produce layout parameters for cloning. More...

Macros

#define PARSER_FORK_LAYOUT_PARAMS(ParserType, StackEntryType)
 Produce the layout parameters expected by clone_parser_state() and fork_parser().
 

Detailed Description

Helper macro to produce layout parameters for cloning.

Macro Definition Documentation

◆ PARSER_FORK_LAYOUT_PARAMS

#define PARSER_FORK_LAYOUT_PARAMS (   ParserType,
  StackEntryType 
)

#include <include/parser_fork.h>

Value:
sizeof(ParserType), \
sizeof(StackEntryType), \
offsetof(ParserType, yystk0), \
(uint32_t)(sizeof(((ParserType*)0)->yystk0) \
/ sizeof(StackEntryType)), \
offsetof(ParserType, yystack), \
offsetof(ParserType, yytos), \
offsetof(ParserType, yystackEnd)

Produce the layout parameters expected by clone_parser_state() and fork_parser().

Use inside generated parser code (or user code that has visibility into yyParser and yyStackEntry).

Parameters
ParserTypeThe generated yyParser type.
StackEntryTypeThe generated yyStackEntry type.
Example
ParseFork *f = fork_parser(myParser,
yyStackEntry),
snapshot, priority);
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.
#define PARSER_FORK_LAYOUT_PARAMS(ParserType, StackEntryType)
Produce the layout parameters expected by clone_parser_state() and fork_parser().
A forked parser instance.

Definition at line 438 of file parser_fork.h.