Header menu logo XParsec

Operator Module

Provides functions to create and parse expressions using operators.

Functions and values

Function or value Description

create ops

Full Usage: create ops

Parameters:
    ops : Operator<'Op, 'Aux, 'Expr, 'T, 'State, 'Input, 'InputSlice> seq

Returns: Operators<'Op, 'Aux, 'Expr, 'T, 'State, 'Input, 'InputSlice>

Creates an `Operators` instance from a collection of operators. The returned instance can be used to parse expressions using the defined operators.

ops : Operator<'Op, 'Aux, 'Expr, 'T, 'State, 'Input, 'InputSlice> seq
Returns: Operators<'Op, 'Aux, 'Expr, 'T, 'State, 'Input, 'InputSlice>

enclosedBy op closeOp precedence parseOp parseCloseOp complete

Full Usage: enclosedBy op closeOp precedence parseOp parseCloseOp complete

Parameters:
    op : 'a
    closeOp : 'a
    precedence : Precedence
    parseOp : Parser<'a, 'b, 'c, 'd, 'e>
    parseCloseOp : Parser<'a, 'b, 'c, 'd, 'e>
    complete : 'a -> 'f -> 'a -> 'f

Returns: Operator<'a, 'g, 'f, 'b, 'c, 'd, 'e>

Creates an operator defining a pair of delimiters with the specified properties.

op : 'a
closeOp : 'a
precedence : Precedence
parseOp : Parser<'a, 'b, 'c, 'd, 'e>
parseCloseOp : Parser<'a, 'b, 'c, 'd, 'e>
complete : 'a -> 'f -> 'a -> 'f
Returns: Operator<'a, 'g, 'f, 'b, 'c, 'd, 'e>

indexer op closeOp precedence parseOp innerParser parseCloseOp complete

Full Usage: indexer op closeOp precedence parseOp innerParser parseCloseOp complete

Parameters:
    op : 'a
    closeOp : 'a
    precedence : Precedence
    parseOp : Parser<'a, 'b, 'c, 'd, 'e>
    innerParser : Parser<'f, 'b, 'c, 'd, 'e>
    parseCloseOp : Parser<'a, 'b, 'c, 'd, 'e>
    complete : 'g -> 'a -> 'f -> 'a -> 'g

Returns: Operator<'a, 'f, 'g, 'b, 'c, 'd, 'e>

Creates an indexer operator with the specified properties.

op : 'a
closeOp : 'a
precedence : Precedence
parseOp : Parser<'a, 'b, 'c, 'd, 'e>
innerParser : Parser<'f, 'b, 'c, 'd, 'e>
parseCloseOp : Parser<'a, 'b, 'c, 'd, 'e>
complete : 'g -> 'a -> 'f -> 'a -> 'g
Returns: Operator<'a, 'f, 'g, 'b, 'c, 'd, 'e>

infixLeftAssoc op precedence parseOp complete

Full Usage: infixLeftAssoc op precedence parseOp complete

Parameters:
    op : 'a
    precedence : Precedence
    parseOp : Parser<'a, 'b, 'c, 'd, 'e>
    complete : 'f -> 'a -> 'f -> 'f

Returns: Operator<'a, 'g, 'f, 'b, 'c, 'd, 'e>

Creates a left-associative infix operator with the specified properties.

op : 'a
precedence : Precedence
parseOp : Parser<'a, 'b, 'c, 'd, 'e>
complete : 'f -> 'a -> 'f -> 'f
Returns: Operator<'a, 'g, 'f, 'b, 'c, 'd, 'e>

infixMapped op precedence parseOp parseRight complete

Full Usage: infixMapped op precedence parseOp parseRight complete

Parameters:
    op : 'a
    precedence : Precedence
    parseOp : Parser<'a, 'b, 'c, 'd, 'e>
    parseRight : Parser<'f, 'b, 'c, 'd, 'e>
    complete : 'g -> 'a -> 'f -> 'g

Returns: Operator<'a, 'f, 'g, 'b, 'c, 'd, 'e>
op : 'a
precedence : Precedence
parseOp : Parser<'a, 'b, 'c, 'd, 'e>
parseRight : Parser<'f, 'b, 'c, 'd, 'e>
complete : 'g -> 'a -> 'f -> 'g
Returns: Operator<'a, 'f, 'g, 'b, 'c, 'd, 'e>

infixNary op precedence parseOp complete

Full Usage: infixNary op precedence parseOp complete

Parameters:
    op : 'a
    precedence : Precedence
    parseOp : Parser<'a, 'b, 'c, 'd, 'e>
    complete : ResizeArray<'f> -> ResizeArray<'a> -> 'f

Returns: Operator<'a, 'g, 'f, 'b, 'c, 'd, 'e>

Creates an n-ary infix operator with the specified properties. N-ary operators are similar to left-associative operators but allow chaining without ambiguity.

op : 'a
precedence : Precedence
parseOp : Parser<'a, 'b, 'c, 'd, 'e>
complete : ResizeArray<'f> -> ResizeArray<'a> -> 'f
Returns: Operator<'a, 'g, 'f, 'b, 'c, 'd, 'e>

infixNonAssoc op precedence parseOp complete

Full Usage: infixNonAssoc op precedence parseOp complete

Parameters:
    op : 'a
    precedence : Precedence
    parseOp : Parser<'a, 'b, 'c, 'd, 'e>
    complete : 'f -> 'a -> 'f -> 'f

Returns: Operator<'a, 'g, 'f, 'b, 'c, 'd, 'e>

Creates a non-associative infix operator with the specified properties.

