Struct NonterminalHandle
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
- See Also
Value
Gets the nonterminal's index in the grammar.
public int Value { get; }
Property Value
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
NonterminalHandleAn object to compare with this object.
Returns
Equals(object?)
Indicates whether this instance and a specified object are equal.
public override bool Equals(object? obj)
Parameters
obj
objectThe 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
NonterminalHandleThe first handle.
right
NonterminalHandleThe second handle.
Returns
Remarks
If left
and right
come
from different Grammars the result is undefined.
explicit operator NonterminalHandle(EntityHandle)
Casts an EntityHandle to a NonterminalHandle.
public static explicit operator NonterminalHandle(EntityHandle handle)
Parameters
handle
EntityHandleThe EntityHandle to cast.
Returns
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
NonterminalHandleThe NonterminalHandle to convert.
Returns
operator !=(NonterminalHandle, NonterminalHandle)
Checks if two NonterminalHandles are not pointing to the same row.
public static bool operator !=(NonterminalHandle left, NonterminalHandle right)
Parameters
left
NonterminalHandleThe first handle.
right
NonterminalHandleThe second handle.
Returns
Remarks
If left
and right
come
from different Grammars the result is undefined.