Table of Contents

Struct NonterminalHandle

Namespace
Farkle.Grammars
Assembly
Farkle.dll

Points to a Nonterminal of a Grammar.

public readonly struct NonterminalHandle : IEquatable<NonterminalHandle>
Implements
Inherited Members

Remarks

This type is lightweight, storing just a number without a Grammar object and can be of use when parsing. To get any information about the nonterminal you have to pass it to the GetNonterminal(NonterminalHandle) method.

Properties

HasValue

Whether this NonterminalHandle has a valid value.

public bool HasValue { get; }

Property Value

bool
See Also

Value

Gets the nonterminal's index in the grammar.

public int Value { get; }

Property Value

int

Remarks

The first nonterminal has a value of zero.

Exceptions

InvalidOperationException

The nonterminal's HasValue property is false.

See Also

Methods

Equals(NonterminalHandle)

Indicates whether the current object is equal to another object of the same type.

public bool Equals(NonterminalHandle other)

Parameters

other NonterminalHandle

An object to compare with this object.

Returns

bool

true if the current object is equal to the other parameter; otherwise, false.

Equals(object?)

Indicates whether this instance and a specified object are equal.

public override bool Equals(object? obj)

Parameters

obj object

The object to compare with the current instance.

Returns

bool

true if obj and this instance are the same type and represent the same value; otherwise, false.

GetHashCode()

Returns the hash code for this instance.

public override int GetHashCode()

Returns

int

A 32-bit signed integer that is the hash code for this instance.

Operators

operator ==(NonterminalHandle, NonterminalHandle)

Checks if two NonterminalHandles are pointing to the same row.

public static bool operator ==(NonterminalHandle left, NonterminalHandle right)

Parameters

left NonterminalHandle

The first handle.

right NonterminalHandle

The second handle.

Returns

bool

Remarks

If left and right come from different Grammars the result is undefined.

explicit operator NonterminalHandle(EntityHandle)

public static explicit operator NonterminalHandle(EntityHandle handle)

Parameters

handle EntityHandle

The EntityHandle to cast.

Returns

NonterminalHandle

Exceptions

InvalidCastException

handle's IsNonterminal property is false.

implicit operator EntityHandle(NonterminalHandle)

Implicitly converts a NonterminalHandle to an EntityHandle.

public static implicit operator EntityHandle(NonterminalHandle handle)

Parameters

handle NonterminalHandle

The NonterminalHandle to convert.

Returns

EntityHandle

operator !=(NonterminalHandle, NonterminalHandle)

Checks if two NonterminalHandles are not pointing to the same row.

public static bool operator !=(NonterminalHandle left, NonterminalHandle right)

Parameters

left NonterminalHandle

The first handle.

right NonterminalHandle

The second handle.

Returns

bool

Remarks

If left and right come from different Grammars the result is undefined.