Header menu logo XParsec

BindingPower Module

Binding power is used in Pratt parsing to determine the precedence and associativity of operators. Higher binding power indicates higher precedence. By convention, binding powers are odd numbers N with the next higher even number indicating the operator associativity. A left-associative operator with binding power N has left power N and right power N + 1. A right-associative operator with binding power N has left power N + 1 and right power N. A non-associative operator with binding power N has both left and right power N.

Functions and values

Function or value Description

fromLevel level

Full Usage: fromLevel level

Parameters:
    level : int

Returns: byte<MeasureProduct<bp, MeasureOne>>

Converts a raw precedence level (0-126) into a Base Binding Power (Odd Number). Level 0 -> 1, Level 1 -> 3, Level 10 -> 21.

level : int
Returns: byte<MeasureProduct<bp, MeasureOne>>

leftAssocRhs basePower

Full Usage: leftAssocRhs basePower

Parameters:
Returns: byte<MeasureProduct<bp, MeasureOne>>

Calculates the recursion power for a Left Associative operator. (LBP = N, RBP = N + 1)

basePower : byte<MeasureProduct<bp, MeasureOne>>
Returns: byte<MeasureProduct<bp, MeasureOne>>

rightAssocLhs basePower

Full Usage: rightAssocLhs basePower

Parameters:
Returns: byte<MeasureProduct<bp, MeasureOne>>

Calculates the LHS power for a Right Associative operator. (LBP = N + 1, RBP = N)

basePower : byte<MeasureProduct<bp, MeasureOne>>
Returns: byte<MeasureProduct<bp, MeasureOne>>

Type something to start searching.