Class PermutationParser<TToken, T>
A permutation parser represents a collection of parsers which can be run in an order-insensitive manner.
Declaration modifiers in C# are an example of an order-insensitive grammar.
Modifiers can appear in any order: protected internal static readonly int x;
means the same as internal readonly protected static int x;.
Usage of this class involves calling Add<U>(Parser<TToken, U>) or AddOptional<U>(Parser<TToken, U>, U) to add parsers to the permutation parser, and then calling Build() to create a parser which runs them in an order-insensitive manner and returns the results in a nested tuple.
Note that the parsers that are added to the permutation parser must always consume input before succeeding. If a parser succeeds on empty input the permutation parser will not work correctly. If you want to run a parser optionally, use AddOptional<U>(Parser<TToken, U>, U).
This class is immutable.
Inheritance
- object
- PermutationParser<TToken, T>
Inherited Members
- object.GetType()
- object.ToString()
- object.Equals(object)
- object.Equals(object, object)
- object.ReferenceEquals(object, object)
- object.GetHashCode()
Declaration
public sealed class PermutationParser<TToken, T>Type Parameters
| Name | Description | 
|---|---|
| TToken | The type of the tokens in the parser's input stream. | 
| T | The type of the value returned by the parser. | 
Methods
AddOptional<U>(Parser<TToken, U>)
Adds an optional parser to the collection.
The resulting permutation parser will successfully parse a phrase even if parser never succeeds.
In that case, Nothing<T>() will be returned.
Declaration
public PermutationParser<TToken, (T, Maybe<U>)> AddOptional<U>(Parser<TToken, U> parser)Parameters
| Type | Name | Description | 
|---|---|---|
| Parser<TToken, U> | parser | The parser to add to the collection. | 
Returns
| Type | Description | 
|---|---|
| PermutationParser<TToken, (T, Maybe<U>)> | A new permutation parser representing the current collection of parsers with  | 
Type Parameters
| Name | Description | 
|---|---|
| U | The return type of the parser to add to the collection. | 
AddOptional<U>(Parser<TToken, U>, Func<U>)
Adds an optional parser to the collection.
The resulting permutation parser will successfully parse a phrase even if parser never succeeds.
In that case, defaultValueFactory will be called to get a value to return.
Declaration
public PermutationParser<TToken, (T, U)> AddOptional<U>(Parser<TToken, U> parser, Func<U> defaultValueFactory)Parameters
| Type | Name | Description | 
|---|---|---|
| Parser<TToken, U> | parser | The parser to add to the collection. | 
| Func<U> | defaultValueFactory | A factory for a default value to return if  | 
Returns
| Type | Description | 
|---|---|
| PermutationParser<TToken, (T, U)> | A new permutation parser representing the current collection of parsers with  | 
Type Parameters
| Name | Description | 
|---|---|
| U | The return type of the parser to add to the collection. | 
AddOptional<U>(Parser<TToken, U>, U)
Adds an optional parser to the collection.
The resulting permutation parser will successfully parse a phrase even if parser never succeeds.
In that case, defaultValue will be returned.
Declaration
public PermutationParser<TToken, (T, U)> AddOptional<U>(Parser<TToken, U> parser, U defaultValue)Parameters
| Type | Name | Description | 
|---|---|---|
| Parser<TToken, U> | parser | The parser to add to the collection. | 
| U | defaultValue | A default value to return if  | 
Returns
| Type | Description | 
|---|---|
| PermutationParser<TToken, (T, U)> | A new permutation parser representing the current collection of parsers with  | 
Type Parameters
| Name | Description | 
|---|---|
| U | The return type of the parser to add to the collection. | 
AddOptional<U, R>(Parser<TToken, U>, Func<T, Maybe<U>, R>)
Adds an optional parser to the collection.
The resulting permutation parser will successfully parse a phrase even if parser never succeeds.
In that case, Nothing<T>() will be returned.
Declaration
public PermutationParser<TToken, R> AddOptional<U, R>(Parser<TToken, U> parser, Func<T, Maybe<U>, R> resultSelector)Parameters
| Type | Name | Description | 
|---|---|---|
| Parser<TToken, U> | parser | The parser to add to the collection. | 
| resultSelector | A transformation function to apply to the result of the current permutation parser and the result of  | 
Returns
| Type | Description | 
|---|---|
| PermutationParser<TToken, R> | A new permutation parser representing the current collection of parsers with  | 
Type Parameters
| Name | Description | 
|---|---|
| U | The return type of the parser to add to the collection. | 
| R | The return type of the resulting permutation parser. | 
AddOptional<U, R>(Parser<TToken, U>, Func<U>, Func<T, U, R>)
Adds an optional parser to the collection.
The resulting permutation parser will successfully parse a phrase even if parser never succeeds.
In that case, defaultValueFactory will be called to get a value to return.
Declaration
public PermutationParser<TToken, R> AddOptional<U, R>(Parser<TToken, U> parser, Func<U> defaultValueFactory, Func<T, U, R> resultSelector)Parameters
| Type | Name | Description | 
|---|---|---|
| Parser<TToken, U> | parser | The parser to add to the collection. | 
| Func<U> | defaultValueFactory | A factory for a default value to return if  | 
| Func<T, U, R> | resultSelector | A transformation function to apply to the result of the current permutation parser and the result of  | 
Returns
| Type | Description | 
|---|---|
| PermutationParser<TToken, R> | A new permutation parser representing the current collection of parsers with  | 
Type Parameters
| Name | Description | 
|---|---|
| U | The return type of the parser to add to the collection. | 
| R | The return type of the resulting permutation parser. | 
AddOptional<U, R>(Parser<TToken, U>, U, Func<T, U, R>)
Adds an optional parser to the collection.
The resulting permutation parser will successfully parse a phrase even if parser never succeeds.
In that case, defaultValue will be returned.
Declaration
public PermutationParser<TToken, R> AddOptional<U, R>(Parser<TToken, U> parser, U defaultValue, Func<T, U, R> resultSelector)Parameters
| Type | Name | Description | 
|---|---|---|
| Parser<TToken, U> | parser | The parser to add to the collection. | 
| U | defaultValue | A default value to return if  | 
| Func<T, U, R> | resultSelector | A transformation function to apply to the result of the current permutation parser and the result of  | 
Returns
| Type | Description | 
|---|---|
| PermutationParser<TToken, R> | A new permutation parser representing the current collection of parsers with  | 
Type Parameters
| Name | Description | 
|---|---|
| U | The return type of the parser to add to the collection. | 
| R | The return type of the resulting permutation parser. | 
Add<U>(Parser<TToken, U>)
Adds a parser to the collection.
Declaration
public PermutationParser<TToken, (T, U)> Add<U>(Parser<TToken, U> parser)Parameters
| Type | Name | Description | 
|---|---|---|
| Parser<TToken, U> | parser | The parser to add to the collection. | 
Returns
| Type | Description | 
|---|---|
| PermutationParser<TToken, (T, U)> | A new permutation parser representing the current collection of parsers with  | 
Type Parameters
| Name | Description | 
|---|---|
| U | The return type of the parser to add to the collection. | 
Add<U, R>(Parser<TToken, U>, Func<T, U, R>)
Adds a parser to the collection.
Declaration
public PermutationParser<TToken, R> Add<U, R>(Parser<TToken, U> parser, Func<T, U, R> resultSelector)Parameters
| Type | Name | Description | 
|---|---|---|
| Parser<TToken, U> | parser | The parser to add to the collection. | 
| Func<T, U, R> | resultSelector | A transformation function to apply to the result of the current permutation parser and the result of  | 
Returns
| Type | Description | 
|---|---|
| PermutationParser<TToken, R> | A new permutation parser representing the current collection of parsers with  | 
Type Parameters
| Name | Description | 
|---|---|
| U | The return type of the parser to add to the collection. | 
| R | The return type of the resulting permutation parser. | 
Build()
Creates a Parser<TToken, T> which runs the current collection of parsers in an order-insensitive manner.
Declaration
public Parser<TToken, T> Build()Returns
| Type | Description | 
|---|---|
| Parser<TToken, T> | A Parser<TToken, T> which runs the current collection of parsers in an order-insensitive manner. |