public static bool TryParseExpression(List <Token> tokens, out IExpression result) { // Number if (NumberExpression.TryParse(tokens, out NumberExpression numExpr)) { result = numExpr; return(true); } // Symbol else if (SymbolExpression.TryParse(tokens, out SymbolExpression symExpr)) { result = symExpr; return(true); } // Function definition else if (FunctionExpression.TryParse(tokens, out FunctionExpression funcExpr)) { result = funcExpr; return(true); } // Function call else if (CallExpression.TryParse(tokens, out CallExpression callExpr)) { result = callExpr; return(true); } result = null; return(false); }