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

Execute semantic actions according to a configured policy. More...

Functions

ExecutionResultexecute_first_only (ParserExecuteFn execute_fn, const struct StrategyResult *disambiguation, LimeParserHandle **parsers, GrammarExtensionMetadata **extensions, int *nresults_out)
 Convenience: execute with EXEC_FIRST_ONLY policy.
 
ExecutionResultexecute_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.
 

Detailed Description

Execute semantic actions according to a configured policy.

Function Documentation

◆ execute_first_only()

ExecutionResult * execute_first_only ( ParserExecuteFn  execute_fn,
const struct StrategyResult disambiguation,
LimeParserHandle **  parsers,
GrammarExtensionMetadata **  extensions,
int *  nresults_out 
)

#include <include/execution_policy.h>

Convenience: execute with EXEC_FIRST_ONLY policy.

Parameters
execute_fnCallback to run the parser.
disambiguationResult from disambiguation strategy.
parsersArray of parser handles.
extensionsArray of extension metadata.
[out]nresults_outReceives 1 on success, 0 on failure.
Returns
Single-element result array, or NULL on failure.
See also
execute_semantic_actions()

◆ execute_semantic_actions()

ExecutionResult * execute_semantic_actions ( const ExecutionPolicyConfig config,
const struct StrategyResult disambiguation,
LimeParserHandle **  parsers,
GrammarExtensionMetadata **  extensions,
int *  nresults_out 
)

#include <include/execution_policy.h>

Execute semantic actions according to the configured policy.

The StrategyResult (from disambiguation.h) provides the list of winning contexts. The parsers and extensions arrays are parallel to the winning_contexts array.

Parameters
configExecution policy configuration.
disambiguationResult from disambiguation strategy.
parsersArray of parser handles, one per winner.
extensionsArray of extension metadata, one per winner.
[out]nresults_outReceives the number of results.
Returns
malloc'd array of ExecutionResult structs. Caller must free using execution_results_free(). Returns NULL on allocation failure (nresults_out set to 0).
See also
execution_results_free()

◆ execution_policy_config_init()

void execution_policy_config_init ( ExecutionPolicyConfig config)

#include <include/execution_policy.h>

Initialize default execution policy configuration.

Sets policy to EXEC_FIRST_ONLY with stop_on_error=true.

Parameters
configConfiguration struct to initialize.

◆ execution_policy_name()

const char * execution_policy_name ( LimeExecMode  policy)

#include <include/execution_policy.h>

Return a human-readable name for an execution policy.

Parameters
policyPolicy to name.
Returns
Static string like "first_only", "all", "chain", etc.

◆ execution_results_free()

void execution_results_free ( ExecutionResult results,
int  nresults 
)

#include <include/execution_policy.h>

Free an array of execution results.

Frees each result's error string and the array itself.

Parameters
resultsArray returned by execute_semantic_actions(). Passing NULL is safe.
nresultsNumber of entries in the array.
Note
The result->result pointers are NOT freed – ownership of semantic action outputs belongs to the caller.