Class ParserEngine
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
definitionParserDefinitionResolved parser definition.
ParserEngine(ParserDefinition, ParserRuntimeFeaturePolicy)
Initializes a parser engine with an explicit runtime feature policy.
public ParserEngine(ParserDefinition definition, ParserRuntimeFeaturePolicy runtimeFeaturePolicy)
Parameters
definitionParserDefinitionResolved parser definition.
runtimeFeaturePolicyParserRuntimeFeaturePolicyRuntime 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
tokensIEnumerable<Token>Flat list of tokens produced by LexerEngine.
startRuleRuleOverride for the start rule, or
nullto use the definition's root.diagnosticsDiagnosticBag
Returns
- ParseNode
Root parse-tree node.
Exceptions
- InvalidOperationException
Thrown when no start rule is available (neither
startRulenor RootRule is set).