Class Parser
Constructor functions, extension methods and utilities for Parser<TToken, T>. This class is intended to be imported statically ("using static Pidgin.Parser").
Inheritance
- object
- Parser
Inherited Members
- object.GetType()
- object.MemberwiseClone()
- object.ToString()
- object.Equals(object)
- object.Equals(object, object)
- object.ReferenceEquals(object, object)
- object.GetHashCode()
Declaration
public static class Parser
Properties
DecimalNum
A parser which parses a base-10 integer with an optional sign.
The resulting int is not checked for overflow.
Declaration
public static Parser<char, int> DecimalNum { get; }
Property Value
| Type | Description |
|---|---|
A parser which parses a base-10 integer with an optional sign. |
Digit
A parser that parses and returns a single digit character (0-9).
Declaration
public static Parser<char, char> Digit { get; }
Property Value
| Type | Description |
|---|---|
A parser that parses and returns a single digit character. |
EndOfLine
A parser that parses and returns either the literal string "\r\n" or the literal string "\n".
Declaration
public static Parser<char, string> EndOfLine { get; }
Property Value
| Type | Description |
|---|---|
HexNum
A parser which parses a base-16 (hexadecimal) integer with an optional sign.
The resulting int is not checked for overflow.
Declaration
public static Parser<char, int> HexNum { get; }
Property Value
| Type | Description |
|---|---|
A parser which parses a base-16 (hexadecimal) integer with an optional sign. |
Letter
A parser that parses and returns a single letter character.
Declaration
public static Parser<char, char> Letter { get; }
Property Value
| Type | Description |
|---|---|
LetterOrDigit
A parser that parses and returns a single letter or digit character.
Declaration
public static Parser<char, char> LetterOrDigit { get; }
Property Value
| Type | Description |
|---|---|
LongNum
A parser which parses a base-10 long integer with an optional sign.
Declaration
public static Parser<char, long> LongNum { get; }
Property Value
| Type | Description |
|---|---|
Lowercase
A parser that parses and returns a single lowercase letter character.
Declaration
public static Parser<char, char> Lowercase { get; }
Property Value
| Type | Description |
|---|---|
Num
A parser which parses a base-10 integer with an optional sign.
The resulting int is not checked for overflow.
Declaration
public static Parser<char, int> Num { get; }
Property Value
| Type | Description |
|---|---|
A parser which parses a base-10 integer with an optional sign. |
OctalNum
A parser which parses a base-8 (octal) integer with an optional sign.
The resulting int is not checked for overflow.
Declaration
public static Parser<char, int> OctalNum { get; }
Property Value
| Type | Description |
|---|---|
A parser which parses a base-8 (octal) integer with an optional sign. |
Punctuation
A parser that parses and returns a single Unicode punctuation character.
Declaration
public static Parser<char, char> Punctuation { get; }
Property Value
| Type | Description |
|---|---|
Real
A parser which parses a floating point number with an optional sign.
Declaration
public static Parser<char, double> Real { get; }
Property Value
| Type | Description |
|---|---|
Separator
A parser that parses and returns a single Unicode separator character.
Declaration
public static Parser<char, char> Separator { get; }
Property Value
| Type | Description |
|---|---|
SkipWhitespaces
A parser that discards a sequence of whitespace characters.
Declaration
public static Parser<char, Unit> SkipWhitespaces { get; }
Property Value
| Type | Description |
|---|---|
Symbol
A parser that parses and returns a single Unicode symbol character.
Declaration
public static Parser<char, char> Symbol { get; }
Property Value
| Type | Description |
|---|---|
Uppercase
A parser that parses and returns a single uppercase letter character.
Declaration
public static Parser<char, char> Uppercase { get; }
Property Value
| Type | Description |
|---|---|
Whitespace
A parser that parses and returns a single whitespace character.
Declaration
public static Parser<char, char> Whitespace { get; }
Property Value
| Type | Description |
|---|---|
WhitespaceString
A parser that parses and returns a sequence of whitespace characters packed into a string.
Declaration
public static Parser<char, string> WhitespaceString { get; }
Property Value
| Type | Description |
|---|---|
Whitespaces
A parser that parses and returns a sequence of whitespace characters.
Declaration
public static Parser<char, IEnumerable<char>> Whitespaces { get; }
Property Value
| Type | Description |
|---|---|
Methods
AnyCharExcept(params char[])
Creates a parser which parses and returns a character if it is not one of the specified characters. When the character is one of the given characters, the parser fails without consuming input.
Declaration
public static Parser<char, char> AnyCharExcept(params char[] chars)
Parameters
| Type | Name | Description |
|---|---|---|
char[] |
chars |
A sequence of characters that should not be matched. |
Returns
| Type | Description |
|---|---|
A parser which parses and returns a character that does not match one of the specified characters. |
AnyCharExcept(IEnumerable<char>)
Creates a parser which parses and returns a character if it is not one of the specified characters. When the character is one of the given characters, the parser fails without consuming input.
Declaration
public static Parser<char, char> AnyCharExcept(IEnumerable<char> chars)
Parameters
| Type | Name | Description |
|---|---|---|
chars |
A sequence of characters that should not be matched. |
Returns
| Type | Description |
|---|---|
A parser which parses and returns a character that does not match one of the specified characters. |
AtLeastOnceString<TToken>(Parser<TToken, char>)
Creates a parser which applies the current parser one or more times, packing the resulting characters into a string.
Equivalent to parser.AtLeastOnce().Select(cs => string.Concat(cs)).
Declaration
public static Parser<TToken, string> AtLeastOnceString<TToken>(this Parser<TToken, char> parser)
Parameters
| Type | Name | Description |
|---|---|---|
parser |
A parser returning a single character. |
Returns
| Type | Description |
|---|---|
A parser which applies the current parser one or more times, packing the resulting characters into a string. |
Type Parameters
| Name | Description |
|---|---|
TToken |
The type of the tokens in the parser's input stream. |
AtLeastOnceString<TToken>(Parser<TToken, string>)
Creates a parser which applies the current parser one or more times, concatenating the resulting string pieces.
Equivalent to parser.Many().Select(cs => string.Concat(cs)).
Declaration
public static Parser<TToken, string> AtLeastOnceString<TToken>(this Parser<TToken, string> parser)
Parameters
| Type | Name | Description |
|---|---|---|
parser |
A parser returning a single character. |
Returns
| Type | Description |
|---|---|
A parser which applies the current parser one or more times, concatenating the resulting string pieces. |
Type Parameters
| Name | Description |
|---|---|
TToken |
The type of the tokens in the parser's input stream. |
CIChar(char)
Creates a parser which parses and returns a single character, in a case insensitive manner. The parser returns the actual character parsed.
Declaration
public static Parser<char, char> CIChar(char character)
Parameters
| Type | Name | Description |
|---|---|---|
character |
The character to parse. |
Returns
| Type | Description |
|---|---|
A parser which parses and returns a single character. |
CIEnum<TEnum>()
Creates a parser that parses and returns one of enum values, in a case insensitive manner.
Declaration
public static Parser<char, TEnum> CIEnum<TEnum>() where TEnum : struct, Enum
Returns
| Type | Description |
|---|---|
A parser that parses and returns one of enum values. |
Type Parameters
| Name | Description |
|---|---|
TEnum |
Enum type. |
CIOneOf(params char[])
Creates a parser which parses and returns one of the specified characters, in a case insensitive manner. The parser returns the actual character parsed.
Declaration
public static Parser<char, char> CIOneOf(params char[] chars)
Parameters
| Type | Name | Description |
|---|---|---|
char[] |
chars |
A sequence of characters to choose between. |
Returns
| Type | Description |
|---|---|
A parser which parses and returns one of the specified characters, in a case insensitive manner. |
CIOneOf(IEnumerable<char>)
Creates a parser which parses and returns one of the specified characters, in a case insensitive manner. The parser returns the actual character parsed.
Declaration
public static Parser<char, char> CIOneOf(IEnumerable<char> chars)
Parameters
| Type | Name | Description |
|---|---|---|
chars |
A sequence of characters to choose between. |
Returns
| Type | Description |
|---|---|
A parser which parses and returns one of the specified characters, in a case insensitive manner. |
CIString(string)
Creates a parser that parses and returns a literal string, in a case insensitive manner. The parser returns the actual string parsed.
Declaration
public static Parser<char, string> CIString(string str)
Parameters
| Type | Name | Description |
|---|---|---|
str |
The string to parse. |
Returns
| Type | Description |
|---|---|
A parser that parses and returns a literal string, in a case insensitive manner. |
Char(char)
Creates a parser which parses and returns a single character.
Declaration
public static Parser<char, char> Char(char character)
Parameters
| Type | Name | Description |
|---|---|---|
character |
The character to parse. |
Returns
| Type | Description |
|---|---|
A parser which parses and returns a single character. |
Enum<TEnum>()
Creates a parser that parses and returns one of enum values.
Declaration
public static Parser<char, TEnum> Enum<TEnum>() where TEnum : struct, Enum
Returns
| Type | Description |
|---|---|
A parser that parses and returns one of enum values. |
Type Parameters
| Name | Description |
|---|---|
TEnum |
Enum type. |
Int(int)
A parser which parses an integer in the given base with an optional sign.
The resulting int is not checked for overflow.
Declaration
public static Parser<char, int> Int(int @base)
Parameters
| Type | Name | Description |
|---|---|---|
base |
The base in which the number is notated, between 1 and 36. |
Returns
| Type | Description |
|---|---|
A parser which parses an integer with an optional sign. |
Long(int)
Creates a parser which parses a long integer in the given base with an optional sign. The resulting long is not checked for overflow.
Declaration
public static Parser<char, long> Long(int @base)
Parameters
| Type | Name | Description |
|---|---|---|
base |
The base in which the number is notated, between 1 and 36. |
Returns
| Type | Description |
|---|---|
A parser which parses a long integer with an optional sign. |
Lookahead<TToken, T>(Parser<TToken, T>)
If parser succeeds, Lookahead(parser) backtracks,
behaving as if parser had not consumed any input.
No backtracking is performed upon failure.
Declaration
public static Parser<TToken, T> Lookahead<TToken, T>(Parser<TToken, T> parser)
Parameters
| Type | Name | Description |
|---|---|---|
Parser<TToken, T> |
parser |
The parser to look ahead with. |
Returns
| Type | Description |
|---|---|
Parser<TToken, T> |
A parser which rewinds the input stream if |
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. |
ManyString<TToken>(Parser<TToken, char>)
Creates a parser which applies the current parser zero or more times, packing the resulting characters into a string.
Equivalent to parser.Many().Select(cs => string.Concat(cs)).
Declaration
public static Parser<TToken, string> ManyString<TToken>(this Parser<TToken, char> parser)
Parameters
| Type | Name | Description |
|---|---|---|
parser |
A parser returning a single character. |
Returns
| Type | Description |
|---|---|
A parser which applies the current parser zero or more times, packing the resulting characters into a string. |
Type Parameters
| Name | Description |
|---|---|
TToken |
The type of the tokens in the parser's input stream. |
ManyString<TToken>(Parser<TToken, string>)
Creates a parser which applies the current parser zero or more times, concatenating the resulting string pieces.
Equivalent to parser.AtLeastOnce().Select(cs => string.Concat(cs)).
Declaration
public static Parser<TToken, string> ManyString<TToken>(this Parser<TToken, string> parser)
Parameters
| Type | Name | Description |
|---|---|---|
parser |
A parser returning a single character. |
Returns
| Type | Description |
|---|---|
A parser which applies the current parser zero or more times, concatenating the resulting string pieces. |
Type Parameters
| Name | Description |
|---|---|
TToken |
The type of the tokens in the parser's input stream. |
Map<TToken, T1, T2, T3, T4, T5, T6, T7, T8, R>(Func<T1, T2, T3, T4, T5, T6, T7, T8, R>, Parser<TToken, T1>, Parser<TToken, T2>, Parser<TToken, T3>, Parser<TToken, T4>, Parser<TToken, T5>, Parser<TToken, T6>, Parser<TToken, T7>, Parser<TToken, T8>)
Creates a parser that applies the specified parsers sequentially and applies the specified transformation function to their results.
Declaration
public static Parser<TToken, R> Map<TToken, T1, T2, T3, T4, T5, T6, T7, T8, R>(Func<T1, T2, T3, T4, T5, T6, T7, T8, R> func, Parser<TToken, T1> parser1, Parser<TToken, T2> parser2, Parser<TToken, T3> parser3, Parser<TToken, T4> parser4, Parser<TToken, T5> parser5, Parser<TToken, T6> parser6, Parser<TToken, T7> parser7, Parser<TToken, T8> parser8)
Parameters
| Type | Name | Description |
|---|---|---|
Func<T1, T2, T3, T4, T5, T6, T7, T8, R> |
func |
A function to apply to the return values of the specified parsers |
Parser<TToken, T1> |
parser1 |
The first parser |
Parser<TToken, T2> |
parser2 |
The second parser |
Parser<TToken, T3> |
parser3 |
The third parser |
Parser<TToken, T4> |
parser4 |
The fourth parser |
Parser<TToken, T5> |
parser5 |
The fifth parser |
Parser<TToken, T6> |
parser6 |
The sixth parser |
Parser<TToken, T7> |
parser7 |
The seventh parser |
Parser<TToken, T8> |
parser8 |
The eighth parser |
Returns
| Type | Description |
|---|---|
Parser<TToken, R> |
Type Parameters
| Name | Description |
|---|---|
TToken |
The type of tokens in the parser's input stream |
T1 |
The return type of the first parser |
T2 |
The return type of the second parser |
T3 |
The return type of the third parser |
T4 |
The return type of the fourth parser |
T5 |
The return type of the fifth parser |
T6 |
The return type of the sixth parser |
T7 |
The return type of the seventh parser |
T8 |
The return type of the eighth parser |
R |
The return type of the resulting parser |
Map<TToken, T1, R>(Func<T1, R>, Parser<TToken, T1>)
Creates a parser that applies the specified parsers sequentially and applies the specified transformation function to their results.
Declaration
public static Parser<TToken, R> Map<TToken, T1, R>(Func<T1, R> func, Parser<TToken, T1> parser1)
Parameters
| Type | Name | Description |
|---|---|---|
Func<T1, R> |
func |
A function to apply to the return values of the specified parsers |
Parser<TToken, T1> |
parser1 |
The first parser |
Returns
| Type | Description |
|---|---|
Parser<TToken, R> |
Type Parameters
| Name | Description |
|---|---|
TToken |
The type of tokens in the parser's input stream |
T1 |
The return type of the first parser |
R |
The return type of the resulting parser |
Map<TToken, T1, T2, R>(Func<T1, T2, R>, Parser<TToken, T1>, Parser<TToken, T2>)
Creates a parser that applies the specified parsers sequentially and applies the specified transformation function to their results.
Declaration
public static Parser<TToken, R> Map<TToken, T1, T2, R>(Func<T1, T2, R> func, Parser<TToken, T1> parser1, Parser<TToken, T2> parser2)
Parameters
| Type | Name | Description |
|---|---|---|
Func<T1, T2, R> |
func |
A function to apply to the return values of the specified parsers |
Parser<TToken, T1> |
parser1 |
The first parser |
Parser<TToken, T2> |
parser2 |
The second parser |
Returns
| Type | Description |
|---|---|
Parser<TToken, R> |
Type Parameters
| Name | Description |
|---|---|
TToken |
The type of tokens in the parser's input stream |
T1 |
The return type of the first parser |
T2 |
The return type of the second parser |
R |
The return type of the resulting parser |
Map<TToken, T1, T2, T3, R>(Func<T1, T2, T3, R>, Parser<TToken, T1>, Parser<TToken, T2>, Parser<TToken, T3>)
Creates a parser that applies the specified parsers sequentially and applies the specified transformation function to their results.
Declaration
public static Parser<TToken, R> Map<TToken, T1, T2, T3, R>(Func<T1, T2, T3, R> func, Parser<TToken, T1> parser1, Parser<TToken, T2> parser2, Parser<TToken, T3> parser3)
Parameters
| Type | Name | Description |
|---|---|---|
Func<T1, T2, T3, R> |
func |
A function to apply to the return values of the specified parsers |
Parser<TToken, T1> |
parser1 |
The first parser |
Parser<TToken, T2> |
parser2 |
The second parser |
Parser<TToken, T3> |
parser3 |
The third parser |
Returns
| Type | Description |
|---|---|
Parser<TToken, R> |
Type Parameters
| Name | Description |
|---|---|
TToken |
The type of tokens in the parser's input stream |
T1 |
The return type of the first parser |
T2 |
The return type of the second parser |
T3 |
The return type of the third parser |
R |
The return type of the resulting parser |
Map<TToken, T1, T2, T3, T4, R>(Func<T1, T2, T3, T4, R>, Parser<TToken, T1>, Parser<TToken, T2>, Parser<TToken, T3>, Parser<TToken, T4>)
Creates a parser that applies the specified parsers sequentially and applies the specified transformation function to their results.
Declaration
public static Parser<TToken, R> Map<TToken, T1, T2, T3, T4, R>(Func<T1, T2, T3, T4, R> func, Parser<TToken, T1> parser1, Parser<TToken, T2> parser2, Parser<TToken, T3> parser3, Parser<TToken, T4> parser4)
Parameters
| Type | Name | Description |
|---|---|---|
Func<T1, T2, T3, T4, R> |
func |
A function to apply to the return values of the specified parsers |
Parser<TToken, T1> |
parser1 |
The first parser |
Parser<TToken, T2> |
parser2 |
The second parser |
Parser<TToken, T3> |
parser3 |
The third parser |
Parser<TToken, T4> |
parser4 |
The fourth parser |
Returns
| Type | Description |
|---|---|
Parser<TToken, R> |
Type Parameters
| Name | Description |
|---|---|
TToken |
The type of tokens in the parser's input stream |
T1 |
The return type of the first parser |
T2 |
The return type of the second parser |
T3 |
The return type of the third parser |
T4 |
The return type of the fourth parser |
R |
The return type of the resulting parser |
Map<TToken, T1, T2, T3, T4, T5, R>(Func<T1, T2, T3, T4, T5, R>, Parser<TToken, T1>, Parser<TToken, T2>, Parser<TToken, T3>, Parser<TToken, T4>, Parser<TToken, T5>)
Creates a parser that applies the specified parsers sequentially and applies the specified transformation function to their results.
Declaration
public static Parser<TToken, R> Map<TToken, T1, T2, T3, T4, T5, R>(Func<T1, T2, T3, T4, T5, R> func, Parser<TToken, T1> parser1, Parser<TToken, T2> parser2, Parser<TToken, T3> parser3, Parser<TToken, T4> parser4, Parser<TToken, T5> parser5)
Parameters
| Type | Name | Description |
|---|---|---|
Func<T1, T2, T3, T4, T5, R> |
func |
A function to apply to the return values of the specified parsers |
Parser<TToken, T1> |
parser1 |
The first parser |
Parser<TToken, T2> |
parser2 |
The second parser |
Parser<TToken, T3> |
parser3 |
The third parser |
Parser<TToken, T4> |
parser4 |
The fourth parser |
Parser<TToken, T5> |
parser5 |
The fifth parser |
Returns
| Type | Description |
|---|---|
Parser<TToken, R> |
Type Parameters
| Name | Description |
|---|---|
TToken |
The type of tokens in the parser's input stream |
T1 |
The return type of the first parser |
T2 |
The return type of the second parser |
T3 |
The return type of the third parser |
T4 |
The return type of the fourth parser |
T5 |
The return type of the fifth parser |
R |
The return type of the resulting parser |
Map<TToken, T1, T2, T3, T4, T5, T6, R>(Func<T1, T2, T3, T4, T5, T6, R>, Parser<TToken, T1>, Parser<TToken, T2>, Parser<TToken, T3>, Parser<TToken, T4>, Parser<TToken, T5>, Parser<TToken, T6>)
Creates a parser that applies the specified parsers sequentially and applies the specified transformation function to their results.
Declaration
public static Parser<TToken, R> Map<TToken, T1, T2, T3, T4, T5, T6, R>(Func<T1, T2, T3, T4, T5, T6, R> func, Parser<TToken, T1> parser1, Parser<TToken, T2> parser2, Parser<TToken, T3> parser3, Parser<TToken, T4> parser4, Parser<TToken, T5> parser5, Parser<TToken, T6> parser6)
Parameters
| Type | Name | Description |
|---|---|---|
Func<T1, T2, T3, T4, T5, T6, R> |
func |
A function to apply to the return values of the specified parsers |
Parser<TToken, T1> |
parser1 |
The first parser |
Parser<TToken, T2> |
parser2 |
The second parser |
Parser<TToken, T3> |
parser3 |
The third parser |
Parser<TToken, T4> |
parser4 |
The fourth parser |
Parser<TToken, T5> |
parser5 |
The fifth parser |
Parser<TToken, T6> |
parser6 |
The sixth parser |
Returns
| Type | Description |
|---|---|
Parser<TToken, R> |
Type Parameters
| Name | Description |
|---|---|
TToken |
The type of tokens in the parser's input stream |
T1 |
The return type of the first parser |
T2 |
The return type of the second parser |
T3 |
The return type of the third parser |
T4 |
The return type of the fourth parser |
T5 |
The return type of the fifth parser |
T6 |
The return type of the sixth parser |
R |
The return type of the resulting parser |
Map<TToken, T1, T2, T3, T4, T5, T6, T7, R>(Func<T1, T2, T3, T4, T5, T6, T7, R>, Parser<TToken, T1>, Parser<TToken, T2>, Parser<TToken, T3>, Parser<TToken, T4>, Parser<TToken, T5>, Parser<TToken, T6>, Parser<TToken, T7>)
Creates a parser that applies the specified parsers sequentially and applies the specified transformation function to their results.
Declaration
public static Parser<TToken, R> Map<TToken, T1, T2, T3, T4, T5, T6, T7, R>(Func<T1, T2, T3, T4, T5, T6, T7, R> func, Parser<TToken, T1> parser1, Parser<TToken, T2> parser2, Parser<TToken, T3> parser3, Parser<TToken, T4> parser4, Parser<TToken, T5> parser5, Parser<TToken, T6> parser6, Parser<TToken, T7> parser7)
Parameters
| Type | Name | Description |
|---|---|---|
Func<T1, T2, T3, T4, T5, T6, T7, R> |
func |
A function to apply to the return values of the specified parsers |
Parser<TToken, T1> |
parser1 |
The first parser |
Parser<TToken, T2> |
parser2 |
The second parser |
Parser<TToken, T3> |
parser3 |
The third parser |
Parser<TToken, T4> |
parser4 |
The fourth parser |
Parser<TToken, T5> |
parser5 |
The fifth parser |
Parser<TToken, T6> |
parser6 |
The sixth parser |
Parser<TToken, T7> |
parser7 |
The seventh parser |
Returns
| Type | Description |
|---|---|
Parser<TToken, R> |
Type Parameters
| Name | Description |
|---|---|
TToken |
The type of tokens in the parser's input stream |
T1 |
The return type of the first parser |
T2 |
The return type of the second parser |
T3 |
The return type of the third parser |
T4 |
The return type of the fourth parser |
T5 |
The return type of the fifth parser |
T6 |
The return type of the sixth parser |
T7 |
The return type of the seventh parser |
R |
The return type of the resulting parser |
Not<TToken, T>(Parser<TToken, T>)
Creates a parser which succeeds only if the given parser fails. The resulting parser does not perform any backtracking; it consumes the same amount of input as the supplied parser. Combine this function with Try<TToken, T>(Parser<TToken, T>) if this behaviour is undesirable.
Declaration
public static Parser<TToken, Unit> Not<TToken, T>(Parser<TToken, T> parser)
Parameters
| Type | Name | Description |
|---|---|---|
Parser<TToken, T> |
parser |
The parser that is expected to fail. |
Returns
| Type | Description |
|---|---|
A parser which succeeds only if the given parser fails. |
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. |
OneOf(params char[])
Creates a parser which parses and returns one of the specified characters.
Declaration
public static Parser<char, char> OneOf(params char[] chars)
Parameters
| Type | Name | Description |
|---|---|---|
char[] |
chars |
A sequence of characters to choose between. |
Returns
| Type | Description |
|---|---|
A parser which parses and returns one of the specified characters. |
OneOf(IEnumerable<char>)
Creates a parser which parses and returns one of the specified characters.
Declaration
public static Parser<char, char> OneOf(IEnumerable<char> chars)
Parameters
| Type | Name | Description |
|---|---|---|
chars |
A sequence of characters to choose between. |
Returns
| Type | Description |
|---|---|
A parser which parses and returns one of the specified characters. |
OneOf<TToken, T>(params Parser<TToken, T>[])
Creates a parser which applies one of the specified parsers. The resulting parser fails if all of the input parsers fail without consuming input, or if one of them fails after consuming input.
Declaration
public static Parser<TToken, T> OneOf<TToken, T>(params Parser<TToken, T>[] parsers)
Parameters
| Type | Name | Description |
|---|---|---|
Parser<TToken, T>[] |
parsers |
A sequence of parsers to choose between. |
Returns
| Type | Description |
|---|---|
Parser<TToken, T> |
A parser which applies one of the specified parsers. |
Type Parameters
| Name | Description |
|---|---|
TToken |
The type of tokens in the parsers' input stream. |
T |
The return type of the parsers. |
OneOf<TToken, T>(IEnumerable<Parser<TToken, T>>)
Creates a parser which applies one of the specified parsers. The resulting parser fails if all of the input parsers fail without consuming input, or if one of them fails after consuming input. The input enumerable is enumerated and copied to a list.
Declaration
public static Parser<TToken, T> OneOf<TToken, T>(IEnumerable<Parser<TToken, T>> parsers)
Parameters
| Type | Name | Description |
|---|---|---|
IEnumerable<Parser<TToken, T>> |
parsers |
A sequence of parsers to choose between. |
Returns
| Type | Description |
|---|---|
Parser<TToken, T> |
A parser which applies one of the specified parsers. |
Type Parameters
| Name | Description |
|---|---|
TToken |
The type of tokens in the parsers' input stream. |
T |
The return type of the parsers. |
Rec<TToken, T>(Func<Parser<TToken, T>, Parser<TToken, T>>)
Creates a parser which passes itself to the supplied function and applies the resulting parser. This is the Y combinator for parsers. Rec<TToken, T>(Lazy<Parser<TToken, T>>) Rec<TToken, T>(Func<Parser<TToken, T>>)
Declaration
public static Parser<TToken, T> Rec<TToken, T>(Func<Parser<TToken, T>, Parser<TToken, T>> func)
Parameters
| Type | Name | Description |
|---|---|---|
func |
A function whose argument is a parser which behaves the same way as its result. |
Returns
| Type | Description |
|---|---|
Parser<TToken, T> |
A parser which lazily calls the supplied function and applies the resulting parser. |
Type Parameters
| Name | Description |
|---|---|
TToken |
The type of tokens in the parser's input stream. |
T |
The return type of the parser. |
Examples
This example shows how to use mutual recursion to create a parser equivalent to Many().
// many is equivalent to String("foo").Separated(Char(' '))
var many = Rec(self =>
String("foo").Then(
Char(' ').Then(self).Optional(),
(x, y) => x + y.GetValueOrDefault("")
)
);
Rec<TToken, T>(Func<Parser<TToken, T>>)
Creates a parser which lazily calls the supplied function and applies the resulting parser. This is primarily useful to allow mutual recursion in parsers. Rec<TToken, T>(Lazy<Parser<TToken, T>>) Rec<TToken, T>(Func<Parser<TToken, T>, Parser<TToken, T>>)
Declaration
public static Parser<TToken, T> Rec<TToken, T>(Func<Parser<TToken, T>> parser)
Parameters
| Type | Name | Description |
|---|---|---|
parser |
A function which returns a parser. |
Returns
| Type | Description |
|---|---|
Parser<TToken, T> |
A parser which lazily calls the supplied function and applies the resulting parser. |
Type Parameters
| Name | Description |
|---|---|
TToken |
The type of tokens in the parser's input stream. |
T |
The return type of the parser. |
Examples
This example shows how to use mutual recursion to create a parser equivalent to Many().
// many is equivalent to String("foo").Separated(Char(' '))
Parser<char, string> rest = null;
var many = String("foo").Then(Rec(() => rest).Optional(), (x, y) => x + y.GetValueOrDefault(""));
rest = Char(' ').Then(many);
Rec<TToken, T>(Lazy<Parser<TToken, T>>)
Creates a parser which lazily calls the supplied function and applies the resulting parser. This is primarily useful to allow mutual recursion in parsers. Rec<TToken, T>(Func<Parser<TToken, T>>) Rec<TToken, T>(Func<Parser<TToken, T>, Parser<TToken, T>>)
Declaration
public static Parser<TToken, T> Rec<TToken, T>(Lazy<Parser<TToken, T>> parser)
Parameters
| Type | Name | Description |
|---|---|---|
parser |
A lazy parser value. |
Returns
| Type | Description |
|---|---|
Parser<TToken, T> |
A parser which lazily applies the specified parser. |
Type Parameters
| Name | Description |
|---|---|
TToken |
The type of tokens in the parser's input stream. |
T |
The return type of the parser. |
RepeatString<TToken>(Parser<TToken, char>, int)
Creates a parser which applies parser count times,
packing the resulting chars into a string.
Equivalent to parser.Repeat(count).Select(string.Concat).
Declaration
public static Parser<TToken, string> RepeatString<TToken>(this Parser<TToken, char> parser, int count)
Parameters
| Type | Name | Description |
|---|---|---|
parser |
The parser. |
|
count |
The number of times to apply the parser. |
Returns
| Type | Description |
|---|---|
A parser which applies |
Type Parameters
| Name | Description |
|---|---|
TToken |
The type of tokens in the parser's input stream. |
Exceptions
| Type | Condition |
|---|---|
|
String(string)
Creates a parser that parses and returns a literal string.
Declaration
public static Parser<char, string> String(string str)
Parameters
| Type | Name | Description |
|---|---|---|
str |
The string to parse. |
Returns
| Type | Description |
|---|---|
A parser that parses and returns a literal string. |
Try<TToken, T>(Parser<TToken, T>)
Creates a parser which applies parser and backtracks upon failure.
Declaration
public static Parser<TToken, T> Try<TToken, T>(Parser<TToken, T> parser)
Parameters
| Type | Name | Description |
|---|---|---|
Parser<TToken, T> |
parser |
The parser. |
Returns
| Type | Description |
|---|---|
Parser<TToken, T> |
A parser which applies |
Type Parameters
| Name | Description |
|---|---|
TToken |
The type of tokens in the parser's input stream. |
T |
The return type of the parser. |
UnsignedInt(int)
A parser which parses an integer in the given base without a sign.
The resulting int is not checked for overflow.
Declaration
public static Parser<char, int> UnsignedInt(int @base)
Parameters
| Type | Name | Description |
|---|---|---|
base |
The base in which the number is notated, between 1 and 36. |
Returns
| Type | Description |
|---|---|
A parser which parses an integer without a sign. |
UnsignedLong(int)
A parser which parses a long integer in the given base without a sign. The resulting long is not checked for overflow.
Declaration
public static Parser<char, long> UnsignedLong(int @base)
Parameters
| Type | Name | Description |
|---|---|---|
base |
The base in which the number is notated, between 1 and 36. |
Returns
| Type | Description |
|---|---|
A parser which parses a long integer without a sign. |