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

Create, use, and destroy disambiguation contexts. More...

Functions

DisambiguationContextdisambiguation_create (LimeStrategy strategy, struct ExtensionRegistry *reg)
 Create a disambiguation context using a built-in strategy.
 
DisambiguationContextdisambiguation_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.
 
StrategyResult disambiguation_resolve (DisambiguationContext *ctx, const ConflictPoint *conflict, struct ParseContext *parse_ctx)
 Resolve a conflict using the configured strategy.
 
const char * disambiguation_strategy_name (LimeStrategy strategy)
 Get the name of a strategy as a string.
 
void disambiguation_update (DisambiguationContext *ctx, bool success)
 Provide feedback after a parse.
 

Detailed Description

Create, use, and destroy disambiguation contexts.

Function Documentation

◆ disambiguation_create()

DisambiguationContext * disambiguation_create ( LimeStrategy  strategy,
struct ExtensionRegistry reg 
)

#include <include/disambiguation.h>

Create a disambiguation context using a built-in strategy.

Parameters
strategyWhich strategy to use (STRAT_PRIORITY, etc.).
regThe extension registry. Must remain valid for the lifetime of the context.
Returns
New context, or NULL on failure.
See also
disambiguation_create_custom() for user-supplied strategies.
disambiguation_destroy()

◆ disambiguation_create_custom()

DisambiguationContext * disambiguation_create_custom ( const DisambiguationStrategyVTable vtable,
struct ExtensionRegistry reg 
)

#include <include/disambiguation.h>

Create a disambiguation context using a user-supplied vtable.

Parameters
vtableStrategy function pointers (copied internally).
regThe extension registry.
Returns
New context, or NULL on failure.
See also
disambiguation_create() for built-in strategies.

◆ disambiguation_destroy()

void disambiguation_destroy ( DisambiguationContext ctx)

#include <include/disambiguation.h>

Destroy a disambiguation context and free all resources.

Parameters
ctxContext to destroy. Passing NULL is safe.

◆ disambiguation_get_strategy()

LimeStrategy disambiguation_get_strategy ( const DisambiguationContext ctx)

#include <include/disambiguation.h>

Get the strategy type used by this context.

Parameters
ctxThe disambiguation context.
Returns
The LimeStrategy enum value.

◆ disambiguation_resolve()

StrategyResult disambiguation_resolve ( DisambiguationContext ctx,
const ConflictPoint conflict,
struct ParseContext parse_ctx 
)

#include <include/disambiguation.h>

Resolve a conflict using the configured strategy.

Parameters
ctxThe disambiguation context.
conflictDescription of the conflict to resolve.
parse_ctxCurrent parse context (may be NULL).
Returns
Resolution result. Caller must call strategy_result_cleanup() on the returned struct when done.

◆ disambiguation_strategy_name()

const char * disambiguation_strategy_name ( LimeStrategy  strategy)

#include <include/disambiguation.h>

Get the name of a strategy as a string.

Parameters
strategyStrategy to name.
Returns
Static string like "priority", "fork-resolve", etc.

◆ disambiguation_update()

void disambiguation_update ( DisambiguationContext ctx,
bool  success 
)

#include <include/disambiguation.h>

Provide feedback after a parse.

Notifies the strategy so learning-based strategies can update their models.

Parameters
ctxThe disambiguation context.
successTrue if the parse succeeded.