op : 'a
precedence : Precedence
parseOp : Parser<'a, 'b, 'c, 'd, 'e>
complete : 'f -> 'a -> 'f -> 'f
Returns: Operator<'a, 'g, 'f, 'b, 'c, 'd, 'e>

infixRightAssoc op precedence parseOp complete

Full Usage: infixRightAssoc op precedence parseOp complete

Parameters:
    op : 'a
    precedence : Precedence
    parseOp : Parser<'a, 'b, 'c, 'd, 'e>
    complete : 'f -> 'a -> 'f -> 'f

Returns: Operator<'a, 'g, 'f, 'b, 'c, 'd, 'e>

Creates a right-associative infix operator with the specified properties.

op : 'a
precedence : Precedence
parseOp : Parser<'a, 'b, 'c, 'd, 'e>
complete : 'f -> 'a -> 'f -> 'f
Returns: Operator<'a, 'g, 'f, 'b, 'c, 'd, 'e>

lhsTernary op precedence parseOp delimiter parseDelimiter complete

Full Usage: lhsTernary op precedence parseOp delimiter parseDelimiter complete

Parameters:
    op : 'a
    precedence : Precedence
    parseOp : Parser<'a, 'b, 'c, 'd, 'e>
    delimiter : 'a
    parseDelimiter : Parser<'a, 'b, 'c, 'd, 'e>
    complete : 'a -> 'f -> 'a -> 'f -> 'f

Returns: Operator<'a, 'g, 'f, 'b, 'c, 'd, 'e>

Creates a left-hand side ternary operator with the specified properties.

op : 'a
precedence : Precedence
parseOp : Parser<'a, 'b, 'c, 'd, 'e>
delimiter : 'a
parseDelimiter : Parser<'a, 'b, 'c, 'd, 'e>
complete : 'a -> 'f -> 'a -> 'f -> 'f
Returns: Operator<'a, 'g, 'f, 'b, 'c, 'd, 'e>

parser pExpr operators

Full Usage: parser pExpr operators

Parameters:
    pExpr : Parser<'Expr, 'T, 'State, 'Input, 'InputSlice>
    operators : Operators<'Op, 'Aux, 'Expr, 'T, 'State, 'Input, 'InputSlice>

Returns: Parser<'Expr, 'T, 'State, 'Input, 'InputSlice>

Parses an expression using the provided expression parser and operator definitions.

pExpr : Parser<'Expr, 'T, 'State, 'Input, 'InputSlice>
operators : Operators<'Op, 'Aux, 'Expr, 'T, 'State, 'Input, 'InputSlice>
Returns: Parser<'Expr, 'T, 'State, 'Input, 'InputSlice>

parserAt minBindingPower pExpr operators

Full Usage: parserAt minBindingPower pExpr operators

Parameters:
Returns: Parser<'Expr, 'T, 'State, 'Input, 'InputSlice>

Parses an expression starting at a specific minimum precedence. Use this when parsing expressions inside delimiters (like lists or array indices) where you want to stop parsing before consuming the delimiter.

minBindingPower : byte<MeasureProduct<bp, MeasureOne>>
pExpr : Parser<'Expr, 'T, 'State, 'Input, 'InputSlice>
operators : Operators<'Op, 'Aux, 'Expr, 'T, 'State, 'Input, 'InputSlice>
Returns: Parser<'Expr, 'T, 'State, 'Input, 'InputSlice>

postfix op precedence parseOp complete

Full Usage: postfix op precedence parseOp complete

Parameters:
    op : 'a
    precedence : Precedence
    parseOp : Parser<'a, 'b, 'c, 'd, 'e>
    complete : 'f -> 'a -> 'f

Returns: Operator<'a, 'g, 'f, 'b, 'c, 'd, 'e>

Creates a postfix operator with the specified properties.

op : 'a
precedence : Precedence
parseOp : Parser<'a, 'b, 'c, 'd, 'e>
complete : 'f -> 'a -> 'f
Returns: Operator<'a, 'g, 'f, 'b, 'c, 'd, 'e>

prefix op precedence parseOp complete

Full Usage: prefix op precedence parseOp complete

Parameters:
    op : 'a
    precedence : Precedence
    parseOp : Parser<'a, 'b, 'c, 'd, 'e>
    complete : 'a -> 'f -> 'f

Returns: Operator<'a, 'g, 'f, 'b, 'c, 'd, 'e>

Creates a prefix operator with the specified properties.

op : 'a
precedence : Precedence
parseOp : Parser<'a, 'b, 'c, 'd, 'e>
complete : 'a -> 'f -> 'f
Returns: Operator<'a, 'g, 'f, 'b, 'c, 'd, 'e>

ternary op precedence parseOp parseTernaryOp complete

Full Usage: ternary op precedence parseOp parseTernaryOp complete

Parameters:
    op : 'a
    precedence : Precedence
    parseOp : Parser<'a, 'b, 'c, 'd, 'e>
    parseTernaryOp : Parser<'a, 'b, 'c, 'd, 'e>
    complete : 'f -> 'a -> 'f -> 'a -> 'f -> 'f

Returns: Operator<'a, 'g, 'f, 'b, 'c, 'd, 'e>

Creates a ternary operator with the specified properties. Ternary operators are always right associative.

op : 'a
precedence : Precedence
parseOp : Parser<'a, 'b, 'c, 'd, 'e>
parseTernaryOp : Parser<'a, 'b, 'c, 'd, 'e>
complete : 'f -> 'a -> 'f -> 'a -> 'f -> 'f
Returns: Operator<'a, 'g, 'f, 'b, 'c, 'd, 'e>

Type something to start searching.