private static Expression RecursiveDescentStep(ExpressionLexer lexer, ExprTokenType[] tokens, StepDownDelegate stepDown, CreateBinaryDelegate createBinary) { Expression expr = stepDown(lexer); while (true) { ExprTokenType?token = lexer.CheckNextToken(tokens); if (token.HasValue) { expr = createBinary(token.Value, expr, stepDown(lexer)); } else { break; } } return(expr); }
private static Expression RecursiveDescentStep(ExpressionLexer lexer, ExprTokenType[] tokens, StepDownDelegate stepDown, CreateBinaryDelegate createBinary) { Expression expr = stepDown(lexer); while (true) { ExprTokenType? token = lexer.CheckNextToken(tokens); if (token.HasValue) expr = createBinary(token.Value, expr, stepDown(lexer)); else break; } return expr; }