Class Operator
Methods to create OperatorTableRow<TToken, T> values.
Namespace: Pidgin.Expression
Assembly: Pidgin.dll
Syntax
public static class Operator : object
Methods
| Improve this Doc View SourceBinary<TToken, T>(BinaryOperatorType, Parser<TToken, Func<T, T, T>>)
Creates a row in a table of operators which contains a single binary infix operator with the specified associativity. Can be combined with other OperatorTableRow<TToken, T>s using And(OperatorTableRow<TToken, T>) to build a larger row.
Declaration
public static OperatorTableRow<TToken, T> Binary<TToken, T>(BinaryOperatorType type, Parser<TToken, Func<T, T, T>> opParser)
Parameters
Type | Name | Description |
---|---|---|
BinaryOperatorType | type | The associativity of the infix operator |
Parser<TToken, Func<T, T, T>> | opParser | A parser for an infix operator |
Returns
Type | Description |
---|---|
OperatorTableRow<TToken, T> | A row in a table of operators which contains a single infix operator. |
Type Parameters
Name | Description |
---|---|
TToken | |
T |
InfixL<TToken, T>(Parser<TToken, Func<T, T, T>>)
Creates a row in a table of operators which contains a single left-associative infix operator. Can be combined with other OperatorTableRow<TToken, T>s using And(OperatorTableRow<TToken, T>) to build a larger row.
Declaration
public static OperatorTableRow<TToken, T> InfixL<TToken, T>(Parser<TToken, Func<T, T, T>> opParser)
Parameters
Type | Name | Description |
---|---|---|
Parser<TToken, Func<T, T, T>> | opParser | A parser for an infix operator |
Returns
Type | Description |
---|---|
OperatorTableRow<TToken, T> | A row in a table of operators which contains a single infix operator. |
Type Parameters
Name | Description |
---|---|
TToken | |
T |
InfixN<TToken, T>(Parser<TToken, Func<T, T, T>>)
Creates a row in a table of operators which contains a single non-associative infix operator. Can be combined with other OperatorTableRow<TToken, T>s using And(OperatorTableRow<TToken, T>) to build a larger row.
Declaration
public static OperatorTableRow<TToken, T> InfixN<TToken, T>(Parser<TToken, Func<T, T, T>> opParser)
Parameters
Type | Name | Description |
---|---|---|
Parser<TToken, Func<T, T, T>> | opParser | A parser for an infix operator |
Returns
Type | Description |
---|---|
OperatorTableRow<TToken, T> | A row in a table of operators which contains a single infix operator. |
Type Parameters
Name | Description |
---|---|
TToken | |
T |
InfixR<TToken, T>(Parser<TToken, Func<T, T, T>>)
Creates a row in a table of operators which contains a single right-associative infix operator. Can be combined with other OperatorTableRow<TToken, T>s using And(OperatorTableRow<TToken, T>) to build a larger row.
Declaration
public static OperatorTableRow<TToken, T> InfixR<TToken, T>(Parser<TToken, Func<T, T, T>> opParser)
Parameters
Type | Name | Description |
---|---|---|
Parser<TToken, Func<T, T, T>> | opParser | A parser for an infix operator |
Returns
Type | Description |
---|---|
OperatorTableRow<TToken, T> | A row in a table of operators which contains a single infix operator. |
Type Parameters
Name | Description |
---|---|
TToken | |
T |
Postfix<TToken, T>(Parser<TToken, Func<T, T>>)
Creates a row in a table of operators which contains a single postfix operator. Can be combined with other OperatorTableRow<TToken, T>s using And(OperatorTableRow<TToken, T>) to build a larger row.
Declaration
public static OperatorTableRow<TToken, T> Postfix<TToken, T>(Parser<TToken, Func<T, T>> opParser)
Parameters
Type | Name | Description |
---|---|---|
Parser<TToken, Func<T, T>> | opParser | A parser for an postfix operator |
Returns
Type | Description |
---|---|
OperatorTableRow<TToken, T> | A row in a table of operators which contains a single postfix operator. |
Type Parameters
Name | Description |
---|---|
TToken | |
T |
PostfixChainable<TToken, T>(IEnumerable<Parser<TToken, Func<T, T>>>)
Creates a row in a table of operators which contains a chainable collection of postfix operators.
By default Postfix<TToken, T>(Parser<TToken, Func<T, T>>) operators can only appear onc, so foo()()
would not be parsed as "call(call(foo))".
This method is equivalent to:
Postfix(
OneOf(opParsers)
.AtLeastOnce()
.Select<Func<T, T>>(fs => z => fs.Aggregate(z, (x, f) => f(x)))
)
Declaration
public static OperatorTableRow<TToken, T> PostfixChainable<TToken, T>(IEnumerable<Parser<TToken, Func<T, T>>> opParsers)
Parameters
Type | Name | Description |
---|---|---|
IEnumerable<Parser<TToken, Func<T, T>>> | opParsers | A collection of parsers for individual postfix operators |
Returns
Type | Description |
---|---|
OperatorTableRow<TToken, T> | A row in a table of operators which contains a chainable collection of postfix operators |
Type Parameters
Name | Description |
---|---|
TToken | |
T |
PostfixChainable<TToken, T>(Parser<TToken, Func<T, T>>[])
Creates a row in a table of operators which contains a chainable collection of postfix operators.
By default Postfix<TToken, T>(Parser<TToken, Func<T, T>>) operators can only appear onc, so foo()()
would not be parsed as "call(call(foo))".
This method is equivalent to:
Postfix(
OneOf(opParsers)
.AtLeastOnce()
.Select<Func<T, T>>(fs => z => fs.Aggregate(z, (x, f) => f(x)))
)
Declaration
public static OperatorTableRow<TToken, T> PostfixChainable<TToken, T>(params Parser<TToken, Func<T, T>>[] opParsers)
Parameters
Type | Name | Description |
---|---|---|
Parser<TToken, Func<T, T>>[] | opParsers | A collection of parsers for individual postfix operators |
Returns
Type | Description |
---|---|
OperatorTableRow<TToken, T> | A row in a table of operators which contains a chainable collection of postfix operators |
Type Parameters
Name | Description |
---|---|
TToken | |
T |
Prefix<TToken, T>(Parser<TToken, Func<T, T>>)
Creates a row in a table of operators which contains a single prefix operator. Can be combined with other OperatorTableRow<TToken, T>s using And(OperatorTableRow<TToken, T>) to build a larger row.
Declaration
public static OperatorTableRow<TToken, T> Prefix<TToken, T>(Parser<TToken, Func<T, T>> opParser)
Parameters
Type | Name | Description |
---|---|---|
Parser<TToken, Func<T, T>> | opParser | A parser for an prefix operator |
Returns
Type | Description |
---|---|
OperatorTableRow<TToken, T> | A row in a table of operators which contains a single prefix operator. |
Type Parameters
Name | Description |
---|---|
TToken | |
T |
PrefixChainable<TToken, T>(IEnumerable<Parser<TToken, Func<T, T>>>)
Creates a row in a table of operators which contains a chainable collection of prefix operators.
By default Prefix<TToken, T>(Parser<TToken, Func<T, T>>) operators can only appear onc, so - - 1
would not be parsed as "minus minus 1".
This method is equivalent to:
Prefix(
OneOf(opParsers)
.AtLeastOnce()
.Select<Func<T, T>>(fs => z => fs.AggregateR(z, (f, x) => f(x)))
)
Declaration
public static OperatorTableRow<TToken, T> PrefixChainable<TToken, T>(IEnumerable<Parser<TToken, Func<T, T>>> opParsers)
Parameters
Type | Name | Description |
---|---|---|
IEnumerable<Parser<TToken, Func<T, T>>> | opParsers | A collection of parsers for individual prefix operators |
Returns
Type | Description |
---|---|
OperatorTableRow<TToken, T> | A row in a table of operators which contains a chainable collection of prefix operators |
Type Parameters
Name | Description |
---|---|
TToken | |
T |
PrefixChainable<TToken, T>(Parser<TToken, Func<T, T>>[])
Creates a row in a table of operators which contains a chainable collection of prefix operators.
By default Prefix<TToken, T>(Parser<TToken, Func<T, T>>) operators can only appear onc, so - - 1
would not be parsed as "minus minus 1".
This method is equivalent to:
Prefix(
OneOf(opParsers)
.AtLeastOnce()
.Select<Func<T, T>>(fs => z => fs.AggregateR(z, (f, x) => f(x)))
)
Declaration
public static OperatorTableRow<TToken, T> PrefixChainable<TToken, T>(params Parser<TToken, Func<T, T>>[] opParsers)
Parameters
Type | Name | Description |
---|---|---|
Parser<TToken, Func<T, T>>[] | opParsers | A collection of parsers for individual prefix operators |
Returns
Type | Description |
---|---|
OperatorTableRow<TToken, T> | A row in a table of operators which contains a chainable collection of prefix operators |
Type Parameters
Name | Description |
---|---|
TToken | |
T |
Unary<TToken, T>(UnaryOperatorType, Parser<TToken, Func<T, T>>)
Creates a row in a table of operators which contains a single unary operator - either a prefix operator or a postfix operator. Can be combined with other OperatorTableRow<TToken, T>s using And(OperatorTableRow<TToken, T>) to build a larger row.
Declaration
public static OperatorTableRow<TToken, T> Unary<TToken, T>(UnaryOperatorType type, Parser<TToken, Func<T, T>> opParser)
Parameters
Type | Name | Description |
---|---|---|
UnaryOperatorType | type | The type of the unary operator |
Parser<TToken, Func<T, T>> | opParser | A parser for a unary operator |
Returns
Type | Description |
---|---|
OperatorTableRow<TToken, T> | A row in a table of operators which contains a single unary operator. |
Type Parameters
Name | Description |
---|---|
TToken | |
T |