36#ifndef EXECUTION_POLICY_H
37#define EXECUTION_POLICY_H
ExecutionResult * execute_semantic_actions(const ExecutionPolicyConfig *config, const struct StrategyResult *disambiguation, LimeParserHandle **parsers, GrammarExtensionMetadata **extensions, int *nresults_out)
Execute semantic actions according to the configured policy.
void execution_policy_config_init(ExecutionPolicyConfig *config)
Initialize default execution policy configuration.
const char * execution_policy_name(LimeExecMode policy)
Return a human-readable name for an execution policy.
void execution_results_free(ExecutionResult *results, int nresults)
Free an array of execution results.
ExecutionResult * execute_first_only(ParserExecuteFn execute_fn, const struct StrategyResult *disambiguation, LimeParserHandle **parsers, GrammarExtensionMetadata **extensions, int *nresults_out)
Convenience: execute with EXEC_FIRST_ONLY policy.
bool(* ParserExecuteFn)(LimeParserHandle *parser, const GrammarExtensionMetadata *ext, void *input, void **result, char **error)
Callback type for executing a parser's semantic actions.
struct LimeParserHandle LimeParserHandle
Opaque parser handle for the execution engine.
LimeExecMode
Available execution policies.
@ EXEC_FIRST_ONLY
Only highest-priority winner executes.
@ EXEC_CHAIN
Winners execute in sequence, output chained.
@ EXEC_CONDITIONAL
Extension-provided callback decides.
@ EXEC_ALL
All winners execute independently.
Configuration for the execution policy engine.
ParserExecuteFn execute_fn
Callback to run a parser.
bool stop_on_error
If true, execution stops at the first error.
LimeExecMode policy
Which policy to use.
int max_executions
Maximum number of parsers to execute.
Result of executing a single grammar's semantic actions.
char * error
NULL on success; malloc'd error on failure.
void * result
Semantic action output (owned by caller)
uint32_t extension_id
Which extension produced this result.
A grammar context – one possible interpretation of a token within a particular grammar/extension.
The result of a disambiguation resolution.