Table of Contents

Class ParserEngine

Namespace
Utils.Parser.Runtime
Assembly
Utils.Parser.dll

Builds a parse tree from a flat token list using the rules in a ParserDefinition. This engine is the runtime authority for token consumption, diagnostics, parse-tree construction, and final parse outcomes.

The engine is a recursive-descent parser with full backtracking. It tries each alternative in priority order and rolls back the token position plus configured parser execution state on parser attempt-boundary failure. Left-recursive rules are handled by a cycle-detection stack that returns null when the same rule is re-entered at the same token position.

Additional runtime guards stop repeated parser-state exploration and non-progressive iterations in quantifiers and left-recursive extensions. Backtracking remains active in this implementation and may be revisited in a future PR.

Semantic predicates (ValidatingPredicate, GatingPredicate) and embedded actions (EmbeddedAction) are controlled by the configured ParserRuntimeFeaturePolicy. The default policy preserves conservative behavior: semantic predicates return NotEvaluated and parser actions return NotExecuted(). Custom injected policies may reject alternatives and may execute action handlers, which can influence parse outcomes.

Scheduling and metadata components do not own parse decisions: continuation descriptors are descriptive only, shared-prefix plans are informational only, and neither metadata pipeline executes runtime continuations.

public sealed class ParserEngine
Inheritance
ParserEngine
Inherited Members
Extension Methods

Remarks

This class is not thread-safe. Each concurrent parse must use a separate ParserEngine instance.

Constructors

ParserEngine(ParserDefinition)

Initializes a parser engine with the conservative default runtime feature policy.

public ParserEngine(ParserDefinition definition)

Parameters

definition ParserDefinition

Resolved parser definition.

ParserEngine(ParserDefinition, ParserRuntimeFeaturePolicy)

Initializes a parser engine with an explicit runtime feature policy.

public ParserEngine(ParserDefinition definition, ParserRuntimeFeaturePolicy runtimeFeaturePolicy)

Parameters

definition ParserDefinition

Resolved parser definition.

runtimeFeaturePolicy ParserRuntimeFeaturePolicy

Runtime feature policy for optional parser behavior.

Methods

Parse(IEnumerable<Token>, Rule?, DiagnosticBag?)

Parses tokens starting from startRule (or the definition's root rule when null) and returns the root ParseNode. If parsing fails completely an ErrorNode is returned rather than throwing an exception.

public ParseNode Parse(IEnumerable<Token> tokens, Rule? startRule = null, DiagnosticBag? diagnostics = null)

Parameters

tokens IEnumerable<Token>

Flat list of tokens produced by LexerEngine.

startRule Rule

Override for the start rule, or null to use the definition's root.

diagnostics DiagnosticBag

Returns

ParseNode

Root parse-tree node.

Exceptions

InvalidOperationException

Thrown when no start rule is available (neither startRule nor RootRule is set).