let syntactic () =
  begin
    match AST_type.get () with
      | "cil" ->
        let r = !Db.Metrics.compute () in
        Metrics.result
          "@[<v 0>Syntactic metrics@ -----------------@ %a@]"
          !Db.Metrics.pretty r

      (* Cabs metrics are experimental. unregistered, unjournalized *)
      | "cabs" -> Metrics_cabs.compute_on_cabs ()

      | _ -> assert false (* the possible values are checked by the kernel*)
  end;

  SyntacticallyReachable.iter
    (fun s ->
      try let kf = Globals.Functions.find_by_name s in
          Metrics.result "%a" Metrics_coverage.pp_reached_from_function kf
      with Not_found -> Metrics.error "Unknown function %s" s
    );