37#ifndef DISAMBIGUATION_H
38#define DISAMBIGUATION_H
148 void *(*init)(
const struct Extension *
const *extensions,
149 uint32_t nextensions);
Conflict detection for the extension system.
StrategyResult disambiguation_resolve(DisambiguationContext *ctx, const ConflictPoint *conflict, struct ParseContext *parse_ctx)
Resolve a conflict using the configured strategy.
DisambiguationContext * disambiguation_create(LimeStrategy strategy, struct ExtensionRegistry *reg)
Create a disambiguation context using a built-in strategy.
const char * disambiguation_strategy_name(LimeStrategy strategy)
Get the name of a strategy as a string.
DisambiguationContext * disambiguation_create_custom(const DisambiguationStrategyVTable *vtable, struct ExtensionRegistry *reg)
Create a disambiguation context using a user-supplied vtable.
void disambiguation_destroy(DisambiguationContext *ctx)
Destroy a disambiguation context and free all resources.
LimeStrategy disambiguation_get_strategy(const DisambiguationContext *ctx)
Get the strategy type used by this context.
void disambiguation_update(DisambiguationContext *ctx, bool success)
Provide feedback after a parse.
struct DisambiguationContext DisambiguationContext
Opaque disambiguation context handle.
struct ExtensionRegistry ExtensionRegistry
Opaque extension registry handle.
LimeStrategy
Enumeration of available disambiguation strategies.
@ STRAT_FORK_RESOLVE
Fork parse, try each, pick survivor.
@ STRAT_PRIORITY
Resolve by extension priority metadata.
@ STRAT_LLM
Query LLM oracle for resolution advice.
@ STRAT_CUSTOM
User-provided vtable.
@ STRAT_BAYESIAN
Evidence accumulation (posterior probs)
void strategy_result_cleanup(StrategyResult *result)
Free memory owned by a StrategyResult.
void strategy_result_init(StrategyResult *result)
Initialize a StrategyResult to a safe empty state.
A specific ambiguity where multiple grammars can handle the same token in the same parser state.
Function pointer table for a disambiguation strategy implementation.
void(* destroy)(void *strategy_context)
Tear down the strategy and free all resources.
bool(* resolve)(void *strategy_context, const ConflictPoint *conflict, struct ParseContext *parse_ctx, int lookahead, StrategyResult *result)
Resolve a single conflict.
void(* update)(void *strategy_context, struct ExtensionRegistry *registry, bool success)
Provide feedback after a parse completes.
A grammar context – one possible interpretation of a token within a particular grammar/extension.
The result of a disambiguation resolution.
LimeContext * winning_contexts
Array of winners (malloc'd)
char * explanation
Human-readable reason (malloc'd, may be NULL)
int nwinners
Number of winners (usually 1)
float confidence
Confidence: 0.0 = no idea, 1.0 = certain.