/// <summary> /// Registers a postfix unary operator. /// </summary> /// <param name="operatorTokenKind">Operator token kind.</param> /// <param name="precedence">Precedence. The bigger the number the more priority in the expression the operator has.</param> /// <param name="unaryNodeBuilder">Unary node builder function.</param> public void Postfix(TokenKind operatorTokenKind, int precedence, UnaryNodeBuilder <TValue> unaryNodeBuilder) { Extend(operatorTokenKind, precedence, left => from symbol in operatorTokenKind.Lexeme() select unaryNodeBuilder(symbol, left)); }
public void Postfix(TokenKind operation, int precedence, UnaryNodeBuilder <T> createUnaryNode) { Extend(operation, precedence, left => from symbol in Token(operation) select createUnaryNode(symbol, left)); }
/// <summary> /// Registers a prefix unary operator. /// </summary> /// <param name="operatorTokenKind">Operator token kind.</param> /// <param name="precedence">Precedence. The bigger the number the more priority in the expression the operator has.</param> /// <param name="unaryNodeBuilder">Unary node builder function.</param> public void Prefix(TokenKind operatorTokenKind, int precedence, UnaryNodeBuilder <TValue> unaryNodeBuilder) { Unit(operatorTokenKind, from symbol in operatorTokenKind.Lexeme() from operand in OperandAtPrecedenceLevel(precedence) select unaryNodeBuilder(symbol, operand)); }
public void Prefix(TokenKind operation, int precedence, UnaryNodeBuilder <T> createUnaryNode) { Unit(operation, from symbol in Token(operation) from operand in OperandAtPrecedenceLevel(precedence) select createUnaryNode(symbol, operand)); }