Skip to content
ChartForgeX
Class

RailroadExpression

ChartForgeX.VisualBlocks

Namespace
ChartForgeX.VisualBlocks
Assembly
ChartForgeX
Modifiers
sealed

An immutable grammar expression shared by grammar frontends and the native railroad renderer.

Inheritance

  • object
  • RailroadExpression

Usage

Explore 25 API references to this type

This type appears in these public API surfaces even when no hand-authored example is attached directly to the page.

Accepted by parameters 10

Methods

public static RailroadExpression AnyCharacter() #

Creates a match for any one character.

public static RailroadExpression CharacterRange(int first, int last) #

Creates an inclusive Unicode code-point range.

Parameters

first int required
last int required
Choice 2 overloads
public static RailroadExpression Choice(IEnumerable<RailroadExpression> alternatives, bool ordered = false) #

Creates alternatives, optionally preserving ordered-choice priority.

Parameters

alternatives System.Collections.Generic.IEnumerable<ChartForgeX.VisualBlocks.RailroadExpression> required
ordered bool = false optional
public static RailroadExpression Choice(params RailroadExpression[] alternatives) #

Creates unordered alternatives.

Parameters

alternatives ChartForgeX.VisualBlocks.RailroadExpression[] required
public static RailroadExpression Empty() #

Creates an empty path.

public static RailroadExpression Except(RailroadExpression expression, RailroadExpression excluded) #

Creates a language exclusion, distinct from a consuming choice.

Parameters

expression ChartForgeX.VisualBlocks.RailroadExpression required
excluded ChartForgeX.VisualBlocks.RailroadExpression required
public static RailroadExpression Lookahead(RailroadExpression expression, bool positive = true) #

Creates a zero-width positive or negative predicate.

Parameters

expression ChartForgeX.VisualBlocks.RailroadExpression required
positive bool = true optional
public static RailroadExpression Optional(RailroadExpression expression) #

Creates an optional path.

Parameters

expression ChartForgeX.VisualBlocks.RailroadExpression required
public static RailroadExpression Reference(string ruleId) #

Creates a symbolic rule reference. Recursive references are not expanded.

Parameters

ruleId string required
public static RailroadExpression Repeat(RailroadExpression expression, int minimum, int? maximum = null) #

Creates repetition with exact inclusive bounds; null maximum means unbounded.

Parameters

expression ChartForgeX.VisualBlocks.RailroadExpression required
minimum int required
maximum int? = null optional
Sequence 2 overloads
public static RailroadExpression Sequence(IEnumerable<RailroadExpression> elements) #

Creates an ordered concatenation; an empty collection consumes no input.

Parameters

elements System.Collections.Generic.IEnumerable<ChartForgeX.VisualBlocks.RailroadExpression> required
public static RailroadExpression Sequence(params RailroadExpression[] elements) #

Creates an ordered concatenation.

Parameters

elements ChartForgeX.VisualBlocks.RailroadExpression[] required
public static RailroadExpression Special(string description) #

Creates an explicitly described special condition.

Parameters

description string required
public static RailroadExpression Terminal(string text, bool caseSensitive = true) #

Creates a literal, including an empty literal.

Parameters

text string required
caseSensitive bool = true optional

Properties

public RailroadExpressionKind Kind { get; } #

Gets the grammar operation.

public string Value { get; } #

Gets literal text, reference identity or special-condition text, according to Kind.

public IReadOnlyList<RailroadExpression> Children { get; } #

Gets children in semantic order.

public bool CaseSensitive { get; } #

Gets whether a literal comparison is case-sensitive.

public bool OrderedChoice { get; } #

Gets whether alternatives are tried in their authored order.

public int MinimumOccurrences { get; } #

Gets the minimum repeat count.

public int? MaximumOccurrences { get; } #

Gets the maximum repeat count; null means unbounded.

public int FirstCodePoint { get; } #

Gets the inclusive start of a character range.

public int LastCodePoint { get; } #

Gets the inclusive end of a character range.

public int Depth { get; } #

Gets expression nesting depth without expanding references or repeat counts.